From 245f2c4ea777b05aaf9b4fa1a9ed5269a06609a3 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Thu, 30 Apr 2026 04:32:11 -0700 Subject: [PATCH 01/37] feat(ai-foundry): add foundry jobs and mlflow Add the Foundry jobs TypeSpec surface, generated OpenAPI snapshots, and examples. Model training creation now submits with POST /jobs and Operation-Id idempotency, while SDK customization keeps the convenience operation under beta models. Expose job attempts, artifacts, metrics, and outputs under /jobs, including attempt-pinned views. Add MLflow tracking and registry compatibility routes under /mlflow/api/2.0/mlflow. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ai-foundry/data-plane/Foundry/client.tsp | 21 + .../v1/Jobs_BeginCancel_MaximumSet_Gen.json | 18 + .../v1/Jobs_BeginCancel_MinimumSet_Gen.json | 11 + .../v1/Jobs_BeginDelete_MaximumSet_Gen.json | 19 + .../v1/Jobs_BeginDelete_MinimumSet_Gen.json | 11 + ...Jobs_CreateTrainingJob_MaximumSet_Gen.json | 168 + ...Jobs_CreateTrainingJob_MinimumSet_Gen.json | 30 + .../examples/v1/Jobs_Get_MaximumSet_Gen.json | 97 + .../examples/v1/Jobs_Get_MinimumSet_Gen.json | 20 + .../examples/v1/Jobs_List_MaximumSet_Gen.json | 105 + .../examples/v1/Jobs_List_MinimumSet_Gen.json | 23 + .../ai-foundry/data-plane/Foundry/main.tsp | 2 + .../v1/microsoft-foundry-openapi3.json | 7441 +++++++++++++++- .../microsoft-foundry-openapi3.json | 7623 +++++++++++++++-- .../Foundry/relocate-beta-operations.tsp | 87 + .../data-plane/Foundry/src/common/models.tsp | 1 + .../data-plane/Foundry/src/jobs/models.tsp | 684 ++ .../data-plane/Foundry/src/jobs/routes.tsp | 575 ++ .../data-plane/Foundry/src/mlflow/models.tsp | 66 + .../data-plane/Foundry/src/mlflow/routes.tsp | 415 + 20 files changed, 16532 insertions(+), 885 deletions(-) create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginCancel_MaximumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginCancel_MinimumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginDelete_MaximumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginDelete_MinimumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_CreateTrainingJob_MaximumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_CreateTrainingJob_MinimumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_Get_MaximumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_Get_MinimumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_List_MaximumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_List_MinimumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp create mode 100644 specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp create mode 100644 specification/ai-foundry/data-plane/Foundry/src/mlflow/models.tsp create mode 100644 specification/ai-foundry/data-plane/Foundry/src/mlflow/routes.tsp diff --git a/specification/ai-foundry/data-plane/Foundry/client.tsp b/specification/ai-foundry/data-plane/Foundry/client.tsp index 68ca6f90c0fa..a6ede7aa6904 100644 --- a/specification/ai-foundry/data-plane/Foundry/client.tsp +++ b/specification/ai-foundry/data-plane/Foundry/client.tsp @@ -12,6 +12,7 @@ import "./src/connections/routes.tsp"; import "./src/datasets/routes.tsp"; import "./src/deployments/routes.tsp"; import "./src/indexes/routes.tsp"; +import "./src/mlflow/routes.tsp"; // Beta operations (preview routes, requiring opt-in request header) import "./src/evaluation-taxonomies/routes.tsp"; @@ -21,6 +22,7 @@ import "./src/memory-stores/routes.tsp"; import "./src/red-teams/routes.tsp"; import "./src/schedules/routes.tsp"; import "./src/toolsets/routes.tsp"; +import "./src/jobs/routes.tsp"; // Create a ".beta" subclient for the above beta operations import "./relocate-beta-operations.tsp"; @@ -236,6 +238,25 @@ using Azure.AI.Projects; // Less generic names @@clientName(Sku, "ModelDeploymentSku"); +@@clientName(Azure.AI.Projects.Jobs.get, "get", "python"); +@@clientName(Azure.AI.Projects.Jobs.list, "list", "python"); +@@clientName(Azure.AI.Projects.Jobs.createTrainingJob, + "create_training_job", + "python" +); +@@clientName(Azure.AI.Projects.Jobs.createTrainingJob, + "createTrainingJob", + "javascript" +); +@@clientName(Azure.AI.Projects.Jobs.beginDelete, + "begin_delete", + "python" +); +@@clientName(Azure.AI.Projects.Jobs.beginCancel, + "begin_cancel", + "python" +); + // -------------------------------------------------------------------------------- // To support custom client-side handling of "opt-in" to preview features. // -------------------------------------------------------------------------------- diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginCancel_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginCancel_MaximumSet_Gen.json new file mode 100644 index 000000000000..6abe5ceac72b --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginCancel_MaximumSet_Gen.json @@ -0,0 +1,18 @@ +{ + "title": "Jobs_BeginCancel_MaximumSet", + "operationId": "Jobs_BeginCancel", + "parameters": { + "api-version": "v1", + "name": "my_training_job_01", + "x-ms-client-request-id": "cf35b680-dc80-4815-ab83-9364acc3bce6", + "Foundry-Features": "Jobs=V1Preview" + }, + "responses": { + "202": { + "headers": { + "Location": "https://management.azure.com/operations/cancel-operation-id", + "Retry-After": "10" + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginCancel_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginCancel_MinimumSet_Gen.json new file mode 100644 index 000000000000..9d620fdc1f83 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginCancel_MinimumSet_Gen.json @@ -0,0 +1,11 @@ +{ + "title": "Jobs_BeginCancel_MinimumSet", + "operationId": "Jobs_BeginCancel", + "parameters": { + "api-version": "v1", + "name": "my_training_job_01" + }, + "responses": { + "200": {} + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginDelete_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginDelete_MaximumSet_Gen.json new file mode 100644 index 000000000000..9bc226e831fa --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginDelete_MaximumSet_Gen.json @@ -0,0 +1,19 @@ +{ + "title": "Jobs_BeginDelete_MaximumSet", + "operationId": "Jobs_BeginDelete", + "parameters": { + "api-version": "v1", + "name": "my_training_job_01", + "x-ms-client-request-id": "cf35b680-dc80-4815-ab83-9364acc3bce6", + "Foundry-Features": "Jobs=V1Preview" + }, + "responses": { + "202": { + "headers": { + "Location": "https://management.azure.com/operations/delete-operation-id", + "Retry-After": "10", + "x-ms-async-operation-timeout": "PT1H" + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginDelete_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginDelete_MinimumSet_Gen.json new file mode 100644 index 000000000000..7a70e68f0691 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginDelete_MinimumSet_Gen.json @@ -0,0 +1,11 @@ +{ + "title": "Jobs_BeginDelete_MinimumSet", + "operationId": "Jobs_BeginDelete", + "parameters": { + "api-version": "v1", + "name": "my_training_job_01" + }, + "responses": { + "204": {} + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_CreateTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_CreateTrainingJob_MaximumSet_Gen.json new file mode 100644 index 000000000000..0835d55a5063 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_CreateTrainingJob_MaximumSet_Gen.json @@ -0,0 +1,168 @@ +{ + "title": "Jobs_CreateTrainingJob_MaximumSet", + "operationId": "Jobs_CreateTrainingJob", + "parameters": { + "api-version": "v1", + "Operation-Id": "create-my-training-job-01", + "Foundry-Features": "Jobs=V1Preview", + "job": { + "name": "my_training_job_01", + "properties": { + "jobType": "Command", + "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", + "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", + "displayName": "My Training Job", + "description": "A sample command job for training", + "tags": { + "framework": "pytorch" + }, + "properties": { + "experimentName": "my-experiment" + }, + "codeId": "azureai:my-training-code:1", + "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster", + "inputs": { + "training_data": { + "jobInputType": "uri_folder", + "uri": "azureai://datastores/mystore/paths/data/train", + "mode": "ReadOnlyMount" + }, + "learning_rate": { + "jobInputType": "literal", + "value": "0.001" + } + }, + "outputs": { + "model": { + "jobOutputType": "uri_folder", + "mode": "ReadWriteMount", + "assetName": "my-trained-model", + "assetVersion": "1", + "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", + "baseModelId": "azureai:qwen-base-model:1", + "description": "Trained model output" + } + }, + "environmentVariables": { + "AZUREML_DATASET_FILE": "/mnt/data/train.csv" + }, + "distribution": { + "distributionType": "PyTorch", + "processCountPerInstance": 4 + }, + "resources": { + "instanceCount": 2, + "instanceType": "Standard_NC6s_v3", + "shmSize": "2g", + "dockerArgs": "--privileged" + }, + "limits": { + "jobLimitsType": "Command", + "timeout": "PT2H30M" + }, + "services": { + "Studio": { + "jobServiceType": "Studio", + "port": 8080, + "endpoint": "https://studio.example.com" + }, + "Tracking": { + "jobServiceType": "Tracking" + } + }, + "queueSettings": { + "jobTier": "Standard" + }, + "userAssignedIdentityId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", + "isArchived": false + } + } + }, + "responses": { + "201": { + "body": { + "id": "my_training_job_01", + "name": "my_training_job_01", + "type": "Microsoft.MachineLearningServices/workspaces/jobs", + "properties": { + "jobType": "Command", + "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", + "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", + "displayName": "My Training Job", + "description": "A sample command job for training", + "tags": { + "framework": "pytorch" + }, + "properties": { + "experimentName": "my-experiment" + }, + "codeId": "azureai:my-training-code:1", + "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster", + "inputs": { + "training_data": { + "jobInputType": "uri_folder", + "uri": "azureai://datastores/mystore/paths/data/train", + "mode": "ReadOnlyMount" + }, + "learning_rate": { + "jobInputType": "literal", + "value": "0.001" + } + }, + "outputs": { + "model": { + "jobOutputType": "uri_folder", + "mode": "ReadWriteMount", + "assetName": "my-trained-model", + "assetVersion": "1", + "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", + "baseModelId": "azureai:qwen-base-model:1", + "description": "Trained model output" + } + }, + "environmentVariables": { + "AZUREML_DATASET_FILE": "/mnt/data/train.csv" + }, + "distribution": { + "distributionType": "PyTorch", + "processCountPerInstance": 4 + }, + "resources": { + "instanceCount": 2, + "instanceType": "Standard_NC6s_v3", + "shmSize": "2g", + "dockerArgs": "--privileged" + }, + "limits": { + "jobLimitsType": "Command", + "timeout": "PT2H30M" + }, + "services": { + "Studio": { + "jobServiceType": "Studio", + "port": 8080, + "endpoint": "https://studio.example.com" + }, + "Tracking": { + "jobServiceType": "Tracking" + } + }, + "queueSettings": { + "jobTier": "Standard" + }, + "userAssignedIdentityId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", + "status": "NotStarted", + "isArchived": false + }, + "systemData": { + "createdAt": "2020-01-01T12:34:56.999Z", + "createdBy": "user@example.com", + "createdByType": "User", + "lastModifiedAt": "2020-01-01T12:34:56.999Z", + "lastModifiedBy": "user@example.com", + "lastModifiedByType": "User" + } + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_CreateTrainingJob_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_CreateTrainingJob_MinimumSet_Gen.json new file mode 100644 index 000000000000..1339c8e16929 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_CreateTrainingJob_MinimumSet_Gen.json @@ -0,0 +1,30 @@ +{ + "title": "Jobs_CreateTrainingJob_MinimumSet", + "operationId": "Jobs_CreateTrainingJob", + "parameters": { + "api-version": "v1", + "Operation-Id": "create-my-training-job-01", + "Foundry-Features": "Jobs=V1Preview", + "job": { + "properties": { + "jobType": "Command", + "command": "python train.py", + "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", + "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster" + } + } + }, + "responses": { + "201": { + "body": { + "name": "my_training_job_01", + "properties": { + "jobType": "Command", + "command": "python train.py", + "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", + "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster" + } + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_Get_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_Get_MaximumSet_Gen.json new file mode 100644 index 000000000000..e8eb7b22a070 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_Get_MaximumSet_Gen.json @@ -0,0 +1,97 @@ +{ + "title": "Jobs_Get_MaximumSet", + "operationId": "Jobs_Get", + "parameters": { + "api-version": "v1", + "name": "my_training_job_01", + "x-ms-client-request-id": "cf35b680-dc80-4815-ab83-9364acc3bce6", + "Foundry-Features": "Jobs=V1Preview" + }, + "responses": { + "200": { + "body": { + "id": "my_training_job_01", + "name": "my_training_job_01", + "type": "Microsoft.MachineLearningServices/workspaces/jobs", + "properties": { + "jobType": "Command", + "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", + "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", + "displayName": "My Training Job", + "description": "A sample command job for training", + "tags": { + "framework": "pytorch" + }, + "properties": { + "experimentName": "my-experiment" + }, + "codeId": "azureai:my-training-code:1", + "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster", + "inputs": { + "training_data": { + "jobInputType": "uri_folder", + "uri": "azureai://datastores/mystore/paths/data/train", + "mode": "ReadOnlyMount" + }, + "learning_rate": { + "jobInputType": "literal", + "value": "0.001" + } + }, + "outputs": { + "model": { + "jobOutputType": "uri_folder", + "mode": "ReadWriteMount", + "assetName": "my-trained-model", + "assetVersion": "1", + "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", + "baseModelId": "azureai:qwen-base-model:1", + "description": "Trained model output" + } + }, + "environmentVariables": { + "AZUREML_DATASET_FILE": "/mnt/data/train.csv" + }, + "distribution": { + "distributionType": "PyTorch", + "processCountPerInstance": 4 + }, + "resources": { + "instanceCount": 2, + "instanceType": "Standard_NC6s_v3", + "shmSize": "2g", + "dockerArgs": "--privileged" + }, + "limits": { + "jobLimitsType": "Command", + "timeout": "PT2H30M" + }, + "services": { + "Studio": { + "jobServiceType": "Studio", + "port": 8080, + "endpoint": "https://studio.example.com" + }, + "Tracking": { + "jobServiceType": "Tracking" + } + }, + "queueSettings": { + "jobTier": "Standard" + }, + "userAssignedIdentityId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", + "status": "Running", + "isArchived": false + }, + "systemData": { + "createdAt": "2020-01-01T12:34:56.999Z", + "createdBy": "user@example.com", + "createdByType": "User", + "lastModifiedAt": "2020-01-01T12:34:56.999Z", + "lastModifiedBy": "user@example.com", + "lastModifiedByType": "User" + } + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_Get_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_Get_MinimumSet_Gen.json new file mode 100644 index 000000000000..4adbae63ddba --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_Get_MinimumSet_Gen.json @@ -0,0 +1,20 @@ +{ + "title": "Jobs_Get_MinimumSet", + "operationId": "Jobs_Get", + "parameters": { + "api-version": "v1", + "name": "my_training_job_01" + }, + "responses": { + "200": { + "body": { + "name": "my_training_job_01", + "properties": { + "jobType": "Command", + "command": "python train.py", + "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest" + } + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_List_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_List_MaximumSet_Gen.json new file mode 100644 index 000000000000..7c5ca1c2f887 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_List_MaximumSet_Gen.json @@ -0,0 +1,105 @@ +{ + "title": "Jobs_List_MaximumSet", + "operationId": "Jobs_List", + "parameters": { + "api-version": "v1", + "jobType": "Command", + "tag": "framework=pytorch", + "listViewType": "ActiveOnly", + "properties": "experimentName=my-experiment", + "x-ms-client-request-id": "cf35b680-dc80-4815-ab83-9364acc3bce6", + "Foundry-Features": "Jobs=V1Preview" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "id": "my_training_job_01", + "name": "my_training_job_01", + "type": "Microsoft.MachineLearningServices/workspaces/jobs", + "properties": { + "jobType": "Command", + "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", + "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", + "displayName": "My Training Job", + "description": "A sample command job for training", + "tags": { + "framework": "pytorch" + }, + "properties": { + "experimentName": "my-experiment" + }, + "codeId": "azureai:my-training-code:1", + "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster", + "inputs": { + "training_data": { + "jobInputType": "uri_folder", + "uri": "azureai://datastores/mystore/paths/data/train", + "mode": "ReadOnlyMount" + }, + "learning_rate": { + "jobInputType": "literal", + "value": "0.001" + } + }, + "outputs": { + "model": { + "jobOutputType": "uri_folder", + "mode": "ReadWriteMount", + "assetName": "my-trained-model", + "assetVersion": "1", + "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", + "baseModelId": "azureai:qwen-base-model:1", + "description": "Trained model output" + } + }, + "environmentVariables": { + "AZUREML_DATASET_FILE": "/mnt/data/train.csv" + }, + "distribution": { + "distributionType": "PyTorch", + "processCountPerInstance": 4 + }, + "resources": { + "instanceCount": 2, + "instanceType": "Standard_NC6s_v3", + "shmSize": "2g", + "dockerArgs": "--privileged" + }, + "limits": { + "jobLimitsType": "Command", + "timeout": "PT2H30M" + }, + "services": { + "Studio": { + "jobServiceType": "Studio", + "port": 8080, + "endpoint": "https://studio.example.com" + }, + "Tracking": { + "jobServiceType": "Tracking" + } + }, + "queueSettings": { + "jobTier": "Standard" + }, + "userAssignedIdentityId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", + "status": "Running", + "isArchived": false + }, + "systemData": { + "createdAt": "2020-01-01T12:34:56.999Z", + "createdBy": "user@example.com", + "createdByType": "User", + "lastModifiedAt": "2020-01-01T12:34:56.999Z", + "lastModifiedBy": "user@example.com", + "lastModifiedByType": "User" + } + } + ], + "nextLink": "https://eastus.api.azureml.ms/jobs?api-version=v1&skip=100" + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_List_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_List_MinimumSet_Gen.json new file mode 100644 index 000000000000..94b91ba15987 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_List_MinimumSet_Gen.json @@ -0,0 +1,23 @@ +{ + "title": "Jobs_List_MinimumSet", + "operationId": "Jobs_List", + "parameters": { + "api-version": "v1" + }, + "responses": { + "200": { + "body": { + "value": [ + { + "name": "my_training_job_01", + "properties": { + "jobType": "Command", + "command": "python train.py", + "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest" + } + } + ] + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/main.tsp b/specification/ai-foundry/data-plane/Foundry/main.tsp index 2f4e65f50a6b..8e81db1e4f09 100644 --- a/specification/ai-foundry/data-plane/Foundry/main.tsp +++ b/specification/ai-foundry/data-plane/Foundry/main.tsp @@ -15,6 +15,7 @@ import "./src/indexes/routes.tsp"; import "./src/insights/routes.tsp"; import "./src/managed-blueprints/routes.tsp"; import "./src/memory-stores/routes.tsp"; +import "./src/mlflow/routes.tsp"; import "./src/openai-conversations/routes.tsp"; import "./src/openai-evaluations/routes.tsp"; import "./src/openai-finetuning/routes.tsp"; @@ -23,3 +24,4 @@ import "./src/red-teams/routes.tsp"; import "./src/schedules/routes.tsp"; import "./src/skills/routes.tsp"; import "./src/toolsets/routes.tsp"; +import "./src/jobs/routes.tsp"; diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 89e65ee5b7d7..20f4e4471557 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -5,6 +5,24 @@ "version": "v1" }, "tags": [ + { + "name": "MLflow Experiments" + }, + { + "name": "MLflow Runs" + }, + { + "name": "MLflow Metrics" + }, + { + "name": "MLflow Artifacts" + }, + { + "name": "MLflow Registered Models" + }, + { + "name": "MLflow Model Versions" + }, { "name": "Agents" }, @@ -58,6 +76,9 @@ }, { "name": "Toolsets" + }, + { + "name": "Jobs" } ], "paths": { @@ -3569,10 +3590,105 @@ ] } }, - "/memory_stores": { + "/jobs": { + "get": { + "operationId": "Jobs_list", + "description": "List Jobs.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "jobType", + "in": "query", + "required": false, + "description": "Filter by job type (e.g. 'Command').", + "schema": { + "$ref": "#/components/schemas/JobType" + }, + "explode": false + }, + { + "name": "tag", + "in": "query", + "required": false, + "description": "Filter jobs by tag in the format 'key=value' (e.g., 'framework=pytorch').", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "listViewType", + "in": "query", + "required": false, + "description": "Specifies which view type to apply when listing jobs.", + "schema": { + "$ref": "#/components/schemas/ListViewType" + }, + "explode": false + }, + { + "name": "properties", + "in": "query", + "required": false, + "description": "Comma-separated user property names and optionally values. Example: prop1,prop2=value2.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJob" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + }, "post": { - "operationId": "createMemoryStore", - "description": "Create a memory store.", + "operationId": "Jobs_createTrainingJob", + "description": "Create and execute a model training Job.", "parameters": [ { "name": "Foundry-Features", @@ -3582,10 +3698,19 @@ "schema": { "type": "string", "enum": [ - "MemoryStores=V1Preview" + "Jobs=V1Preview" ] } }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry job creation.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -3598,12 +3723,12 @@ } ], "responses": { - "200": { - "description": "The request has succeeded.", + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreObject" + "$ref": "#/components/schemas/Job" } } } @@ -3620,101 +3745,121 @@ } }, "tags": [ - "Memory Stores" + "Jobs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the memory store." - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the memory store." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the memory store." - }, - "definition": { - "allOf": [ - { - "$ref": "#/components/schemas/MemoryStoreDefinition" - } - ], - "description": "The memory store definition." - } - }, - "required": [ - "name", - "definition" - ] + "$ref": "#/components/schemas/Job" } } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] + }, + "description": "The job to create." } - }, + } + }, + "/jobs/{jobName}/artifacts": { "get": { - "operationId": "listMemoryStores", - "description": "List all memory stores.", + "operationId": "JobArtifacts_listJobArtifacts", + "description": "List artifacts for the current view of a job.", "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, { "name": "limit", "in": "query", "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "description": "Maximum number of items to return.", "schema": { "type": "integer", - "format": "int32", - "default": 20 + "format": "int32" }, "explode": false }, { - "name": "order", + "name": "skipToken", "in": "query", "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "description": "Continuation token returned by a previous list request.", "schema": { - "$ref": "#/components/schemas/PageOrder" + "type": "string" }, "explode": false }, { - "name": "after", + "name": "pathPrefix", "in": "query", "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "description": "Artifact path prefix to list.", "schema": { "type": "string" }, "explode": false }, { - "name": "before", + "name": "api-version", "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifact" + } + } + } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/artifacts/{artifactPath}:content": { + "get": { + "operationId": "JobArtifacts_downloadJobArtifact", + "description": "Download job artifact content.", + "parameters": [ { "name": "Foundry-Features", "in": "header", @@ -3723,10 +3868,28 @@ "schema": { "type": "string", "enum": [ - "MemoryStores=V1Preview" + "Jobs=V1Preview" ] } }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "artifactPath", + "in": "path", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -3741,36 +3904,84 @@ "responses": { "200": { "description": "The request has succeeded.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "default": { + "description": "An unexpected error response.", "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MemoryStoreObject" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/artifacts/{artifactPath}:contentInfo": { + "get": { + "operationId": "JobArtifacts_getJobArtifactContentInfo", + "description": "Get download information for a job artifact.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "artifactPath", + "in": "path", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifactContentInfo" } } } @@ -3787,29 +3998,173 @@ } }, "tags": [ - "Memory Stores" + "Jobs" + ] + } + }, + "/jobs/{jobName}/artifacts/{artifactPath}:metadata": { + "get": { + "operationId": "JobArtifacts_getJobArtifactMetadata", + "description": "Get metadata for a job artifact.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "artifactPath", + "in": "path", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] - } + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] } }, - "/memory_stores/{name}": { - "post": { - "operationId": "updateMemoryStore", - "description": "Update a memory store.", + "/jobs/{jobName}/attempts": { + "get": { + "operationId": "JobAttempts_listJobAttempts", + "description": "List execution attempts for a job.", "parameters": [ { - "name": "name", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", "in": "path", "required": true, - "description": "The name of the memory store to update.", + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobAttempt" + } + } } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}": { + "get": { + "operationId": "JobAttempts_getJobAttempt", + "description": "Get one execution attempt for a job.", + "parameters": [ { "name": "Foundry-Features", "in": "header", @@ -3818,10 +4173,5268 @@ "schema": { "type": "string", "enum": [ - "MemoryStores=V1Preview" + "Jobs=V1Preview" ] } - }, + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobAttempt" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/artifacts": { + "get": { + "operationId": "JobAttemptArtifacts_listJobAttemptArtifacts", + "description": "List artifacts for a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:content": { + "get": { + "operationId": "JobAttemptArtifacts_downloadJobAttemptArtifact", + "description": "Download artifact content from a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "artifactPath", + "in": "path", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:contentInfo": { + "get": { + "operationId": "JobAttemptArtifacts_getJobAttemptArtifactContentInfo", + "description": "Get download information for an artifact from a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "artifactPath", + "in": "path", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:metadata": { + "get": { + "operationId": "JobAttemptArtifacts_getJobAttemptArtifactMetadata", + "description": "Get metadata for an artifact from a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "artifactPath", + "in": "path", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/metrics": { + "get": { + "operationId": "JobAttemptMetrics_listJobAttemptMetrics", + "description": "List metrics emitted by a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetric" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}": { + "get": { + "operationId": "JobAttemptMetrics_getJobAttemptMetric", + "description": "Get the full history for a metric from a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricPoint" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates": { + "get": { + "operationId": "JobAttemptMetrics_getJobAttemptMetricAggregates", + "description": "Get aggregate metric values from a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricAggregate" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample": { + "get": { + "operationId": "JobAttemptMetrics_getJobAttemptMetricSample", + "description": "Get one sampled value or window from a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples": { + "get": { + "operationId": "JobAttemptMetrics_getJobAttemptMetricSamples", + "description": "Get sampled metric values from a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/metrics:lastValues": { + "get": { + "operationId": "JobAttemptMetrics_getJobAttemptMetricLastValues", + "description": "Get latest metric values for a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricLastValue" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/outputs": { + "get": { + "operationId": "JobAttemptOutputs_listJobAttemptOutputs", + "description": "List outputs produced by a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}": { + "get": { + "operationId": "JobAttemptOutputs_getJobAttemptOutput", + "description": "Get one output produced by a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "outputName", + "in": "path", + "required": true, + "description": "The output name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/metrics": { + "get": { + "operationId": "JobMetrics_listJobMetrics", + "description": "List metrics emitted by the current view of a job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetric" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/metrics/{metricName}": { + "get": { + "operationId": "JobMetrics_getJobMetric", + "description": "Get the full history for a job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricPoint" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/metrics/{metricName}:aggregates": { + "get": { + "operationId": "JobMetrics_getJobMetricAggregates", + "description": "Get aggregate values for a job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricAggregate" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/metrics/{metricName}:sample": { + "get": { + "operationId": "JobMetrics_getJobMetricSample", + "description": "Get one sampled value or window for a job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/metrics/{metricName}:samples": { + "get": { + "operationId": "JobMetrics_getJobMetricSamples", + "description": "Get sampled values for a job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/metrics:lastValues": { + "get": { + "operationId": "JobMetrics_getJobMetricLastValues", + "description": "Get the latest values for metrics emitted by the current view of a job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricLastValue" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/outputs": { + "get": { + "operationId": "JobOutputs_listJobOutputs", + "description": "List outputs produced by a job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/outputs/{outputName}": { + "get": { + "operationId": "JobOutputs_getJobOutput", + "description": "Get one output produced by a job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "outputName", + "in": "path", + "required": true, + "description": "The output name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{name}": { + "get": { + "operationId": "Jobs_get", + "description": "Get a Job by name.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the Job. This is case-sensitive.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Job" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + }, + "delete": { + "operationId": "Jobs_beginDelete", + "description": "Delete a Job by name. Returns 202 Accepted with a Location header to poll for completion, or 204 if the job does not exist.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the Job. This is case-sensitive.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "202": { + "description": "Response returned when a job delete operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the status of the delete operation.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "204": { + "description": "There is no content to send for this request, but the headers may be useful." + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{name}:cancel": { + "post": { + "operationId": "Jobs_beginCancel", + "description": "Cancel a Job by name. Returns 200 if cancelled immediately, or 202 Accepted with a Location header to poll for completion.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the Job. This is case-sensitive.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded." + }, + "202": { + "description": "Response returned when a job cancel operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the status of the cancel operation.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/memory_stores": { + "post": { + "operationId": "createMemoryStore", + "description": "Create a memory store.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryStoreObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the memory store." + }, + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the memory store." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the memory store." + }, + "definition": { + "allOf": [ + { + "$ref": "#/components/schemas/MemoryStoreDefinition" + } + ], + "description": "The memory store definition." + } + }, + "required": [ + "name", + "definition" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + }, + "get": { + "operationId": "listMemoryStores", + "description": "List all memory stores.", + "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MemoryStoreObject" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + } + }, + "/memory_stores/{name}": { + "post": { + "operationId": "updateMemoryStore", + "description": "Update a memory store.", + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store to update.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryStoreObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the memory store." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the memory store." + } + } + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + }, + "get": { + "operationId": "getMemoryStore", + "description": "Retrieve a memory store.", + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store to retrieve.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryStoreObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + }, + "delete": { + "operationId": "deleteMemoryStore", + "description": "Delete a memory store.", + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store to delete.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteMemoryStoreResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + } + }, + "/memory_stores/{name}/updates/{update_id}": { + "get": { + "operationId": "getUpdateResult", + "description": "Get memory store update result.", + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store.", + "schema": { + "type": "string" + } + }, + { + "name": "update_id", + "in": "path", + "required": true, + "description": "The ID of the memory update operation.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryStoreUpdateResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + } + }, + "/memory_stores/{name}:delete_scope": { + "post": { + "operationId": "deleteScopeMemories", + "description": "Delete all memories associated with a specific scope from a memory store.", + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryStoreDeleteScopeResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scope": { + "type": "string", + "description": "The namespace that logically groups and isolates memories to delete, such as a user ID." + } + }, + "required": [ + "scope" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + } + }, + "/memory_stores/{name}:search_memories": { + "post": { + "operationId": "searchMemories", + "description": "Search for relevant memories from a memory store based on conversation context.", + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store to search.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryStoreSearchResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scope": { + "type": "string", + "description": "The namespace that logically groups and isolates memories, such as a user ID." + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.InputItem" + }, + "description": "Items for which to search for relevant memories." + }, + "previous_search_id": { + "type": "string", + "description": "The unique ID of the previous search request, enabling incremental memory search from where the last operation left off." + }, + "options": { + "allOf": [ + { + "$ref": "#/components/schemas/MemorySearchOptions" + } + ], + "description": "Memory search options." + } + }, + "required": [ + "scope" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + } + }, + "/memory_stores/{name}:update_memories": { + "post": { + "operationId": "updateMemories", + "description": "Update memory store with conversation memories.", + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store to update.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryStoreUpdateResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scope": { + "type": "string", + "description": "The namespace that logically groups and isolates memories, such as a user ID." + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.InputItem" + }, + "description": "Conversation items to be stored in memory." + }, + "previous_update_id": { + "type": "string", + "description": "The unique ID of the previous update request, enabling incremental memory updates from where the last operation left off." + }, + "update_delay": { + "type": "integer", + "format": "int32", + "description": "Timeout period before processing the memory update in seconds.\nIf a new update request is received during this period, it will cancel the current request and reset the timeout.\nSet to 0 to immediately trigger the update without delay.\nDefaults to 300 (5 minutes).", + "default": 300 + } + }, + "required": [ + "scope" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + } + }, + "/mlflow/api/2.0/mlflow/artifacts/list": { + "get": { + "operationId": "Artifacts_list", + "description": "List MLflow artifacts.", + "parameters": [ + { + "name": "run_id", + "in": "query", + "required": false, + "description": "MLflow run identifier.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "run_uuid", + "in": "query", + "required": false, + "description": "MLflow run UUID.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "path", + "in": "query", + "required": false, + "description": "Artifact path to list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Artifacts" + ] + } + }, + "/mlflow/api/2.0/mlflow/experiments/create": { + "post": { + "operationId": "Experiments_create", + "description": "Create an MLflow experiment.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/delete": { + "post": { + "operationId": "Experiments_delete", + "description": "Delete an MLflow experiment.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/get": { + "get": { + "operationId": "Experiments_get", + "description": "Get an MLflow experiment by ID.", + "parameters": [ + { + "name": "experiment_id", + "in": "query", + "required": false, + "description": "MLflow experiment identifier.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "experiment_name", + "in": "query", + "required": false, + "description": "MLflow experiment name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ] + } + }, + "/mlflow/api/2.0/mlflow/experiments/get-by-name": { + "get": { + "operationId": "Experiments_getByName", + "description": "Get an MLflow experiment by name.", + "parameters": [ + { + "name": "experiment_id", + "in": "query", + "required": false, + "description": "MLflow experiment identifier.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "experiment_name", + "in": "query", + "required": false, + "description": "MLflow experiment name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ] + } + }, + "/mlflow/api/2.0/mlflow/experiments/restore": { + "post": { + "operationId": "Experiments_restore", + "description": "Restore a deleted MLflow experiment.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/search": { + "post": { + "operationId": "Experiments_search", + "description": "Search MLflow experiments.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/set-experiment-tag": { + "post": { + "operationId": "Experiments_setTag", + "description": "Set an MLflow experiment tag.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/update": { + "post": { + "operationId": "Experiments_update", + "description": "Update MLflow experiment metadata.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/metrics/get-history": { + "get": { + "operationId": "Metrics_getHistory", + "description": "Get MLflow metric history.", + "parameters": [ + { + "name": "run_id", + "in": "query", + "required": false, + "description": "MLflow run identifier.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "run_uuid", + "in": "query", + "required": false, + "description": "MLflow run UUID.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "metric_key", + "in": "query", + "required": false, + "description": "Metric key.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "max_results", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "page_token", + "in": "query", + "required": false, + "description": "Token used to retrieve the next page of metric points.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Metrics" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/create": { + "post": { + "operationId": "ModelVersions_create", + "description": "Create an MLflow model version.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/delete": { + "delete": { + "operationId": "ModelVersions_delete", + "description": "Delete an MLflow model version.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "version", + "in": "query", + "required": false, + "description": "Model version.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/delete-tag": { + "delete": { + "operationId": "ModelVersions_deleteTag", + "description": "Delete an MLflow model-version tag.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "version", + "in": "query", + "required": false, + "description": "Model version.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/get": { + "get": { + "operationId": "ModelVersions_get", + "description": "Get an MLflow model version.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "version", + "in": "query", + "required": false, + "description": "Model version.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/get-download-uri": { + "get": { + "operationId": "ModelVersions_getDownloadUri", + "description": "Get an MLflow model version download URI.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "version", + "in": "query", + "required": false, + "description": "Model version.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/get-storage-location-uri": { + "post": { + "operationId": "ModelVersions_getStorageLocationUri", + "description": "Get an MLflow model version storage location URI.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/search": { + "get": { + "operationId": "ModelVersions_search", + "description": "Search MLflow model versions.", + "parameters": [ + { + "name": "max_results", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "page_token", + "in": "query", + "required": false, + "description": "Token used to retrieve the next page of results.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/set-tag": { + "post": { + "operationId": "ModelVersions_setTag", + "description": "Set an MLflow model-version tag.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/transition-stage": { + "post": { + "operationId": "ModelVersions_transitionStage", + "description": "Transition an MLflow model version stage.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/update": { + "patch": { + "operationId": "ModelVersions_update", + "description": "Update an MLflow model version.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/registered-models/create": { + "post": { + "operationId": "RegisteredModels_create", + "description": "Create an MLflow registered model.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/registered-models/delete": { + "delete": { + "operationId": "RegisteredModels_delete", + "description": "Delete an MLflow registered model.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/delete-tag": { + "delete": { + "operationId": "RegisteredModels_deleteTag", + "description": "Delete an MLflow registered-model tag.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/get": { + "get": { + "operationId": "RegisteredModels_get", + "description": "Get an MLflow registered model.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/get-latest-versions": { + "get": { + "operationId": "RegisteredModels_getLatestVersions", + "description": "Get latest versions for an MLflow registered model.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/list": { + "get": { + "operationId": "RegisteredModels_list", + "description": "List MLflow registered models.", + "parameters": [ + { + "name": "max_results", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "page_token", + "in": "query", + "required": false, + "description": "Token used to retrieve the next page of results.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/rename": { + "post": { + "operationId": "RegisteredModels_rename", + "description": "Rename an MLflow registered model.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/registered-models/search": { + "get": { + "operationId": "RegisteredModels_search", + "description": "Search MLflow registered models.", + "parameters": [ + { + "name": "max_results", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "page_token", + "in": "query", + "required": false, + "description": "Token used to retrieve the next page of results.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/set-tag": { + "post": { + "operationId": "RegisteredModels_setTag", + "description": "Set an MLflow registered-model tag.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/registered-models/update": { + "patch": { + "operationId": "RegisteredModels_update", + "description": "Update an MLflow registered model.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/create": { + "post": { + "operationId": "Runs_create", + "description": "Create an MLflow run.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/delete": { + "post": { + "operationId": "Runs_delete", + "description": "Delete an MLflow run.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/delete-tag": { + "post": { + "operationId": "Runs_deleteTag", + "description": "Delete an MLflow run tag.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/get": { + "get": { + "operationId": "Runs_get", + "description": "Get an MLflow run.", + "parameters": [ + { + "name": "run_id", + "in": "query", + "required": false, + "description": "MLflow run identifier.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "run_uuid", + "in": "query", + "required": false, + "description": "MLflow run UUID.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Runs" + ] + } + }, + "/mlflow/api/2.0/mlflow/runs/log-batch": { + "post": { + "operationId": "Runs_logBatch", + "description": "Log a batch of metrics, parameters, and tags to an MLflow run.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/log-inputs": { + "post": { + "operationId": "Runs_logInputs", + "description": "Log MLflow run input relationships.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/log-metric": { + "post": { + "operationId": "Runs_logMetric", + "description": "Log one metric to an MLflow run.", + "parameters": [ { "name": "api-version", "in": "query", @@ -3839,7 +9452,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreObject" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -3856,63 +9469,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the memory store." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the memory store." - } - } + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } - }, - "get": { - "operationId": "getMemoryStore", - "description": "Retrieve a memory store.", + } + }, + "/mlflow/api/2.0/mlflow/runs/log-model": { + "post": { + "operationId": "Runs_logModel", + "description": "Log MLflow model metadata.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to retrieve.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -3930,7 +9505,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreObject" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -3947,39 +9522,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } } - }, - "delete": { - "operationId": "deleteMemoryStore", - "description": "Delete a memory store.", + } + }, + "/mlflow/api/2.0/mlflow/runs/log-parameter": { + "post": { + "operationId": "Runs_logParameter", + "description": "Log one parameter to an MLflow run.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to delete.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -3997,7 +9558,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteMemoryStoreResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4014,50 +9575,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } } } }, - "/memory_stores/{name}/updates/{update_id}": { - "get": { - "operationId": "getUpdateResult", - "description": "Get memory store update result.", + "/mlflow/api/2.0/mlflow/runs/restore": { + "post": { + "operationId": "Runs_restore", + "description": "Restore a deleted MLflow run.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store.", - "schema": { - "type": "string" - } - }, - { - "name": "update_id", - "in": "path", - "required": true, - "description": "The ID of the memory update operation.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -4075,7 +9611,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreUpdateResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4092,41 +9628,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } } } }, - "/memory_stores/{name}:delete_scope": { + "/mlflow/api/2.0/mlflow/runs/search": { "post": { - "operationId": "deleteScopeMemories", - "description": "Delete all memories associated with a specific scope from a memory store.", + "operationId": "Runs_search", + "description": "Search MLflow runs.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -4144,7 +9664,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreDeleteScopeResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4161,60 +9681,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "scope": { - "type": "string", - "description": "The namespace that logically groups and isolates memories to delete, such as a user ID." - } - }, - "required": [ - "scope" - ] + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } } }, - "/memory_stores/{name}:search_memories": { + "/mlflow/api/2.0/mlflow/runs/set-tag": { "post": { - "operationId": "searchMemories", - "description": "Search for relevant memories from a memory store based on conversation context.", + "operationId": "Runs_setTag", + "description": "Set an MLflow run tag.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to search.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -4232,7 +9717,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreSearchResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4249,79 +9734,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "scope": { - "type": "string", - "description": "The namespace that logically groups and isolates memories, such as a user ID." - }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.InputItem" - }, - "description": "Items for which to search for relevant memories." - }, - "previous_search_id": { - "type": "string", - "description": "The unique ID of the previous search request, enabling incremental memory search from where the last operation left off." - }, - "options": { - "allOf": [ - { - "$ref": "#/components/schemas/MemorySearchOptions" - } - ], - "description": "Memory search options." - } - }, - "required": [ - "scope" - ] + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } } }, - "/memory_stores/{name}:update_memories": { + "/mlflow/api/2.0/mlflow/runs/update": { "post": { - "operationId": "updateMemories", - "description": "Update memory store with conversation memories.", + "operationId": "Runs_update", + "description": "Update MLflow run metadata or status.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to update.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -4334,22 +9765,12 @@ } ], "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, + "200": { + "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreUpdateResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4366,48 +9787,17 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "scope": { - "type": "string", - "description": "The namespace that logically groups and isolates memories, such as a user ID." - }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.InputItem" - }, - "description": "Conversation items to be stored in memory." - }, - "previous_update_id": { - "type": "string", - "description": "The unique ID of the previous update request, enabling incremental memory updates from where the last operation left off." - }, - "update_delay": { - "type": "integer", - "format": "int32", - "description": "Timeout period before processing the memory update in seconds.\nIf a new update request is received during this period, it will cancel the current request and reset the timeout.\nSet to 0 to immediately trigger the update without delay.\nDefaults to 300 (5 minutes).", - "default": 300 - } - }, - "required": [ - "scope" - ] + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } } }, @@ -9426,6 +14816,27 @@ ], "description": "Agentic identity credential definition" }, + "AllNodes": { + "type": "object", + "required": [ + "nodesValueType" + ], + "properties": { + "nodesValueType": { + "type": "string", + "enum": [ + "All" + ], + "description": "Type of the Nodes value." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/NodeCollection" + } + ], + "description": "All nodes means the service will be running on all of the nodes of the job." + }, "ApiErrorResponse": { "type": "object", "required": [ @@ -9486,6 +14897,23 @@ "type": "string", "description": "Identifier of a saved asset." }, + "AssetTypes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "uri_file", + "uri_folder", + "safetensors_model", + "literal" + ] + } + ], + "description": "Type of job input/output asset." + }, "AttackStrategy": { "anyOf": [ { @@ -11535,6 +16963,163 @@ ], "description": "Code-based evaluator definition using python code" }, + "CommandJob": { + "type": "object", + "required": [ + "jobType", + "command", + "environmentImageReference", + "computeId" + ], + "properties": { + "jobType": { + "type": "string", + "enum": [ + "Command" + ], + "description": "Job type." + }, + "command": { + "type": "string", + "description": "The command to execute on startup of the job." + }, + "environmentImageReference": { + "type": "string", + "description": "ACR path of environment." + }, + "displayName": { + "type": "string", + "description": "Display name of job." + }, + "description": { + "type": "string", + "description": "The asset description text." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The asset property dictionary." + }, + "codeId": { + "type": "string", + "description": "Code asset reference." + }, + "computeId": { + "type": "string", + "description": "Compute resource ID." + }, + "inputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Input" + }, + "description": "Mapping of input data bindings used in the job." + }, + "outputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Output" + }, + "description": "Mapping of output data bindings used in the job." + }, + "environmentVariables": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Environment variables included in the job." + }, + "resources": { + "allOf": [ + { + "$ref": "#/components/schemas/JobResourceConfiguration" + } + ], + "description": "Compute Resource configuration for the job." + }, + "distribution": { + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + }, + "limits": { + "allOf": [ + { + "$ref": "#/components/schemas/CommandJobLimits" + } + ], + "description": "Command Job limit." + }, + "services": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JobService" + }, + "description": "List of job services.", + "readOnly": true + }, + "queueSettings": { + "allOf": [ + { + "$ref": "#/components/schemas/QueueSettings" + } + ], + "description": "Queue settings for the job." + }, + "userAssignedIdentityId": { + "type": "string", + "description": "user-assigned managed identity" + }, + "isArchived": { + "type": "boolean", + "description": "Is the asset archived?" + }, + "status": { + "type": "string", + "description": "Status of the job.", + "readOnly": true + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/JobProperties" + } + ], + "description": "Properties of a Command Job." + }, + "CommandJobLimits": { + "type": "object", + "required": [ + "jobLimitsType" + ], + "properties": { + "jobLimitsType": { + "type": "string", + "enum": [ + "Command" + ], + "description": "JobLimit type." + }, + "timeout": { + "type": "string", + "format": "duration", + "description": "The max run duration in ISO 8601 format, after which the job will be cancelled. Only supports duration with precision as low as Seconds." + } + }, + "description": "Command Job limit class." + }, "CompletionMessageToolCallChunk": { "type": "object", "required": [ @@ -12557,6 +18142,27 @@ } ] }, + "DistributionConfiguration": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "description": "Specifies the type of distribution framework." + } + }, + "discriminator": { + "propertyName": "distributionType", + "mapping": { + "PyTorch": "#/components/schemas/PyTorchDistribution", + "Mpi": "#/components/schemas/MpiDistribution", + "TensorFlow": "#/components/schemas/TensorFlowDistribution" + } + }, + "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + }, "EntraIDCredentials": { "type": "object", "required": [ @@ -14611,6 +20217,57 @@ }, "description": "Index resource Definition" }, + "Input": { + "type": "object", + "required": [ + "jobInputType" + ], + "properties": { + "jobInputType": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypes" + } + ], + "description": "Specifies the type of job input." + }, + "uri": { + "type": "string", + "description": "Input Asset URI. Required for uri_file, uri_folder, and safetensors_model types." + }, + "mode": { + "allOf": [ + { + "$ref": "#/components/schemas/InputOutputModes" + } + ], + "description": "Input Asset Delivery Mode. Applies to uri-based inputs." + }, + "value": { + "type": "string", + "description": "Literal value. Required for literal type." + } + }, + "description": "Job input definition." + }, + "InputOutputModes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "ReadOnlyMount", + "ReadWriteMount", + "Download", + "Direct", + "Upload" + ] + } + ], + "description": "Enum to determine the input/output data delivery mode." + }, "Insight": { "type": "object", "required": [ @@ -14972,6 +20629,625 @@ ], "description": "The types of parameters for red team item generation." }, + "Job": { + "type": "object", + "required": [ + "name", + "properties" + ], + "properties": { + "name": { + "type": "string", + "description": "The name of the Job. This is case-sensitive.", + "readOnly": true + }, + "id": { + "type": "string", + "description": "The resource ID.", + "readOnly": true + }, + "type": { + "type": "string", + "description": "The resource type.", + "readOnly": true + }, + "properties": { + "allOf": [ + { + "$ref": "#/components/schemas/JobProperties" + } + ], + "description": "Properties of the job." + }, + "systemData": { + "allOf": [ + { + "$ref": "#/components/schemas/SystemData" + } + ], + "description": "Metadata pertaining to creation and last modification of the resource.", + "readOnly": true + } + }, + "description": "Job resource." + }, + "JobArtifact": { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "type": "string", + "description": "Artifact path relative to the job artifact root.", + "readOnly": true + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/JobArtifactType" + } + ], + "description": "Artifact type.", + "readOnly": true + }, + "size": { + "type": "integer", + "format": "int64", + "description": "Artifact size in bytes.", + "readOnly": true + }, + "createdTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the artifact was created.", + "readOnly": true + }, + "updatedTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the artifact was last updated.", + "readOnly": true + }, + "origin": { + "type": "string", + "description": "Service origin of the artifact.", + "readOnly": true + }, + "container": { + "type": "string", + "description": "Diagnostic storage container identifier resolved by the service.", + "readOnly": true + } + }, + "description": "Metadata for an artifact produced by or attached to a job." + }, + "JobArtifactContentInfo": { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "type": "string", + "description": "Artifact path relative to the job artifact root.", + "readOnly": true + }, + "contentUri": { + "type": "string", + "format": "uri", + "description": "Download URI for the artifact content.", + "readOnly": true + }, + "contentType": { + "type": "string", + "description": "MIME type of the content.", + "readOnly": true + }, + "expiresAtUtc": { + "type": "string", + "format": "date-time", + "description": "Time the content URI expires.", + "readOnly": true + } + }, + "description": "Content access information for a job artifact." + }, + "JobArtifactType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "File", + "Directory" + ] + } + ], + "description": "Type of a job artifact." + }, + "JobAttempt": { + "type": "object", + "required": [ + "id", + "jobName" + ], + "properties": { + "id": { + "type": "string", + "description": "The attempt identifier.", + "readOnly": true + }, + "jobName": { + "type": "string", + "description": "The job name this attempt belongs to.", + "readOnly": true + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/JobAttemptStatus" + } + ], + "description": "The attempt status.", + "readOnly": true + }, + "statusReason": { + "type": "string", + "description": "Additional status reason.", + "readOnly": true + }, + "startTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the attempt started.", + "readOnly": true + }, + "endTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the attempt ended.", + "readOnly": true + }, + "lastStartTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Most recent time the attempt started running.", + "readOnly": true + }, + "computeDuration": { + "type": "string", + "format": "duration", + "description": "Total compute duration consumed by the attempt.", + "readOnly": true + }, + "queueingInfo": { + "type": "object", + "additionalProperties": {}, + "description": "Queueing details associated with the attempt.", + "readOnly": true + }, + "computeDetails": { + "type": "object", + "additionalProperties": {}, + "description": "Compute details associated with the attempt.", + "readOnly": true + }, + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/JobAttemptError" + } + ], + "description": "Terminal error for the attempt, if any.", + "readOnly": true + }, + "warnings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobAttemptWarning" + }, + "description": "Warnings emitted for the attempt.", + "readOnly": true + }, + "isCurrent": { + "type": "boolean", + "description": "Whether this attempt is the current attempt for the job.", + "readOnly": true + } + }, + "description": "One execution attempt of a job." + }, + "JobAttemptError": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable error code." + }, + "message": { + "type": "string", + "description": "Human-readable error message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional error details." + } + }, + "description": "Error emitted during a job attempt." + }, + "JobAttemptStatus": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Queued", + "Running", + "Completed", + "Failed", + "Canceled" + ] + } + ], + "description": "Status of a job execution attempt." + }, + "JobAttemptWarning": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable warning code." + }, + "message": { + "type": "string", + "description": "Human-readable warning message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional warning details." + } + }, + "description": "Warning emitted during a job attempt." + }, + "JobMetric": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Metric name.", + "readOnly": true + }, + "metricType": { + "allOf": [ + { + "$ref": "#/components/schemas/JobMetricType" + } + ], + "description": "Metric type.", + "readOnly": true + }, + "columns": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Column metadata for structured metric values.", + "readOnly": true + } + }, + "description": "Metadata for a metric emitted by a job or attempt." + }, + "JobMetricAggregate": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Metric name.", + "readOnly": true + }, + "startUtc": { + "type": "string", + "format": "date-time", + "description": "Aggregate window start.", + "readOnly": true + }, + "endUtc": { + "type": "string", + "format": "date-time", + "description": "Aggregate window end.", + "readOnly": true + }, + "values": { + "type": "object", + "additionalProperties": {}, + "description": "Aggregate values.", + "readOnly": true + } + }, + "description": "Aggregated values for a metric." + }, + "JobMetricLastValue": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Metric name.", + "readOnly": true + }, + "value": { + "allOf": [ + { + "$ref": "#/components/schemas/JobMetricPoint" + } + ], + "description": "Latest metric point.", + "readOnly": true + } + }, + "description": "Latest value for a metric." + }, + "JobMetricPoint": { + "type": "object", + "properties": { + "metricId": { + "type": "string", + "description": "Metric identifier.", + "readOnly": true + }, + "step": { + "type": "integer", + "format": "int64", + "description": "Metric step.", + "readOnly": true + }, + "createdUtc": { + "type": "string", + "format": "date-time", + "description": "Time the metric point was created.", + "readOnly": true + }, + "data": { + "type": "object", + "additionalProperties": {}, + "description": "Metric data values.", + "readOnly": true + } + }, + "description": "A metric data point." + }, + "JobMetricSample": { + "type": "object", + "required": [ + "name", + "points" + ], + "properties": { + "name": { + "type": "string", + "description": "Metric name.", + "readOnly": true + }, + "points": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricPoint" + }, + "description": "Sampled metric points.", + "readOnly": true + } + }, + "description": "Sampled values for a metric." + }, + "JobMetricType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Scalar", + "Table", + "Image" + ] + } + ], + "description": "The kind of metric emitted by a job." + }, + "JobOutputReference": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Output name.", + "readOnly": true + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypes" + } + ], + "description": "Output asset type.", + "readOnly": true + }, + "mode": { + "allOf": [ + { + "$ref": "#/components/schemas/InputOutputModes" + } + ], + "description": "Output delivery mode.", + "readOnly": true + }, + "uri": { + "type": "string", + "description": "Output storage URI.", + "readOnly": true + }, + "assetName": { + "type": "string", + "description": "Registered asset name, if the output produced an asset.", + "readOnly": true + }, + "assetVersion": { + "type": "string", + "description": "Registered asset version, if the output produced an asset.", + "readOnly": true + }, + "baseModelId": { + "type": "string", + "description": "Base model ID for model outputs.", + "readOnly": true + }, + "description": { + "type": "string", + "description": "Output description.", + "readOnly": true + } + }, + "description": "Named output produced by a job." + }, + "JobProperties": { + "type": "object", + "required": [ + "jobType" + ], + "properties": { + "jobType": { + "type": "string", + "description": "Job type." + } + }, + "discriminator": { + "propertyName": "jobType", + "mapping": { + "Command": "#/components/schemas/CommandJob" + } + }, + "description": "Base properties of a Job." + }, + "JobResourceConfiguration": { + "type": "object", + "properties": { + "instanceCount": { + "type": "integer", + "format": "int32", + "description": "Optional number of instances or nodes used by the compute target." + }, + "instanceType": { + "type": "string", + "description": "Optional type of VM used as supported by the compute target." + }, + "properties": { + "type": "object", + "additionalProperties": {}, + "description": "Additional properties bag." + }, + "shmSize": { + "type": "string", + "description": "Size of the docker container's shared memory block. This should be in the format of (number)(unit) where number as to be greater than 0 and the unit can be one of b(bytes), k(kilobytes), m(megabytes), or g(gigabytes)." + }, + "dockerArgs": { + "type": "string", + "description": "Extra arguments to pass to the Docker run command. This would override any parameters that have already been set by the system, or in this section. This parameter is only supported for Azure ML compute types." + } + }, + "description": "Compute Resource configuration for the job." + }, + "JobService": { + "type": "object", + "properties": { + "jobServiceType": { + "type": "string", + "description": "Endpoint type." + }, + "port": { + "type": "integer", + "format": "int32", + "description": "Port for endpoint." + }, + "endpoint": { + "type": "string", + "description": "Url for endpoint." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional properties to set on the endpoint." + }, + "nodes": { + "allOf": [ + { + "$ref": "#/components/schemas/AllNodes" + } + ], + "description": "Nodes that user would like to start the service on. If Nodes is not set or set to null, the service will only be started on leader node." + }, + "status": { + "type": "string", + "description": "Status of endpoint.", + "readOnly": true + }, + "errorMessage": { + "type": "string", + "description": "Any error in the service.", + "readOnly": true + } + }, + "description": "Job endpoint definition." + }, + "JobType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Command" + ] + } + ], + "description": "Type of a job." + }, + "ListViewType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "ActiveOnly", + "ArchivedOnly", + "All" + ] + } + ], + "description": "Specifies which jobs to include in a list result based on their lifecycle state." + }, "ManagedAzureAISearchIndex": { "type": "object", "required": [ @@ -15744,6 +22020,16 @@ ], "description": "The input definition information for a Microsoft Fabric tool as used to configure an agent." }, + "Mlflow.MlflowPayload": { + "type": "object", + "additionalProperties": {}, + "description": "Generic MLflow compatibility request payload." + }, + "Mlflow.MlflowResponse": { + "type": "object", + "additionalProperties": {}, + "description": "Generic MLflow compatibility response payload." + }, "ModelDeployment": { "type": "object", "required": [ @@ -15895,6 +22181,32 @@ ], "description": "Monthly recurrence schedule." }, + "MpiDistribution": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "enum": [ + "Mpi" + ], + "description": "Specifies the type of distribution framework." + }, + "processCountPerNode": { + "type": "integer", + "format": "int32", + "description": "Number of processes per MPI node." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "MPI distribution configuration." + }, "NoAuthenticationCredentials": { "type": "object", "required": [ @@ -15917,6 +22229,23 @@ ], "description": "Credentials that do not require authentication" }, + "NodeCollection": { + "type": "object", + "required": [ + "nodesValueType" + ], + "properties": { + "nodesValueType": { + "type": "string", + "description": "Type of the Nodes value." + } + }, + "discriminator": { + "propertyName": "nodesValueType", + "mapping": {} + }, + "description": "Nodes that user would like to start the service on." + }, "OAuthConsentRequestOutputItem": { "type": "object", "required": [ @@ -35686,6 +42015,51 @@ ], "description": "The output of an OpenAPI tool call." }, + "Output": { + "type": "object", + "required": [ + "jobOutputType" + ], + "properties": { + "jobOutputType": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypes" + } + ], + "description": "Specifies the type of job output." + }, + "mode": { + "allOf": [ + { + "$ref": "#/components/schemas/InputOutputModes" + } + ], + "description": "Output Asset Delivery Mode." + }, + "assetName": { + "type": "string", + "description": "Name of the output data asset to register." + }, + "assetVersion": { + "type": "string", + "description": "Version of the output data asset to register." + }, + "uri": { + "type": "string", + "description": "Output Asset URI." + }, + "baseModelId": { + "type": "string", + "description": "Base model ID. Applies to safetensors_model outputs." + }, + "description": { + "type": "string", + "description": "Description for the output." + } + }, + "description": "Job output definition." + }, "PageOrder": { "type": "string", "enum": [ @@ -35861,6 +42235,174 @@ }, "description": "Paged collection of Insight items" }, + "PagedJob": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Job" + }, + "description": "The Job items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of Job items" + }, + "PagedJobArtifact": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobArtifact" + }, + "description": "The JobArtifact items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobArtifact items" + }, + "PagedJobAttempt": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobAttempt" + }, + "description": "The JobAttempt items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobAttempt items" + }, + "PagedJobMetric": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetric" + }, + "description": "The JobMetric items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetric items" + }, + "PagedJobMetricAggregate": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricAggregate" + }, + "description": "The JobMetricAggregate items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetricAggregate items" + }, + "PagedJobMetricLastValue": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricLastValue" + }, + "description": "The JobMetricLastValue items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetricLastValue items" + }, + "PagedJobMetricPoint": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricPoint" + }, + "description": "The JobMetricPoint items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetricPoint items" + }, + "PagedJobOutputReference": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobOutputReference" + }, + "description": "The JobOutputReference items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobOutputReference items" + }, "PagedRedTeam": { "type": "object", "required": [ @@ -36128,6 +42670,42 @@ }, "description": "A record mapping for a single protocol and its version." }, + "PyTorchDistribution": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "enum": [ + "PyTorch" + ], + "description": "Specifies the type of distribution framework." + }, + "processCountPerInstance": { + "type": "integer", + "format": "int32", + "description": "Number of processes per node." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "PyTorch distribution configuration." + }, + "QueueSettings": { + "type": "object", + "properties": { + "jobTier": { + "type": "string", + "description": "Controls the compute job tier." + } + }, + "description": "Queue settings for the job." + }, "RaiConfig": { "type": "object", "required": [ @@ -37192,6 +43770,44 @@ } ] }, + "SystemData": { + "type": "object", + "properties": { + "createdBy": { + "type": "string", + "description": "The identity that created the resource.", + "readOnly": true + }, + "createdByType": { + "type": "string", + "description": "The type of identity that created the resource.", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "The timestamp of resource creation (UTC).", + "readOnly": true + }, + "lastModifiedBy": { + "type": "string", + "description": "The identity that last modified the resource.", + "readOnly": true + }, + "lastModifiedByType": { + "type": "string", + "description": "The type of identity that last modified the resource.", + "readOnly": true + }, + "lastModifiedAt": { + "type": "string", + "format": "date-time", + "description": "The timestamp of resource last modification (UTC).", + "readOnly": true + } + }, + "description": "Metadata pertaining to creation and last modification of the resource." + }, "Target": { "type": "object", "required": [ @@ -37381,6 +43997,37 @@ }, "description": "Taxonomy sub-category definition." }, + "TensorFlowDistribution": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "enum": [ + "TensorFlow" + ], + "description": "Specifies the type of distribution framework." + }, + "workerCount": { + "type": "integer", + "format": "int32", + "description": "Number of workers. If not specified, will default to the instance count." + }, + "parameterServerCount": { + "type": "integer", + "format": "int32", + "description": "Number of parameter server tasks." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "TensorFlow distribution configuration." + }, "ToolCallOutputContent": { "anyOf": [ { diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 4d2fd9278d8d..fa5d662abdeb 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -5,6 +5,24 @@ "version": "virtual-public-preview" }, "tags": [ + { + "name": "MLflow Experiments" + }, + { + "name": "MLflow Runs" + }, + { + "name": "MLflow Metrics" + }, + { + "name": "MLflow Artifacts" + }, + { + "name": "MLflow Registered Models" + }, + { + "name": "MLflow Model Versions" + }, { "name": "Agents" }, @@ -67,6 +85,9 @@ }, { "name": "Toolsets" + }, + { + "name": "Jobs" } ], "paths": { @@ -5989,53 +6010,65 @@ ] } }, - "/managedAgentIdentityBlueprints": { + "/jobs": { "get": { - "operationId": "ManagedAgentIdentityBlueprints_listManagedAgentIdentityBlueprints", + "operationId": "Jobs_list", + "description": "List Jobs.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "jobType", + "in": "query", + "required": false, + "description": "Filter by job type (e.g. 'Command').", "schema": { - "type": "string", - "enum": [ - "AgentEndpoints=V1Preview" - ] - } + "$ref": "#/components/schemas/JobType" + }, + "explode": false }, { - "name": "order", + "name": "tag", "in": "query", "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "description": "Filter jobs by tag in the format 'key=value' (e.g., 'framework=pytorch').", "schema": { - "$ref": "#/components/schemas/PageOrder" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "listViewType", "in": "query", "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "description": "Specifies which view type to apply when listing jobs.", "schema": { - "type": "integer", - "format": "int32", - "default": 20 + "$ref": "#/components/schemas/ListViewType" }, "explode": false }, { - "name": "api-version", + "name": "properties", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Comma-separated user property names and optionally values. Example: prop1,prop2=value2.", "schema": { "type": "string" }, "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } } ], "responses": { @@ -6044,32 +6077,38 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedManagedAgentIdentityBlueprint" + "$ref": "#/components/schemas/PagedJob" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - } - }, - "/managedAgentIdentityBlueprints/{blueprint_name}": { - "put": { - "operationId": "ManagedAgentIdentityBlueprints_createOrUpdateManagedAgentIdentityBlueprint", + "tags": [ + "Jobs" + ] + }, + "post": { + "operationId": "Jobs_createTrainingJob", + "description": "Create and execute a model training Job.", "parameters": [ { "name": "Foundry-Features", @@ -6079,15 +6118,15 @@ "schema": { "type": "string", "enum": [ - "AgentEndpoints=V1Preview" + "Jobs=V1Preview" ] } }, { - "name": "blueprint_name", - "in": "path", - "required": true, - "description": "The name of the managed agent identity blueprint to create.", + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry job creation.", "schema": { "type": "string" } @@ -6104,12 +6143,12 @@ } ], "responses": { - "200": { - "description": "The request has succeeded.", + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ManagedAgentIdentityBlueprint" + "$ref": "#/components/schemas/Job" } } } @@ -6125,25 +6164,26 @@ } } }, + "tags": [ + "Jobs" + ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateOrUpdateManagedAgentIdentityBlueprintRequest" + "$ref": "#/components/schemas/Job" } } - } - }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] + }, + "description": "The job to create." } - }, + } + }, + "/jobs/{jobName}/artifacts": { "get": { - "operationId": "ManagedAgentIdentityBlueprints_getManagedAgentIdentityBlueprint", - "description": "Retrieves a managed agent identity blueprint by name.", + "operationId": "JobArtifacts_listJobArtifacts", + "description": "List artifacts for the current view of a job.", "parameters": [ { "name": "Foundry-Features", @@ -6153,19 +6193,50 @@ "schema": { "type": "string", "enum": [ - "AgentEndpoints=V1Preview" + "Jobs=V1Preview" ] } }, { - "name": "blueprint_name", + "name": "jobName", "in": "path", "required": true, - "description": "The name of the managed agent identity blueprint to retrieve.", + "description": "The job name.", "schema": { "type": "string" } }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list.", + "schema": { + "type": "string" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -6183,7 +6254,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ManagedAgentIdentityBlueprint" + "$ref": "#/components/schemas/PagedJobArtifact" } } } @@ -6199,15 +6270,15 @@ } } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "delete": { - "operationId": "ManagedAgentIdentityBlueprints_deleteManagedAgentIdentityBlueprint", - "description": "Deletes a managed agent identity blueprint by name.", + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/artifacts/{artifactPath}:content": { + "get": { + "operationId": "JobArtifacts_downloadJobArtifact", + "description": "Download job artifact content.", "parameters": [ { "name": "Foundry-Features", @@ -6217,15 +6288,24 @@ "schema": { "type": "string", "enum": [ - "AgentEndpoints=V1Preview" + "Jobs=V1Preview" ] } }, { - "name": "blueprint_name", + "name": "jobName", "in": "path", "required": true, - "description": "The name of the managed agent identity blueprint to delete.", + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "artifactPath", + "in": "path", + "required": true, + "description": "The artifact path.", "schema": { "type": "string" } @@ -6242,8 +6322,16 @@ } ], "responses": { - "204": { - "description": "There is no content to send for this request, but the headers may be useful." + "200": { + "description": "The request has succeeded.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } }, "default": { "description": "An unexpected error response.", @@ -6256,17 +6344,15 @@ } } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "tags": [ + "Jobs" + ] } }, - "/memory_stores": { - "post": { - "operationId": "createMemoryStore", - "description": "Create a memory store.", + "/jobs/{jobName}/artifacts/{artifactPath}:contentInfo": { + "get": { + "operationId": "JobArtifacts_getJobArtifactContentInfo", + "description": "Get download information for a job artifact.", "parameters": [ { "name": "Foundry-Features", @@ -6276,10 +6362,28 @@ "schema": { "type": "string", "enum": [ - "MemoryStores=V1Preview" + "Jobs=V1Preview" ] } }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "artifactPath", + "in": "path", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -6297,7 +6401,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreObject" + "$ref": "#/components/schemas/JobArtifactContentInfo" } } } @@ -6314,101 +6418,173 @@ } }, "tags": [ - "Memory Stores" + "Jobs" + ] + } + }, + "/jobs/{jobName}/artifacts/{artifactPath}:metadata": { + "get": { + "operationId": "JobArtifacts_getJobArtifactMetadata", + "description": "Get metadata for a job artifact.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "artifactPath", + "in": "path", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the memory store." - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the memory store." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the memory store." - }, - "definition": { - "allOf": [ - { - "$ref": "#/components/schemas/MemoryStoreDefinition" - } - ], - "description": "The memory store definition." - } - }, - "required": [ - "name", - "definition" - ] + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } } } } }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] - } - }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts": { "get": { - "operationId": "listMemoryStores", - "description": "List all memory stores.", + "operationId": "JobAttempts_listJobAttempts", + "description": "List execution attempts for a job.", "parameters": [ { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } }, { - "name": "order", + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", "in": "query", "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "description": "Maximum number of items to return.", "schema": { - "$ref": "#/components/schemas/PageOrder" + "type": "integer", + "format": "int32" }, "explode": false }, { - "name": "after", + "name": "skipToken", "in": "query", "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "description": "Continuation token returned by a previous list request.", "schema": { "type": "string" }, "explode": false }, { - "name": "before", + "name": "api-version", "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobAttempt" + } + } + } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}": { + "get": { + "operationId": "JobAttempts_getJobAttempt", + "description": "Get one execution attempt for a job.", + "parameters": [ { "name": "Foundry-Features", "in": "header", @@ -6417,10 +6593,28 @@ "schema": { "type": "string", "enum": [ - "MemoryStores=V1Preview" + "Jobs=V1Preview" ] } }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -6438,33 +6632,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MemoryStoreObject" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/JobAttempt" } } } @@ -6481,41 +6649,5486 @@ } }, "tags": [ - "Memory Stores" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] - } + "Jobs" + ] } }, - "/memory_stores/{name}": { - "post": { - "operationId": "updateMemoryStore", - "description": "Update a memory store.", + "/jobs/{jobName}/attempts/{attemptId}/artifacts": { + "get": { + "operationId": "JobAttemptArtifacts_listJobAttemptArtifacts", + "description": "List artifacts for a specific job attempt.", "parameters": [ { - "name": "name", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", "in": "path", "required": true, - "description": "The name of the memory store to update.", + "description": "The job name.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", + "name": "attemptId", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The attempt identifier.", "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:content": { + "get": { + "operationId": "JobAttemptArtifacts_downloadJobAttemptArtifact", + "description": "Download artifact content from a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "artifactPath", + "in": "path", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:contentInfo": { + "get": { + "operationId": "JobAttemptArtifacts_getJobAttemptArtifactContentInfo", + "description": "Get download information for an artifact from a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "artifactPath", + "in": "path", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:metadata": { + "get": { + "operationId": "JobAttemptArtifacts_getJobAttemptArtifactMetadata", + "description": "Get metadata for an artifact from a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "artifactPath", + "in": "path", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/metrics": { + "get": { + "operationId": "JobAttemptMetrics_listJobAttemptMetrics", + "description": "List metrics emitted by a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetric" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}": { + "get": { + "operationId": "JobAttemptMetrics_getJobAttemptMetric", + "description": "Get the full history for a metric from a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricPoint" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates": { + "get": { + "operationId": "JobAttemptMetrics_getJobAttemptMetricAggregates", + "description": "Get aggregate metric values from a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricAggregate" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample": { + "get": { + "operationId": "JobAttemptMetrics_getJobAttemptMetricSample", + "description": "Get one sampled value or window from a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples": { + "get": { + "operationId": "JobAttemptMetrics_getJobAttemptMetricSamples", + "description": "Get sampled metric values from a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/metrics:lastValues": { + "get": { + "operationId": "JobAttemptMetrics_getJobAttemptMetricLastValues", + "description": "Get latest metric values for a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricLastValue" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/outputs": { + "get": { + "operationId": "JobAttemptOutputs_listJobAttemptOutputs", + "description": "List outputs produced by a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}": { + "get": { + "operationId": "JobAttemptOutputs_getJobAttemptOutput", + "description": "Get one output produced by a specific job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "outputName", + "in": "path", + "required": true, + "description": "The output name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/metrics": { + "get": { + "operationId": "JobMetrics_listJobMetrics", + "description": "List metrics emitted by the current view of a job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetric" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/metrics/{metricName}": { + "get": { + "operationId": "JobMetrics_getJobMetric", + "description": "Get the full history for a job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricPoint" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/metrics/{metricName}:aggregates": { + "get": { + "operationId": "JobMetrics_getJobMetricAggregates", + "description": "Get aggregate values for a job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricAggregate" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/metrics/{metricName}:sample": { + "get": { + "operationId": "JobMetrics_getJobMetricSample", + "description": "Get one sampled value or window for a job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/metrics/{metricName}:samples": { + "get": { + "operationId": "JobMetrics_getJobMetricSamples", + "description": "Get sampled values for a job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/metrics:lastValues": { + "get": { + "operationId": "JobMetrics_getJobMetricLastValues", + "description": "Get the latest values for metrics emitted by the current view of a job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricLastValue" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/outputs": { + "get": { + "operationId": "JobOutputs_listJobOutputs", + "description": "List outputs produced by a job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{jobName}/outputs/{outputName}": { + "get": { + "operationId": "JobOutputs_getJobOutput", + "description": "Get one output produced by a job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The job name.", + "schema": { + "type": "string" + } + }, + { + "name": "outputName", + "in": "path", + "required": true, + "description": "The output name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{name}": { + "get": { + "operationId": "Jobs_get", + "description": "Get a Job by name.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the Job. This is case-sensitive.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Job" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + }, + "delete": { + "operationId": "Jobs_beginDelete", + "description": "Delete a Job by name. Returns 202 Accepted with a Location header to poll for completion, or 204 if the job does not exist.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the Job. This is case-sensitive.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "202": { + "description": "Response returned when a job delete operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the status of the delete operation.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "204": { + "description": "There is no content to send for this request, but the headers may be useful." + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/jobs/{name}:cancel": { + "post": { + "operationId": "Jobs_beginCancel", + "description": "Cancel a Job by name. Returns 200 if cancelled immediately, or 202 Accepted with a Location header to poll for completion.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the Job. This is case-sensitive.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded." + }, + "202": { + "description": "Response returned when a job cancel operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the status of the cancel operation.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Jobs" + ] + } + }, + "/managedAgentIdentityBlueprints": { + "get": { + "operationId": "ManagedAgentIdentityBlueprints_listManagedAgentIdentityBlueprints", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "AgentEndpoints=V1Preview" + ] + } + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedManagedAgentIdentityBlueprint" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + } + }, + "/managedAgentIdentityBlueprints/{blueprint_name}": { + "put": { + "operationId": "ManagedAgentIdentityBlueprints_createOrUpdateManagedAgentIdentityBlueprint", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "AgentEndpoints=V1Preview" + ] + } + }, + { + "name": "blueprint_name", + "in": "path", + "required": true, + "description": "The name of the managed agent identity blueprint to create.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagedAgentIdentityBlueprint" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOrUpdateManagedAgentIdentityBlueprintRequest" + } + } + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "get": { + "operationId": "ManagedAgentIdentityBlueprints_getManagedAgentIdentityBlueprint", + "description": "Retrieves a managed agent identity blueprint by name.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "AgentEndpoints=V1Preview" + ] + } + }, + { + "name": "blueprint_name", + "in": "path", + "required": true, + "description": "The name of the managed agent identity blueprint to retrieve.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagedAgentIdentityBlueprint" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "delete": { + "operationId": "ManagedAgentIdentityBlueprints_deleteManagedAgentIdentityBlueprint", + "description": "Deletes a managed agent identity blueprint by name.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "AgentEndpoints=V1Preview" + ] + } + }, + { + "name": "blueprint_name", + "in": "path", + "required": true, + "description": "The name of the managed agent identity blueprint to delete.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "204": { + "description": "There is no content to send for this request, but the headers may be useful." + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + } + }, + "/memory_stores": { + "post": { + "operationId": "createMemoryStore", + "description": "Create a memory store.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryStoreObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the memory store." + }, + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the memory store." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the memory store." + }, + "definition": { + "allOf": [ + { + "$ref": "#/components/schemas/MemoryStoreDefinition" + } + ], + "description": "The memory store definition." + } + }, + "required": [ + "name", + "definition" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + }, + "get": { + "operationId": "listMemoryStores", + "description": "List all memory stores.", + "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MemoryStoreObject" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + } + }, + "/memory_stores/{name}": { + "post": { + "operationId": "updateMemoryStore", + "description": "Update a memory store.", + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store to update.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryStoreObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the memory store." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the memory store." + } + } + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + }, + "get": { + "operationId": "getMemoryStore", + "description": "Retrieve a memory store.", + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store to retrieve.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryStoreObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + }, + "delete": { + "operationId": "deleteMemoryStore", + "description": "Delete a memory store.", + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store to delete.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteMemoryStoreResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + } + }, + "/memory_stores/{name}/updates/{update_id}": { + "get": { + "operationId": "getUpdateResult", + "description": "Get memory store update result.", + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store.", + "schema": { + "type": "string" + } + }, + { + "name": "update_id", + "in": "path", + "required": true, + "description": "The ID of the memory update operation.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryStoreUpdateResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + } + }, + "/memory_stores/{name}:delete_scope": { + "post": { + "operationId": "deleteScopeMemories", + "description": "Delete all memories associated with a specific scope from a memory store.", + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryStoreDeleteScopeResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scope": { + "type": "string", + "description": "The namespace that logically groups and isolates memories to delete, such as a user ID." + } + }, + "required": [ + "scope" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + } + }, + "/memory_stores/{name}:search_memories": { + "post": { + "operationId": "searchMemories", + "description": "Search for relevant memories from a memory store based on conversation context.", + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store to search.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryStoreSearchResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scope": { + "type": "string", + "description": "The namespace that logically groups and isolates memories, such as a user ID." + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.InputItem" + }, + "description": "Items for which to search for relevant memories." + }, + "previous_search_id": { + "type": "string", + "description": "The unique ID of the previous search request, enabling incremental memory search from where the last operation left off." + }, + "options": { + "allOf": [ + { + "$ref": "#/components/schemas/MemorySearchOptions" + } + ], + "description": "Memory search options." + } + }, + "required": [ + "scope" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + } + }, + "/memory_stores/{name}:update_memories": { + "post": { + "operationId": "updateMemories", + "description": "Update memory store with conversation memories.", + "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store to update.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryStoreUpdateResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scope": { + "type": "string", + "description": "The namespace that logically groups and isolates memories, such as a user ID." + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.InputItem" + }, + "description": "Conversation items to be stored in memory." + }, + "previous_update_id": { + "type": "string", + "description": "The unique ID of the previous update request, enabling incremental memory updates from where the last operation left off." + }, + "update_delay": { + "type": "integer", + "format": "int32", + "description": "Timeout period before processing the memory update in seconds.\nIf a new update request is received during this period, it will cancel the current request and reset the timeout.\nSet to 0 to immediately trigger the update without delay.\nDefaults to 300 (5 minutes).", + "default": 300 + } + }, + "required": [ + "scope" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + } + }, + "/mlflow/api/2.0/mlflow/artifacts/list": { + "get": { + "operationId": "Artifacts_list", + "description": "List MLflow artifacts.", + "parameters": [ + { + "name": "run_id", + "in": "query", + "required": false, + "description": "MLflow run identifier.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "run_uuid", + "in": "query", + "required": false, + "description": "MLflow run UUID.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "path", + "in": "query", + "required": false, + "description": "Artifact path to list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Artifacts" + ] + } + }, + "/mlflow/api/2.0/mlflow/experiments/create": { + "post": { + "operationId": "Experiments_create", + "description": "Create an MLflow experiment.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/delete": { + "post": { + "operationId": "Experiments_delete", + "description": "Delete an MLflow experiment.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/get": { + "get": { + "operationId": "Experiments_get", + "description": "Get an MLflow experiment by ID.", + "parameters": [ + { + "name": "experiment_id", + "in": "query", + "required": false, + "description": "MLflow experiment identifier.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "experiment_name", + "in": "query", + "required": false, + "description": "MLflow experiment name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ] + } + }, + "/mlflow/api/2.0/mlflow/experiments/get-by-name": { + "get": { + "operationId": "Experiments_getByName", + "description": "Get an MLflow experiment by name.", + "parameters": [ + { + "name": "experiment_id", + "in": "query", + "required": false, + "description": "MLflow experiment identifier.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "experiment_name", + "in": "query", + "required": false, + "description": "MLflow experiment name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ] + } + }, + "/mlflow/api/2.0/mlflow/experiments/restore": { + "post": { + "operationId": "Experiments_restore", + "description": "Restore a deleted MLflow experiment.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/search": { + "post": { + "operationId": "Experiments_search", + "description": "Search MLflow experiments.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/set-experiment-tag": { + "post": { + "operationId": "Experiments_setTag", + "description": "Set an MLflow experiment tag.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/update": { + "post": { + "operationId": "Experiments_update", + "description": "Update MLflow experiment metadata.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/metrics/get-history": { + "get": { + "operationId": "Metrics_getHistory", + "description": "Get MLflow metric history.", + "parameters": [ + { + "name": "run_id", + "in": "query", + "required": false, + "description": "MLflow run identifier.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "run_uuid", + "in": "query", + "required": false, + "description": "MLflow run UUID.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "metric_key", + "in": "query", + "required": false, + "description": "Metric key.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "max_results", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "page_token", + "in": "query", + "required": false, + "description": "Token used to retrieve the next page of metric points.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Metrics" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/create": { + "post": { + "operationId": "ModelVersions_create", + "description": "Create an MLflow model version.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/delete": { + "delete": { + "operationId": "ModelVersions_delete", + "description": "Delete an MLflow model version.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "version", + "in": "query", + "required": false, + "description": "Model version.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/delete-tag": { + "delete": { + "operationId": "ModelVersions_deleteTag", + "description": "Delete an MLflow model-version tag.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "version", + "in": "query", + "required": false, + "description": "Model version.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/get": { + "get": { + "operationId": "ModelVersions_get", + "description": "Get an MLflow model version.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "version", + "in": "query", + "required": false, + "description": "Model version.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/get-download-uri": { + "get": { + "operationId": "ModelVersions_getDownloadUri", + "description": "Get an MLflow model version download URI.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "version", + "in": "query", + "required": false, + "description": "Model version.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/get-storage-location-uri": { + "post": { + "operationId": "ModelVersions_getStorageLocationUri", + "description": "Get an MLflow model version storage location URI.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/search": { + "get": { + "operationId": "ModelVersions_search", + "description": "Search MLflow model versions.", + "parameters": [ + { + "name": "max_results", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "page_token", + "in": "query", + "required": false, + "description": "Token used to retrieve the next page of results.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/set-tag": { + "post": { + "operationId": "ModelVersions_setTag", + "description": "Set an MLflow model-version tag.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/transition-stage": { + "post": { + "operationId": "ModelVersions_transitionStage", + "description": "Transition an MLflow model version stage.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/update": { + "patch": { + "operationId": "ModelVersions_update", + "description": "Update an MLflow model version.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/registered-models/create": { + "post": { + "operationId": "RegisteredModels_create", + "description": "Create an MLflow registered model.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/registered-models/delete": { + "delete": { + "operationId": "RegisteredModels_delete", + "description": "Delete an MLflow registered model.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/delete-tag": { + "delete": { + "operationId": "RegisteredModels_deleteTag", + "description": "Delete an MLflow registered-model tag.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/get": { + "get": { + "operationId": "RegisteredModels_get", + "description": "Get an MLflow registered model.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/get-latest-versions": { + "get": { + "operationId": "RegisteredModels_getLatestVersions", + "description": "Get latest versions for an MLflow registered model.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/list": { + "get": { + "operationId": "RegisteredModels_list", + "description": "List MLflow registered models.", + "parameters": [ + { + "name": "max_results", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "page_token", + "in": "query", + "required": false, + "description": "Token used to retrieve the next page of results.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/rename": { + "post": { + "operationId": "RegisteredModels_rename", + "description": "Rename an MLflow registered model.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/registered-models/search": { + "get": { + "operationId": "RegisteredModels_search", + "description": "Search MLflow registered models.", + "parameters": [ + { + "name": "max_results", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "page_token", + "in": "query", + "required": false, + "description": "Token used to retrieve the next page of results.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/set-tag": { + "post": { + "operationId": "RegisteredModels_setTag", + "description": "Set an MLflow registered-model tag.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/registered-models/update": { + "patch": { + "operationId": "RegisteredModels_update", + "description": "Update an MLflow registered model.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/create": { + "post": { + "operationId": "Runs_create", + "description": "Create an MLflow run.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/delete": { + "post": { + "operationId": "Runs_delete", + "description": "Delete an MLflow run.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/delete-tag": { + "post": { + "operationId": "Runs_deleteTag", + "description": "Delete an MLflow run tag.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/get": { + "get": { + "operationId": "Runs_get", + "description": "Get an MLflow run.", + "parameters": [ + { + "name": "run_id", + "in": "query", + "required": false, + "description": "MLflow run identifier.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "run_uuid", + "in": "query", + "required": false, + "description": "MLflow run UUID.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Runs" + ] + } + }, + "/mlflow/api/2.0/mlflow/runs/log-batch": { + "post": { + "operationId": "Runs_logBatch", + "description": "Log a batch of metrics, parameters, and tags to an MLflow run.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/log-inputs": { + "post": { + "operationId": "Runs_logInputs", + "description": "Log MLflow run input relationships.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } } - }, + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/log-metric": { + "post": { + "operationId": "Runs_logMetric", + "description": "Log one metric to an MLflow run.", + "parameters": [ { "name": "api-version", "in": "query", @@ -6533,7 +12146,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreObject" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6550,63 +12163,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the memory store." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the memory store." - } - } + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } - }, - "get": { - "operationId": "getMemoryStore", - "description": "Retrieve a memory store.", + } + }, + "/mlflow/api/2.0/mlflow/runs/log-model": { + "post": { + "operationId": "Runs_logModel", + "description": "Log MLflow model metadata.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to retrieve.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -6624,7 +12199,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreObject" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6641,39 +12216,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } } - }, - "delete": { - "operationId": "deleteMemoryStore", - "description": "Delete a memory store.", + } + }, + "/mlflow/api/2.0/mlflow/runs/log-parameter": { + "post": { + "operationId": "Runs_logParameter", + "description": "Log one parameter to an MLflow run.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to delete.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -6691,7 +12252,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteMemoryStoreResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6708,50 +12269,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } } } }, - "/memory_stores/{name}/updates/{update_id}": { - "get": { - "operationId": "getUpdateResult", - "description": "Get memory store update result.", + "/mlflow/api/2.0/mlflow/runs/restore": { + "post": { + "operationId": "Runs_restore", + "description": "Restore a deleted MLflow run.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store.", - "schema": { - "type": "string" - } - }, - { - "name": "update_id", - "in": "path", - "required": true, - "description": "The ID of the memory update operation.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -6769,7 +12305,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreUpdateResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6786,41 +12322,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } } } }, - "/memory_stores/{name}:delete_scope": { + "/mlflow/api/2.0/mlflow/runs/search": { "post": { - "operationId": "deleteScopeMemories", - "description": "Delete all memories associated with a specific scope from a memory store.", + "operationId": "Runs_search", + "description": "Search MLflow runs.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -6838,7 +12358,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreDeleteScopeResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6855,60 +12375,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "scope": { - "type": "string", - "description": "The namespace that logically groups and isolates memories to delete, such as a user ID." - } - }, - "required": [ - "scope" - ] + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } } }, - "/memory_stores/{name}:search_memories": { + "/mlflow/api/2.0/mlflow/runs/set-tag": { "post": { - "operationId": "searchMemories", - "description": "Search for relevant memories from a memory store based on conversation context.", + "operationId": "Runs_setTag", + "description": "Set an MLflow run tag.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to search.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -6926,7 +12411,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreSearchResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6943,79 +12428,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "scope": { - "type": "string", - "description": "The namespace that logically groups and isolates memories, such as a user ID." - }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.InputItem" - }, - "description": "Items for which to search for relevant memories." - }, - "previous_search_id": { - "type": "string", - "description": "The unique ID of the previous search request, enabling incremental memory search from where the last operation left off." - }, - "options": { - "allOf": [ - { - "$ref": "#/components/schemas/MemorySearchOptions" - } - ], - "description": "Memory search options." - } - }, - "required": [ - "scope" - ] + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } } }, - "/memory_stores/{name}:update_memories": { + "/mlflow/api/2.0/mlflow/runs/update": { "post": { - "operationId": "updateMemories", - "description": "Update memory store with conversation memories.", + "operationId": "Runs_update", + "description": "Update MLflow run metadata or status.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to update.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -7028,22 +12459,12 @@ } ], "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, + "200": { + "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreUpdateResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7060,48 +12481,17 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "scope": { - "type": "string", - "description": "The namespace that logically groups and isolates memories, such as a user ID." - }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.InputItem" - }, - "description": "Conversation items to be stored in memory." - }, - "previous_update_id": { - "type": "string", - "description": "The unique ID of the previous update request, enabling incremental memory updates from where the last operation left off." - }, - "update_delay": { - "type": "integer", - "format": "int32", - "description": "Timeout period before processing the memory update in seconds.\nIf a new update request is received during this period, it will cancel the current request and reset the timeout.\nSet to 0 to immediately trigger the update without delay.\nDefaults to 300 (5 minutes).", - "default": 300 - } - }, - "required": [ - "scope" - ] + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } } }, @@ -13081,6 +18471,27 @@ ], "description": "Agentic identity credential definition" }, + "AllNodes": { + "type": "object", + "required": [ + "nodesValueType" + ], + "properties": { + "nodesValueType": { + "type": "string", + "enum": [ + "All" + ], + "description": "Type of the Nodes value." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/NodeCollection" + } + ], + "description": "All nodes means the service will be running on all of the nodes of the job." + }, "ApiErrorResponse": { "type": "object", "required": [ @@ -13141,6 +18552,23 @@ "type": "string", "description": "Identifier of a saved asset." }, + "AssetTypes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "uri_file", + "uri_folder", + "safetensors_model", + "literal" + ] + } + ], + "description": "Type of job input/output asset." + }, "AssistantMessage": { "type": "object", "required": [ @@ -15264,6 +20692,163 @@ ], "description": "Code-based evaluator definition using python code" }, + "CommandJob": { + "type": "object", + "required": [ + "jobType", + "command", + "environmentImageReference", + "computeId" + ], + "properties": { + "jobType": { + "type": "string", + "enum": [ + "Command" + ], + "description": "Job type." + }, + "command": { + "type": "string", + "description": "The command to execute on startup of the job." + }, + "environmentImageReference": { + "type": "string", + "description": "ACR path of environment." + }, + "displayName": { + "type": "string", + "description": "Display name of job." + }, + "description": { + "type": "string", + "description": "The asset description text." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The asset property dictionary." + }, + "codeId": { + "type": "string", + "description": "Code asset reference." + }, + "computeId": { + "type": "string", + "description": "Compute resource ID." + }, + "inputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Input" + }, + "description": "Mapping of input data bindings used in the job." + }, + "outputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Output" + }, + "description": "Mapping of output data bindings used in the job." + }, + "environmentVariables": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Environment variables included in the job." + }, + "resources": { + "allOf": [ + { + "$ref": "#/components/schemas/JobResourceConfiguration" + } + ], + "description": "Compute Resource configuration for the job." + }, + "distribution": { + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + }, + "limits": { + "allOf": [ + { + "$ref": "#/components/schemas/CommandJobLimits" + } + ], + "description": "Command Job limit." + }, + "services": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/JobService" + }, + "description": "List of job services.", + "readOnly": true + }, + "queueSettings": { + "allOf": [ + { + "$ref": "#/components/schemas/QueueSettings" + } + ], + "description": "Queue settings for the job." + }, + "userAssignedIdentityId": { + "type": "string", + "description": "user-assigned managed identity" + }, + "isArchived": { + "type": "boolean", + "description": "Is the asset archived?" + }, + "status": { + "type": "string", + "description": "Status of the job.", + "readOnly": true + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/JobProperties" + } + ], + "description": "Properties of a Command Job." + }, + "CommandJobLimits": { + "type": "object", + "required": [ + "jobLimitsType" + ], + "properties": { + "jobLimitsType": { + "type": "string", + "enum": [ + "Command" + ], + "description": "JobLimit type." + }, + "timeout": { + "type": "string", + "format": "duration", + "description": "The max run duration in ISO 8601 format, after which the job will be cancelled. Only supports duration with precision as low as Seconds." + } + }, + "description": "Command Job limit class." + }, "CompletionMessageToolCallChunk": { "type": "object", "required": [ @@ -16566,6 +22151,27 @@ ], "description": "A message authored by a developer to guide the model during evaluation." }, + "DistributionConfiguration": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "description": "Specifies the type of distribution framework." + } + }, + "discriminator": { + "propertyName": "distributionType", + "mapping": { + "PyTorch": "#/components/schemas/PyTorchDistribution", + "Mpi": "#/components/schemas/MpiDistribution", + "TensorFlow": "#/components/schemas/TensorFlowDistribution" + } + }, + "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + }, "EntraAuthorizationScheme": { "type": "object", "required": [ @@ -18949,6 +24555,39 @@ }, "description": "Index resource Definition" }, + "Input": { + "type": "object", + "required": [ + "jobInputType" + ], + "properties": { + "jobInputType": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypes" + } + ], + "description": "Specifies the type of job input." + }, + "uri": { + "type": "string", + "description": "Input Asset URI. Required for uri_file, uri_folder, and safetensors_model types." + }, + "mode": { + "allOf": [ + { + "$ref": "#/components/schemas/InputOutputModes" + } + ], + "description": "Input Asset Delivery Mode. Applies to uri-based inputs." + }, + "value": { + "type": "string", + "description": "Literal value. Required for literal type." + } + }, + "description": "Job input definition." + }, "InputData": { "type": "object", "required": [ @@ -18993,6 +24632,24 @@ ], "description": "Dataset as source for evaluation." }, + "InputOutputModes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "ReadOnlyMount", + "ReadWriteMount", + "Download", + "Direct", + "Upload" + ] + } + ], + "description": "Enum to determine the input/output data delivery mode." + }, "Insight": { "type": "object", "required": [ @@ -19396,6 +25053,625 @@ ], "description": "The types of parameters for red team item generation." }, + "Job": { + "type": "object", + "required": [ + "name", + "properties" + ], + "properties": { + "name": { + "type": "string", + "description": "The name of the Job. This is case-sensitive.", + "readOnly": true + }, + "id": { + "type": "string", + "description": "The resource ID.", + "readOnly": true + }, + "type": { + "type": "string", + "description": "The resource type.", + "readOnly": true + }, + "properties": { + "allOf": [ + { + "$ref": "#/components/schemas/JobProperties" + } + ], + "description": "Properties of the job." + }, + "systemData": { + "allOf": [ + { + "$ref": "#/components/schemas/SystemData" + } + ], + "description": "Metadata pertaining to creation and last modification of the resource.", + "readOnly": true + } + }, + "description": "Job resource." + }, + "JobArtifact": { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "type": "string", + "description": "Artifact path relative to the job artifact root.", + "readOnly": true + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/JobArtifactType" + } + ], + "description": "Artifact type.", + "readOnly": true + }, + "size": { + "type": "integer", + "format": "int64", + "description": "Artifact size in bytes.", + "readOnly": true + }, + "createdTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the artifact was created.", + "readOnly": true + }, + "updatedTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the artifact was last updated.", + "readOnly": true + }, + "origin": { + "type": "string", + "description": "Service origin of the artifact.", + "readOnly": true + }, + "container": { + "type": "string", + "description": "Diagnostic storage container identifier resolved by the service.", + "readOnly": true + } + }, + "description": "Metadata for an artifact produced by or attached to a job." + }, + "JobArtifactContentInfo": { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "type": "string", + "description": "Artifact path relative to the job artifact root.", + "readOnly": true + }, + "contentUri": { + "type": "string", + "format": "uri", + "description": "Download URI for the artifact content.", + "readOnly": true + }, + "contentType": { + "type": "string", + "description": "MIME type of the content.", + "readOnly": true + }, + "expiresAtUtc": { + "type": "string", + "format": "date-time", + "description": "Time the content URI expires.", + "readOnly": true + } + }, + "description": "Content access information for a job artifact." + }, + "JobArtifactType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "File", + "Directory" + ] + } + ], + "description": "Type of a job artifact." + }, + "JobAttempt": { + "type": "object", + "required": [ + "id", + "jobName" + ], + "properties": { + "id": { + "type": "string", + "description": "The attempt identifier.", + "readOnly": true + }, + "jobName": { + "type": "string", + "description": "The job name this attempt belongs to.", + "readOnly": true + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/JobAttemptStatus" + } + ], + "description": "The attempt status.", + "readOnly": true + }, + "statusReason": { + "type": "string", + "description": "Additional status reason.", + "readOnly": true + }, + "startTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the attempt started.", + "readOnly": true + }, + "endTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the attempt ended.", + "readOnly": true + }, + "lastStartTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Most recent time the attempt started running.", + "readOnly": true + }, + "computeDuration": { + "type": "string", + "format": "duration", + "description": "Total compute duration consumed by the attempt.", + "readOnly": true + }, + "queueingInfo": { + "type": "object", + "additionalProperties": {}, + "description": "Queueing details associated with the attempt.", + "readOnly": true + }, + "computeDetails": { + "type": "object", + "additionalProperties": {}, + "description": "Compute details associated with the attempt.", + "readOnly": true + }, + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/JobAttemptError" + } + ], + "description": "Terminal error for the attempt, if any.", + "readOnly": true + }, + "warnings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobAttemptWarning" + }, + "description": "Warnings emitted for the attempt.", + "readOnly": true + }, + "isCurrent": { + "type": "boolean", + "description": "Whether this attempt is the current attempt for the job.", + "readOnly": true + } + }, + "description": "One execution attempt of a job." + }, + "JobAttemptError": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable error code." + }, + "message": { + "type": "string", + "description": "Human-readable error message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional error details." + } + }, + "description": "Error emitted during a job attempt." + }, + "JobAttemptStatus": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Queued", + "Running", + "Completed", + "Failed", + "Canceled" + ] + } + ], + "description": "Status of a job execution attempt." + }, + "JobAttemptWarning": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable warning code." + }, + "message": { + "type": "string", + "description": "Human-readable warning message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional warning details." + } + }, + "description": "Warning emitted during a job attempt." + }, + "JobMetric": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Metric name.", + "readOnly": true + }, + "metricType": { + "allOf": [ + { + "$ref": "#/components/schemas/JobMetricType" + } + ], + "description": "Metric type.", + "readOnly": true + }, + "columns": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Column metadata for structured metric values.", + "readOnly": true + } + }, + "description": "Metadata for a metric emitted by a job or attempt." + }, + "JobMetricAggregate": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Metric name.", + "readOnly": true + }, + "startUtc": { + "type": "string", + "format": "date-time", + "description": "Aggregate window start.", + "readOnly": true + }, + "endUtc": { + "type": "string", + "format": "date-time", + "description": "Aggregate window end.", + "readOnly": true + }, + "values": { + "type": "object", + "additionalProperties": {}, + "description": "Aggregate values.", + "readOnly": true + } + }, + "description": "Aggregated values for a metric." + }, + "JobMetricLastValue": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Metric name.", + "readOnly": true + }, + "value": { + "allOf": [ + { + "$ref": "#/components/schemas/JobMetricPoint" + } + ], + "description": "Latest metric point.", + "readOnly": true + } + }, + "description": "Latest value for a metric." + }, + "JobMetricPoint": { + "type": "object", + "properties": { + "metricId": { + "type": "string", + "description": "Metric identifier.", + "readOnly": true + }, + "step": { + "type": "integer", + "format": "int64", + "description": "Metric step.", + "readOnly": true + }, + "createdUtc": { + "type": "string", + "format": "date-time", + "description": "Time the metric point was created.", + "readOnly": true + }, + "data": { + "type": "object", + "additionalProperties": {}, + "description": "Metric data values.", + "readOnly": true + } + }, + "description": "A metric data point." + }, + "JobMetricSample": { + "type": "object", + "required": [ + "name", + "points" + ], + "properties": { + "name": { + "type": "string", + "description": "Metric name.", + "readOnly": true + }, + "points": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricPoint" + }, + "description": "Sampled metric points.", + "readOnly": true + } + }, + "description": "Sampled values for a metric." + }, + "JobMetricType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Scalar", + "Table", + "Image" + ] + } + ], + "description": "The kind of metric emitted by a job." + }, + "JobOutputReference": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Output name.", + "readOnly": true + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypes" + } + ], + "description": "Output asset type.", + "readOnly": true + }, + "mode": { + "allOf": [ + { + "$ref": "#/components/schemas/InputOutputModes" + } + ], + "description": "Output delivery mode.", + "readOnly": true + }, + "uri": { + "type": "string", + "description": "Output storage URI.", + "readOnly": true + }, + "assetName": { + "type": "string", + "description": "Registered asset name, if the output produced an asset.", + "readOnly": true + }, + "assetVersion": { + "type": "string", + "description": "Registered asset version, if the output produced an asset.", + "readOnly": true + }, + "baseModelId": { + "type": "string", + "description": "Base model ID for model outputs.", + "readOnly": true + }, + "description": { + "type": "string", + "description": "Output description.", + "readOnly": true + } + }, + "description": "Named output produced by a job." + }, + "JobProperties": { + "type": "object", + "required": [ + "jobType" + ], + "properties": { + "jobType": { + "type": "string", + "description": "Job type." + } + }, + "discriminator": { + "propertyName": "jobType", + "mapping": { + "Command": "#/components/schemas/CommandJob" + } + }, + "description": "Base properties of a Job." + }, + "JobResourceConfiguration": { + "type": "object", + "properties": { + "instanceCount": { + "type": "integer", + "format": "int32", + "description": "Optional number of instances or nodes used by the compute target." + }, + "instanceType": { + "type": "string", + "description": "Optional type of VM used as supported by the compute target." + }, + "properties": { + "type": "object", + "additionalProperties": {}, + "description": "Additional properties bag." + }, + "shmSize": { + "type": "string", + "description": "Size of the docker container's shared memory block. This should be in the format of (number)(unit) where number as to be greater than 0 and the unit can be one of b(bytes), k(kilobytes), m(megabytes), or g(gigabytes)." + }, + "dockerArgs": { + "type": "string", + "description": "Extra arguments to pass to the Docker run command. This would override any parameters that have already been set by the system, or in this section. This parameter is only supported for Azure ML compute types." + } + }, + "description": "Compute Resource configuration for the job." + }, + "JobService": { + "type": "object", + "properties": { + "jobServiceType": { + "type": "string", + "description": "Endpoint type." + }, + "port": { + "type": "integer", + "format": "int32", + "description": "Port for endpoint." + }, + "endpoint": { + "type": "string", + "description": "Url for endpoint." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional properties to set on the endpoint." + }, + "nodes": { + "allOf": [ + { + "$ref": "#/components/schemas/AllNodes" + } + ], + "description": "Nodes that user would like to start the service on. If Nodes is not set or set to null, the service will only be started on leader node." + }, + "status": { + "type": "string", + "description": "Status of endpoint.", + "readOnly": true + }, + "errorMessage": { + "type": "string", + "description": "Any error in the service.", + "readOnly": true + } + }, + "description": "Job endpoint definition." + }, + "JobType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Command" + ] + } + ], + "description": "Type of a job." + }, + "ListViewType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "ActiveOnly", + "ArchivedOnly", + "All" + ] + } + ], + "description": "Specifies which jobs to include in a list result based on their lifecycle state." + }, "ManagedAgentIdentityBlueprint": { "type": "object", "required": [ @@ -20297,6 +26573,16 @@ ], "description": "The input definition information for a Microsoft Fabric tool as used to configure an agent." }, + "Mlflow.MlflowPayload": { + "type": "object", + "additionalProperties": {}, + "description": "Generic MLflow compatibility request payload." + }, + "Mlflow.MlflowResponse": { + "type": "object", + "additionalProperties": {}, + "description": "Generic MLflow compatibility response payload." + }, "ModelDeployment": { "type": "object", "required": [ @@ -20448,6 +26734,32 @@ ], "description": "Monthly recurrence schedule." }, + "MpiDistribution": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "enum": [ + "Mpi" + ], + "description": "Specifies the type of distribution framework." + }, + "processCountPerNode": { + "type": "integer", + "format": "int32", + "description": "Number of processes per MPI node." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "MPI distribution configuration." + }, "NoAuthenticationCredentials": { "type": "object", "required": [ @@ -20470,6 +26782,23 @@ ], "description": "Credentials that do not require authentication" }, + "NodeCollection": { + "type": "object", + "required": [ + "nodesValueType" + ], + "properties": { + "nodesValueType": { + "type": "string", + "description": "Type of the Nodes value." + } + }, + "discriminator": { + "propertyName": "nodesValueType", + "mapping": {} + }, + "description": "Nodes that user would like to start the service on." + }, "OAuthConsentRequestOutputItem": { "type": "object", "required": [ @@ -40306,6 +46635,51 @@ ] } }, + "Output": { + "type": "object", + "required": [ + "jobOutputType" + ], + "properties": { + "jobOutputType": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypes" + } + ], + "description": "Specifies the type of job output." + }, + "mode": { + "allOf": [ + { + "$ref": "#/components/schemas/InputOutputModes" + } + ], + "description": "Output Asset Delivery Mode." + }, + "assetName": { + "type": "string", + "description": "Name of the output data asset to register." + }, + "assetVersion": { + "type": "string", + "description": "Version of the output data asset to register." + }, + "uri": { + "type": "string", + "description": "Output Asset URI." + }, + "baseModelId": { + "type": "string", + "description": "Base model ID. Applies to safetensors_model outputs." + }, + "description": { + "type": "string", + "description": "Description for the output." + } + }, + "description": "Job output definition." + }, "PageOrder": { "type": "string", "enum": [ @@ -40502,6 +46876,174 @@ }, "description": "Paged collection of Insight items" }, + "PagedJob": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Job" + }, + "description": "The Job items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of Job items" + }, + "PagedJobArtifact": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobArtifact" + }, + "description": "The JobArtifact items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobArtifact items" + }, + "PagedJobAttempt": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobAttempt" + }, + "description": "The JobAttempt items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobAttempt items" + }, + "PagedJobMetric": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetric" + }, + "description": "The JobMetric items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetric items" + }, + "PagedJobMetricAggregate": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricAggregate" + }, + "description": "The JobMetricAggregate items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetricAggregate items" + }, + "PagedJobMetricLastValue": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricLastValue" + }, + "description": "The JobMetricLastValue items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetricLastValue items" + }, + "PagedJobMetricPoint": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricPoint" + }, + "description": "The JobMetricPoint items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetricPoint items" + }, + "PagedJobOutputReference": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobOutputReference" + }, + "description": "The JobOutputReference items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobOutputReference items" + }, "PagedManagedAgentIdentityBlueprint": { "type": "object", "required": [ @@ -40816,6 +47358,42 @@ }, "description": "A record mapping for a single protocol and its version." }, + "PyTorchDistribution": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "enum": [ + "PyTorch" + ], + "description": "Specifies the type of distribution framework." + }, + "processCountPerInstance": { + "type": "integer", + "format": "int32", + "description": "Number of processes per node." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "PyTorch distribution configuration." + }, + "QueueSettings": { + "type": "object", + "properties": { + "jobTier": { + "type": "string", + "description": "Controls the compute job tier." + } + }, + "description": "Queue settings for the job." + }, "RaiConfig": { "type": "object", "required": [ @@ -41976,6 +48554,44 @@ } ] }, + "SystemData": { + "type": "object", + "properties": { + "createdBy": { + "type": "string", + "description": "The identity that created the resource.", + "readOnly": true + }, + "createdByType": { + "type": "string", + "description": "The type of identity that created the resource.", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "The timestamp of resource creation (UTC).", + "readOnly": true + }, + "lastModifiedBy": { + "type": "string", + "description": "The identity that last modified the resource.", + "readOnly": true + }, + "lastModifiedByType": { + "type": "string", + "description": "The type of identity that last modified the resource.", + "readOnly": true + }, + "lastModifiedAt": { + "type": "string", + "format": "date-time", + "description": "The timestamp of resource last modification (UTC).", + "readOnly": true + } + }, + "description": "Metadata pertaining to creation and last modification of the resource." + }, "SystemMessage": { "type": "object", "required": [ @@ -42370,6 +48986,37 @@ ] } }, + "TensorFlowDistribution": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "enum": [ + "TensorFlow" + ], + "description": "Specifies the type of distribution framework." + }, + "workerCount": { + "type": "integer", + "format": "int32", + "description": "Number of workers. If not specified, will default to the instance count." + }, + "parameterServerCount": { + "type": "integer", + "format": "int32", + "description": "Number of parameter server tasks." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "TensorFlow distribution configuration." + }, "ToolCallOutputContent": { "anyOf": [ { diff --git a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp index ad4c5f3050f8..e4914301df09 100644 --- a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp +++ b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp @@ -75,3 +75,90 @@ interface Toolsets {} @@clientLocation(Azure.AI.Projects.Toolsets.getToolset, Toolsets); @@clientLocation(Azure.AI.Projects.Toolsets.listToolsets, Toolsets); @@clientLocation(Azure.AI.Projects.Toolsets.deleteToolset, Toolsets); + +interface Jobs {} +interface JobAttempts {} +interface JobArtifacts {} +interface JobAttemptArtifacts {} +interface JobMetrics {} +interface JobAttemptMetrics {} +interface JobOutputs {} +interface JobAttemptOutputs {} +interface Models {} + +@@clientLocation(Azure.AI.Projects.Jobs.createTrainingJob, Models); +@@clientLocation(Azure.AI.Projects.Jobs.list, Jobs); +@@clientLocation(Azure.AI.Projects.Jobs.get, Jobs); +@@clientLocation(Azure.AI.Projects.Jobs.beginDelete, Jobs); +@@clientLocation(Azure.AI.Projects.Jobs.beginCancel, Jobs); + +@@clientLocation(Azure.AI.Projects.JobAttempts.listJobAttempts, JobAttempts); +@@clientLocation(Azure.AI.Projects.JobAttempts.getJobAttempt, JobAttempts); + +@@clientLocation(Azure.AI.Projects.JobArtifacts.listJobArtifacts, JobArtifacts); +@@clientLocation(Azure.AI.Projects.JobArtifacts.getJobArtifactMetadata, + JobArtifacts +); +@@clientLocation(Azure.AI.Projects.JobArtifacts.getJobArtifactContentInfo, + JobArtifacts +); +@@clientLocation(Azure.AI.Projects.JobArtifacts.downloadJobArtifact, + JobArtifacts +); + +@@clientLocation(Azure.AI.Projects.JobAttemptArtifacts.listJobAttemptArtifacts, + JobAttemptArtifacts +); +@@clientLocation(Azure.AI.Projects.JobAttemptArtifacts.getJobAttemptArtifactMetadata, + JobAttemptArtifacts +); +@@clientLocation(Azure.AI.Projects.JobAttemptArtifacts.getJobAttemptArtifactContentInfo, + JobAttemptArtifacts +); +@@clientLocation(Azure.AI.Projects.JobAttemptArtifacts.downloadJobAttemptArtifact, + JobAttemptArtifacts +); + +@@clientLocation(Azure.AI.Projects.JobMetrics.listJobMetrics, JobMetrics); +@@clientLocation(Azure.AI.Projects.JobMetrics.getJobMetricLastValues, + JobMetrics +); +@@clientLocation(Azure.AI.Projects.JobMetrics.getJobMetric, JobMetrics); +@@clientLocation(Azure.AI.Projects.JobMetrics.getJobMetricAggregates, + JobMetrics +); +@@clientLocation(Azure.AI.Projects.JobMetrics.getJobMetricSamples, + JobMetrics +); +@@clientLocation(Azure.AI.Projects.JobMetrics.getJobMetricSample, + JobMetrics +); + +@@clientLocation(Azure.AI.Projects.JobAttemptMetrics.listJobAttemptMetrics, + JobAttemptMetrics +); +@@clientLocation(Azure.AI.Projects.JobAttemptMetrics.getJobAttemptMetricLastValues, + JobAttemptMetrics +); +@@clientLocation(Azure.AI.Projects.JobAttemptMetrics.getJobAttemptMetric, + JobAttemptMetrics +); +@@clientLocation(Azure.AI.Projects.JobAttemptMetrics.getJobAttemptMetricAggregates, + JobAttemptMetrics +); +@@clientLocation(Azure.AI.Projects.JobAttemptMetrics.getJobAttemptMetricSamples, + JobAttemptMetrics +); +@@clientLocation(Azure.AI.Projects.JobAttemptMetrics.getJobAttemptMetricSample, + JobAttemptMetrics +); + +@@clientLocation(Azure.AI.Projects.JobOutputs.listJobOutputs, JobOutputs); +@@clientLocation(Azure.AI.Projects.JobOutputs.getJobOutput, JobOutputs); + +@@clientLocation(Azure.AI.Projects.JobAttemptOutputs.listJobAttemptOutputs, + JobAttemptOutputs +); +@@clientLocation(Azure.AI.Projects.JobAttemptOutputs.getJobAttemptOutput, + JobAttemptOutputs +); diff --git a/specification/ai-foundry/data-plane/Foundry/src/common/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/common/models.tsp index 6948ebbcedf0..d22b8821885c 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/common/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/common/models.tsp @@ -68,6 +68,7 @@ union FoundryFeaturesOptInKeys { memory_stores_v1_preview: "MemoryStores=V1Preview", toolset_v1_preview: "Toolsets=V1Preview", agent_endpoint_v1_preview: "AgentEndpoints=V1Preview", + jobs_v1_preview: "Jobs=V1Preview", } alias WithRequiredFoundryPreviewHeader = { diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp new file mode 100644 index 000000000000..7696e37f1061 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp @@ -0,0 +1,684 @@ +import "../common/models.tsp"; +import "../common/service.tsp"; + +using TypeSpec.Http; + +namespace Azure.AI.Projects; + +#suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "Use an extensible union instead of a plain string" +@doc("Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null.") +@discriminator("distributionType") +model DistributionConfiguration { + @doc("Specifies the type of distribution framework.") + distributionType: string; +} + +@doc("PyTorch distribution configuration.") +model PyTorchDistribution extends DistributionConfiguration { + @doc("Specifies the type of distribution framework.") + distributionType: "PyTorch"; + + @doc("Number of processes per node.") + processCountPerInstance?: int32; +} + +@doc("MPI distribution configuration.") +model MpiDistribution extends DistributionConfiguration { + @doc("Specifies the type of distribution framework.") + distributionType: "Mpi"; + + @doc("Number of processes per MPI node.") + processCountPerNode?: int32; +} + +@doc("TensorFlow distribution configuration.") +model TensorFlowDistribution extends DistributionConfiguration { + @doc("Specifies the type of distribution framework.") + distributionType: "TensorFlow"; + + @doc("Number of workers. If not specified, will default to the instance count.") + workerCount?: int32; + + @doc("Number of parameter server tasks.") + parameterServerCount?: int32; +} + +@doc("Enum to determine the input/output data delivery mode.") +union InputOutputModes { + string, + + @doc("Read-only mount mode.") + ReadOnlyMount: "ReadOnlyMount", + + @doc("Read-write mount mode.") + ReadWriteMount: "ReadWriteMount", + + @doc("Download mode.") + Download: "Download", + + @doc("Direct mode.") + Direct: "Direct", + + @doc("Upload mode.") + Upload: "Upload", +} + +@doc("Type of job input/output asset.") +union AssetTypes { + string, + + @doc("URI file asset.") + UriFile: "uri_file", + + @doc("URI folder asset.") + UriFolder: "uri_folder", + + @doc("Safetensors model asset.") + SafetensorsModel: "safetensors_model", + + @doc("Literal value (inputs only).") + Literal: "literal", +} + +@doc("Job input definition.") +model Input { + @doc("Specifies the type of job input.") + @encodedName("application/json", "jobInputType") + type: AssetTypes; + + @doc("Input Asset URI. Required for uri_file, uri_folder, and safetensors_model types.") + @encodedName("application/json", "uri") + path?: string; + + @doc("Input Asset Delivery Mode. Applies to uri-based inputs.") + mode?: InputOutputModes; + + @doc("Literal value. Required for literal type.") + value?: string; +} + +@doc("Job output definition.") +model Output { + @doc("Specifies the type of job output.") + @encodedName("application/json", "jobOutputType") + type: AssetTypes; + + @doc("Output Asset Delivery Mode.") + mode?: InputOutputModes; + + @doc("Name of the output data asset to register.") + assetName?: string; + + @doc("Version of the output data asset to register.") + assetVersion?: string; + + @doc("Output Asset URI.") + uri?: string; + + @doc("Base model ID. Applies to safetensors_model outputs.") + baseModelId?: string; + + @doc("Description for the output.") + description?: string; +} + +#suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "Use an extensible union instead of a plain string" +@doc("Nodes that user would like to start the service on.") +@discriminator("nodesValueType") +model NodeCollection { + @doc("Type of the Nodes value.") + nodesValueType: string; +} + +@doc("All nodes means the service will be running on all of the nodes of the job.") +model AllNodes extends NodeCollection { + @doc("Type of the Nodes value.") + nodesValueType: "All"; +} + +@doc("Job endpoint definition.") +model JobService { + @doc("Endpoint type.") + jobServiceType?: string; + + @doc("Port for endpoint.") + port?: int32; + + @doc("Url for endpoint.") + endpoint?: string; + + @doc("Additional properties to set on the endpoint.") + properties?: Record; + + @doc("Nodes that user would like to start the service on. If Nodes is not set or set to null, the service will only be started on leader node.") + nodes?: AllNodes; + + @doc("Status of endpoint.") + @visibility(Lifecycle.Read) + status?: string; + + @doc("Any error in the service.") + @visibility(Lifecycle.Read) + errorMessage?: string; +} + +@doc("Compute Resource configuration for the job.") +model JobResourceConfiguration { + @doc("Optional number of instances or nodes used by the compute target.") + instanceCount?: int32; + + @doc("Optional type of VM used as supported by the compute target.") + instanceType?: string; + + @doc("Additional properties bag.") + properties?: Record; + + @doc("Size of the docker container's shared memory block. This should be in the format of (number)(unit) where number as to be greater than 0 and the unit can be one of b(bytes), k(kilobytes), m(megabytes), or g(gigabytes).") + shmSize?: string; + + @doc("Extra arguments to pass to the Docker run command. This would override any parameters that have already been set by the system, or in this section. This parameter is only supported for Azure ML compute types.") + dockerArgs?: string; +} + +@doc("Command Job limit class.") +model CommandJobLimits { + @doc("JobLimit type.") + jobLimitsType: "Command"; + + @doc("The max run duration in ISO 8601 format, after which the job will be cancelled. Only supports duration with precision as low as Seconds.") + timeout?: duration; +} + +@doc("Queue settings for the job.") +model QueueSettings { + @doc("Controls the compute job tier.") + jobTier?: string; +} + +@doc("Metadata pertaining to creation and last modification of the resource.") +model SystemData { + @doc("The identity that created the resource.") + @visibility(Lifecycle.Read) + createdBy?: string; + + @doc("The type of identity that created the resource.") + @visibility(Lifecycle.Read) + createdByType?: string; + + @doc("The timestamp of resource creation (UTC).") + @visibility(Lifecycle.Read) + createdAt?: utcDateTime; + + @doc("The identity that last modified the resource.") + @visibility(Lifecycle.Read) + lastModifiedBy?: string; + + @doc("The type of identity that last modified the resource.") + @visibility(Lifecycle.Read) + lastModifiedByType?: string; + + @doc("The timestamp of resource last modification (UTC).") + @visibility(Lifecycle.Read) + lastModifiedAt?: utcDateTime; +} + +@doc("Type of a job.") +union JobType { + string, + + @doc("Command job.") + Command: "Command", +} + +#suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "Use an extensible union instead of a plain string" +@doc("Base properties of a Job.") +@discriminator("jobType") +model JobProperties { + @doc("Job type.") + jobType: string; +} + +@doc("Properties of a Command Job.") +model CommandJob extends JobProperties { + @doc("Job type.") + jobType: "Command"; + + @doc("The command to execute on startup of the job.") + command: string; + + @doc("ACR path of environment.") + environmentImageReference: string; + + @doc("Display name of job.") + displayName?: string; + + @doc("The asset description text.") + description?: string; + + @doc("Tag dictionary. Tags can be added, removed, and updated.") + tags?: Record; + + @doc("The asset property dictionary.") + properties?: Record; + + @doc("Code asset reference.") + @encodedName("application/json", "codeId") + code?: string; + + @doc("Compute resource ID.") + @encodedName("application/json", "computeId") + compute: string; + + @doc("Mapping of input data bindings used in the job.") + inputs?: Record; + + @doc("Mapping of output data bindings used in the job.") + outputs?: Record; + + @doc("Environment variables included in the job.") + environmentVariables?: Record; + + @doc("Compute Resource configuration for the job.") + resources?: JobResourceConfiguration; + + @doc("Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null.") + distribution?: DistributionConfiguration; + + @doc("Command Job limit.") + limits?: CommandJobLimits; + + @doc("List of job services.") + @visibility(Lifecycle.Read) + services?: Record; + + @doc("Queue settings for the job.") + queueSettings?: QueueSettings; + + @doc("user-assigned managed identity") + userAssignedIdentityId?: string; + + @doc("Is the asset archived?") + isArchived?: boolean; + + @doc("Status of the job.") + @visibility(Lifecycle.Read) + status?: string; +} + +@doc("Job resource.") +@Rest.resource("jobs") +model Job { + @doc("The name of the Job. This is case-sensitive.") + @key("name") + @visibility(Lifecycle.Read) + name: string; + + @doc("The resource ID.") + @visibility(Lifecycle.Read) + id?: string; + + @doc("The resource type.") + @visibility(Lifecycle.Read) + type?: string; + + @doc("Properties of the job.") + properties: JobProperties; + + @doc("Metadata pertaining to creation and last modification of the resource.") + @visibility(Lifecycle.Read) + systemData?: SystemData; +} + +@doc("Response returned when a job delete operation is accepted asynchronously.") +model JobDeleteAcceptedResponse { + @statusCode statusCode: 202; + + @doc("URL to poll for the status of the delete operation.") + @header("Location") + location: string; + + @doc("Suggested delay in seconds before polling.") + @header("Retry-After") + retryAfter?: int32; +} + +@doc("Response returned when a job cancel operation is accepted asynchronously.") +model JobCancelAcceptedResponse { + @statusCode statusCode: 202; + + @doc("URL to poll for the status of the cancel operation.") + @header("Location") + location: string; + + @doc("Suggested delay in seconds before polling.") + @header("Retry-After") + retryAfter?: int32; +} + +@doc("Specifies which jobs to include in a list result based on their lifecycle state.") +union ListViewType { + string, + + @doc("Show only active (non-archived) jobs.") + ActiveOnly: "ActiveOnly", + + @doc("Show only archived jobs.") + ArchivedOnly: "ArchivedOnly", + + @doc("Show all jobs regardless of archived state.") + All: "All", +} + +@doc("Status of a job execution attempt.") +union JobAttemptStatus { + string, + + @doc("The attempt is queued.") + Queued: "Queued", + + @doc("The attempt is running.") + Running: "Running", + + @doc("The attempt completed successfully.") + Completed: "Completed", + + @doc("The attempt failed.") + Failed: "Failed", + + @doc("The attempt was canceled.") + Canceled: "Canceled", +} + +@doc("Warning emitted during a job attempt.") +model JobAttemptWarning { + @doc("Machine-readable warning code.") + code?: string; + + @doc("Human-readable warning message.") + message?: string; + + @doc("Additional warning details.") + details?: Record; +} + +@doc("Error emitted during a job attempt.") +model JobAttemptError { + @doc("Machine-readable error code.") + code?: string; + + @doc("Human-readable error message.") + message?: string; + + @doc("Additional error details.") + details?: Record; +} + +@doc("One execution attempt of a job.") +model JobAttempt { + @doc("The attempt identifier.") + @visibility(Lifecycle.Read) + id: string; + + @doc("The job name this attempt belongs to.") + @visibility(Lifecycle.Read) + jobName: string; + + @doc("The attempt status.") + @visibility(Lifecycle.Read) + status?: JobAttemptStatus; + + @doc("Additional status reason.") + @visibility(Lifecycle.Read) + statusReason?: string; + + @doc("Time the attempt started.") + @visibility(Lifecycle.Read) + startTimeUtc?: utcDateTime; + + @doc("Time the attempt ended.") + @visibility(Lifecycle.Read) + endTimeUtc?: utcDateTime; + + @doc("Most recent time the attempt started running.") + @visibility(Lifecycle.Read) + lastStartTimeUtc?: utcDateTime; + + @doc("Total compute duration consumed by the attempt.") + @visibility(Lifecycle.Read) + computeDuration?: duration; + + @doc("Queueing details associated with the attempt.") + @visibility(Lifecycle.Read) + queueingInfo?: Record; + + @doc("Compute details associated with the attempt.") + @visibility(Lifecycle.Read) + computeDetails?: Record; + + @doc("Terminal error for the attempt, if any.") + @visibility(Lifecycle.Read) + error?: JobAttemptError; + + @doc("Warnings emitted for the attempt.") + @visibility(Lifecycle.Read) + warnings?: JobAttemptWarning[]; + + @doc("Whether this attempt is the current attempt for the job.") + @visibility(Lifecycle.Read) + isCurrent?: boolean; +} + +@doc("Type of a job artifact.") +union JobArtifactType { + string, + + @doc("A file artifact.") + File: "File", + + @doc("A directory artifact.") + Directory: "Directory", +} + +@doc("Metadata for an artifact produced by or attached to a job.") +model JobArtifact { + @doc("Artifact path relative to the job artifact root.") + @visibility(Lifecycle.Read) + path: string; + + @doc("Artifact type.") + @visibility(Lifecycle.Read) + type?: JobArtifactType; + + @doc("Artifact size in bytes.") + @visibility(Lifecycle.Read) + size?: int64; + + @doc("Time the artifact was created.") + @visibility(Lifecycle.Read) + createdTimeUtc?: utcDateTime; + + @doc("Time the artifact was last updated.") + @visibility(Lifecycle.Read) + updatedTimeUtc?: utcDateTime; + + @doc("Service origin of the artifact.") + @visibility(Lifecycle.Read) + origin?: string; + + @doc("Diagnostic storage container identifier resolved by the service.") + @visibility(Lifecycle.Read) + container?: string; +} + +@doc("Content access information for a job artifact.") +model JobArtifactContentInfo { + @doc("Artifact path relative to the job artifact root.") + @visibility(Lifecycle.Read) + path: string; + + @doc("Download URI for the artifact content.") + @visibility(Lifecycle.Read) + contentUri?: url; + + @doc("MIME type of the content.") + @visibility(Lifecycle.Read) + contentType?: string; + + @doc("Time the content URI expires.") + @visibility(Lifecycle.Read) + expiresAtUtc?: utcDateTime; +} + +@doc("The kind of metric emitted by a job.") +union JobMetricType { + string, + + @doc("Scalar metric values.") + Scalar: "Scalar", + + @doc("Table metric values.") + Table: "Table", + + @doc("Image metric values.") + Image: "Image", +} + +@doc("Metadata for a metric emitted by a job or attempt.") +model JobMetric { + @doc("Metric name.") + @visibility(Lifecycle.Read) + name: string; + + @doc("Metric type.") + @visibility(Lifecycle.Read) + metricType?: JobMetricType; + + @doc("Column metadata for structured metric values.") + @visibility(Lifecycle.Read) + columns?: Record; +} + +@doc("A metric data point.") +model JobMetricPoint { + @doc("Metric identifier.") + @visibility(Lifecycle.Read) + metricId?: string; + + @doc("Metric step.") + @visibility(Lifecycle.Read) + step?: int64; + + @doc("Time the metric point was created.") + @visibility(Lifecycle.Read) + createdUtc?: utcDateTime; + + @doc("Metric data values.") + @visibility(Lifecycle.Read) + data?: Record; +} + +@doc("Latest value for a metric.") +model JobMetricLastValue { + @doc("Metric name.") + @visibility(Lifecycle.Read) + name: string; + + @doc("Latest metric point.") + @visibility(Lifecycle.Read) + value?: JobMetricPoint; +} + +@doc("Aggregated values for a metric.") +model JobMetricAggregate { + @doc("Metric name.") + @visibility(Lifecycle.Read) + name: string; + + @doc("Aggregate window start.") + @visibility(Lifecycle.Read) + startUtc?: utcDateTime; + + @doc("Aggregate window end.") + @visibility(Lifecycle.Read) + endUtc?: utcDateTime; + + @doc("Aggregate values.") + @visibility(Lifecycle.Read) + values?: Record; +} + +@doc("Sampled values for a metric.") +model JobMetricSample { + @doc("Metric name.") + @visibility(Lifecycle.Read) + name: string; + + @doc("Sampled metric points.") + @visibility(Lifecycle.Read) + points: JobMetricPoint[]; +} + +@doc("Named output produced by a job.") +model JobOutputReference { + @doc("Output name.") + @visibility(Lifecycle.Read) + name: string; + + @doc("Output asset type.") + @visibility(Lifecycle.Read) + type?: AssetTypes; + + @doc("Output delivery mode.") + @visibility(Lifecycle.Read) + mode?: InputOutputModes; + + @doc("Output storage URI.") + @visibility(Lifecycle.Read) + uri?: string; + + @doc("Registered asset name, if the output produced an asset.") + @visibility(Lifecycle.Read) + assetName?: string; + + @doc("Registered asset version, if the output produced an asset.") + @visibility(Lifecycle.Read) + assetVersion?: string; + + @doc("Base model ID for model outputs.") + @visibility(Lifecycle.Read) + baseModelId?: string; + + @doc("Output description.") + @visibility(Lifecycle.Read) + description?: string; +} + +alias JobChildListQueryParameters = { + @doc("Maximum number of items to return.") + @query limit?: int32; + + @doc("Continuation token returned by a previous list request.") + @query @continuationToken skipToken?: string; +}; + +alias JobArtifactListQueryParameters = JobChildListQueryParameters & { + @doc("Artifact path prefix to list.") + @query pathPrefix?: string; +}; + +alias JobMetricQueryParameters = { + @doc("Start of the metric time range.") + @query startTimeUtc?: utcDateTime; + + @doc("End of the metric time range.") + @query endTimeUtc?: utcDateTime; + + @doc("Minimum metric step to include.") + @query minStep?: int64; + + @doc("Maximum metric step to include.") + @query maxStep?: int64; + + @doc("Maximum number of metric points to return.") + @query limit?: int32; +}; diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp new file mode 100644 index 000000000000..d66b9f1175dc --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp @@ -0,0 +1,575 @@ +import "./models.tsp"; +import "../common/models.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using Azure.Core.Traits; + +namespace Azure.AI.Projects; + +alias JobsPreviewHeader = WithRequiredFoundryPreviewHeader; + +alias JobsFilterQueryParams = { + @doc("Filter by job type (e.g. 'Command').") + @query + jobType?: JobType; + + @doc("Filter jobs by tag in the format 'key=value' (e.g., 'framework=pytorch').") + @query + tag?: string; + + @doc("Specifies which view type to apply when listing jobs.") + @query + listViewType?: ListViewType; + + @doc("Comma-separated user property names and optionally values. Example: prop1,prop2=value2.") + @query + properties?: string; +}; + +alias JobOperations = FoundryAzureOperations<{}>; + +@tag("Jobs") +interface Jobs { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "We need explicit definition for header support" + @doc("List Jobs.") + @Rest.listsResource(Job) + list is Azure.Core.Foundations.ResourceList< + Job, + JobsFilterQueryParams & JobsPreviewHeader, + Azure.Core.Page + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "We need explicit definition for header support" + @doc("Get a Job by name.") + @get + get is Azure.Core.Foundations.ResourceOperation< + Job, + { + ...JobsPreviewHeader; + }, + Azure.Core.Foundations.ResourceOkResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Jobs use Operation-Id based idempotent submission." + @doc("Create and execute a model training Job.") + @post + @route("/jobs") + createTrainingJob is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("Idempotency key used to safely retry job creation.") + @header("Operation-Id") + operationId?: string; + + @doc("The job to create.") + @bodyRoot + job: Job; + }, + ResourceCreatedResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "LRO delete returns 202 with Location header for polling, or 204 when job not found" + #suppress "@azure-tools/typespec-azure-core/no-response-body" "Delete LRO returns 202 with Location header, 204 with no body" + @doc("Delete a Job by name. Returns 202 Accepted with a Location header to poll for completion, or 204 if the job does not exist.") + @delete + beginDelete is Azure.Core.Foundations.ResourceOperation< + Job, + { + ...JobsPreviewHeader; + }, + JobDeleteAcceptedResponse | Http.NoContentResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "LRO cancel returns 200 synchronously or 202 with Location header for async polling" + #suppress "@azure-tools/typespec-azure-core/no-response-body" "Cancel LRO returns 200 or 202 with Location header, no body" + @doc("Cancel a Job by name. Returns 200 if cancelled immediately, or 202 Accepted with a Location header to poll for completion.") + @post + @Rest.action("cancel") + @actionSeparator(":") + beginCancel is Azure.Core.Foundations.ResourceOperation< + Job, + { + ...JobsPreviewHeader; + }, + Http.OkResponse | JobCancelAcceptedResponse + >; +} // interface Jobs + +@tag("Jobs") +interface JobAttempts { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job attempts are projected from job execution history." + @doc("List execution attempts for a job.") + @get + @route("/jobs/{jobName}/attempts") + listJobAttempts is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + ...JobChildListQueryParameters; + }, + Azure.Core.Page + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job attempts are projected from job execution history." + @doc("Get one execution attempt for a job.") + @get + @route("/jobs/{jobName}/attempts/{attemptId}") + getJobAttempt is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The attempt identifier.") + @path attemptId: string; + }, + JobAttempt + >; +} + +@tag("Jobs") +interface JobArtifacts { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." + @doc("List artifacts for the current view of a job.") + @get + @route("/jobs/{jobName}/artifacts") + listJobArtifacts is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + ...JobArtifactListQueryParameters; + }, + Azure.Core.Page + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." + @doc("Get metadata for a job artifact.") + @get + @route("/jobs/{jobName}/artifacts/{artifactPath}:metadata") + getJobArtifactMetadata is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The artifact path.") + @path artifactPath: string; + }, + JobArtifact + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." + @doc("Get download information for a job artifact.") + @get + @route("/jobs/{jobName}/artifacts/{artifactPath}:contentInfo") + getJobArtifactContentInfo is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The artifact path.") + @path artifactPath: string; + }, + JobArtifactContentInfo + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." + #suppress "@azure-tools/typespec-azure-core/byos" "Job artifact content is produced by the job and streamed back to the caller." + @doc("Download job artifact content.") + @get + @route("/jobs/{jobName}/artifacts/{artifactPath}:content") + downloadJobArtifact is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The artifact path.") + @path artifactPath: string; + }, + bytes + >; +} + +@tag("Jobs") +interface JobAttemptArtifacts { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." + @doc("List artifacts for a specific job attempt.") + @get + @route("/jobs/{jobName}/attempts/{attemptId}/artifacts") + listJobAttemptArtifacts is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The attempt identifier.") + @path attemptId: string; + + ...JobArtifactListQueryParameters; + }, + Azure.Core.Page + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." + @doc("Get metadata for an artifact from a specific job attempt.") + @get + @route("/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:metadata") + getJobAttemptArtifactMetadata is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The attempt identifier.") + @path attemptId: string; + + @doc("The artifact path.") + @path artifactPath: string; + }, + JobArtifact + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." + @doc("Get download information for an artifact from a specific job attempt.") + @get + @route("/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:contentInfo") + getJobAttemptArtifactContentInfo is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The attempt identifier.") + @path attemptId: string; + + @doc("The artifact path.") + @path artifactPath: string; + }, + JobArtifactContentInfo + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." + #suppress "@azure-tools/typespec-azure-core/byos" "Job artifact content is produced by the job and streamed back to the caller." + @doc("Download artifact content from a specific job attempt.") + @get + @route("/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:content") + downloadJobAttemptArtifact is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The attempt identifier.") + @path attemptId: string; + + @doc("The artifact path.") + @path artifactPath: string; + }, + bytes + >; +} + +@tag("Jobs") +interface JobMetrics { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." + @doc("List metrics emitted by the current view of a job.") + @get + @route("/jobs/{jobName}/metrics") + listJobMetrics is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + ...JobChildListQueryParameters; + }, + Azure.Core.Page + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." + @doc("Get the latest values for metrics emitted by the current view of a job.") + @get + @route("/jobs/{jobName}/metrics:lastValues") + getJobMetricLastValues is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + }, + Azure.Core.Page + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." + @doc("Get the full history for a job metric.") + @get + @route("/jobs/{jobName}/metrics/{metricName}") + getJobMetric is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The metric name.") + @path metricName: string; + + ...JobMetricQueryParameters; + }, + Azure.Core.Page + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." + @doc("Get aggregate values for a job metric.") + @get + @route("/jobs/{jobName}/metrics/{metricName}:aggregates") + getJobMetricAggregates is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The metric name.") + @path metricName: string; + + ...JobMetricQueryParameters; + }, + Azure.Core.Page + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." + @doc("Get sampled values for a job metric.") + @get + @route("/jobs/{jobName}/metrics/{metricName}:samples") + getJobMetricSamples is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The metric name.") + @path metricName: string; + + ...JobMetricQueryParameters; + }, + JobMetricSample + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." + @doc("Get one sampled value or window for a job metric.") + @get + @route("/jobs/{jobName}/metrics/{metricName}:sample") + getJobMetricSample is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The metric name.") + @path metricName: string; + + ...JobMetricQueryParameters; + }, + JobMetricSample + >; +} + +@tag("Jobs") +interface JobAttemptMetrics { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("List metrics emitted by a specific job attempt.") + @get + @route("/jobs/{jobName}/attempts/{attemptId}/metrics") + listJobAttemptMetrics is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The attempt identifier.") + @path attemptId: string; + + ...JobChildListQueryParameters; + }, + Azure.Core.Page + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("Get latest metric values for a specific job attempt.") + @get + @route("/jobs/{jobName}/attempts/{attemptId}/metrics:lastValues") + getJobAttemptMetricLastValues is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The attempt identifier.") + @path attemptId: string; + }, + Azure.Core.Page + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("Get the full history for a metric from a specific job attempt.") + @get + @route("/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}") + getJobAttemptMetric is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The attempt identifier.") + @path attemptId: string; + + @doc("The metric name.") + @path metricName: string; + + ...JobMetricQueryParameters; + }, + Azure.Core.Page + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("Get aggregate metric values from a specific job attempt.") + @get + @route("/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates") + getJobAttemptMetricAggregates is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The attempt identifier.") + @path attemptId: string; + + @doc("The metric name.") + @path metricName: string; + + ...JobMetricQueryParameters; + }, + Azure.Core.Page + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("Get sampled metric values from a specific job attempt.") + @get + @route("/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples") + getJobAttemptMetricSamples is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The attempt identifier.") + @path attemptId: string; + + @doc("The metric name.") + @path metricName: string; + + ...JobMetricQueryParameters; + }, + JobMetricSample + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("Get one sampled value or window from a specific job attempt.") + @get + @route("/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample") + getJobAttemptMetricSample is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The attempt identifier.") + @path attemptId: string; + + @doc("The metric name.") + @path metricName: string; + + ...JobMetricQueryParameters; + }, + JobMetricSample + >; +} + +@tag("Jobs") +interface JobOutputs { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job outputs are projected from job outputs and asset relationships." + @doc("List outputs produced by a job.") + @get + @route("/jobs/{jobName}/outputs") + listJobOutputs is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + ...JobChildListQueryParameters; + }, + Azure.Core.Page + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job outputs are projected from job outputs and asset relationships." + @doc("Get one output produced by a job.") + @get + @route("/jobs/{jobName}/outputs/{outputName}") + getJobOutput is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The output name.") + @path outputName: string; + }, + JobOutputReference + >; +} + +@tag("Jobs") +interface JobAttemptOutputs { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt outputs are projected from attempt output state and asset relationships." + @doc("List outputs produced by a specific job attempt.") + @get + @route("/jobs/{jobName}/attempts/{attemptId}/outputs") + listJobAttemptOutputs is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The attempt identifier.") + @path attemptId: string; + + ...JobChildListQueryParameters; + }, + Azure.Core.Page + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt outputs are projected from attempt output state and asset relationships." + @doc("Get one output produced by a specific job attempt.") + @get + @route("/jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}") + getJobAttemptOutput is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The job name.") + @path jobName: string; + + @doc("The attempt identifier.") + @path attemptId: string; + + @doc("The output name.") + @path outputName: string; + }, + JobOutputReference + >; +} diff --git a/specification/ai-foundry/data-plane/Foundry/src/mlflow/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/mlflow/models.tsp new file mode 100644 index 000000000000..6950fb5c45fd --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/src/mlflow/models.tsp @@ -0,0 +1,66 @@ +namespace Azure.AI.Projects.Mlflow; + +using TypeSpec.Http; + +@doc("Generic MLflow compatibility request payload.") +model MlflowPayload { + ...Record; +} + +@doc("Generic MLflow compatibility response payload.") +model MlflowResponse { + ...Record; +} + +alias MlflowPaginationQueryParameters = { + @doc("Maximum number of items to return.") + @query max_results?: int32; + + @doc("Token used to retrieve the next page of results.") + @query page_token?: string; +}; + +alias MlflowExperimentQueryParameters = { + @doc("MLflow experiment identifier.") + @query experiment_id?: string; + + @doc("MLflow experiment name.") + @query experiment_name?: string; +}; + +alias MlflowRunQueryParameters = { + @doc("MLflow run identifier.") + @query run_id?: string; + + @doc("MLflow run UUID.") + @query run_uuid?: string; +}; + +alias MlflowRegisteredModelQueryParameters = { + @doc("Registered model name.") + @query name?: string; +}; + +alias MlflowModelVersionQueryParameters = { + @doc("Registered model name.") + @query name?: string; + + @doc("Model version.") + @query version?: string; +}; + +alias MlflowArtifactListQueryParameters = MlflowRunQueryParameters & { + @doc("Artifact path to list.") + @query path?: string; +}; + +alias MlflowMetricHistoryQueryParameters = MlflowRunQueryParameters & { + @doc("Metric key.") + @query metric_key?: string; + + @doc("Maximum number of metric points to return.") + @query max_results?: int32; + + @doc("Token used to retrieve the next page of metric points.") + @query page_token?: string; +}; \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/src/mlflow/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/mlflow/routes.tsp new file mode 100644 index 000000000000..06a9e89e3fac --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/src/mlflow/routes.tsp @@ -0,0 +1,415 @@ +import "./models.tsp"; +import "../common/models.tsp"; + +using TypeSpec.Http; + +namespace Azure.AI.Projects.Mlflow; + +@tag("MLflow Experiments") +@route("/mlflow/api/2.0/mlflow/experiments") +interface Experiments { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Create an MLflow experiment.") + @post + @route("create") + create is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Get an MLflow experiment by ID.") + @get + @route("get") + get is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowExperimentQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Get an MLflow experiment by name.") + @get + @route("get-by-name") + getByName is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowExperimentQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Search MLflow experiments.") + @post + @route("search") + search is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Update MLflow experiment metadata.") + @post + @route("update") + update is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Delete an MLflow experiment.") + @post + @route("delete") + delete is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Restore a deleted MLflow experiment.") + @post + @route("restore") + restore is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Set an MLflow experiment tag.") + @post + @route("set-experiment-tag") + setTag is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; +} + +@tag("MLflow Runs") +@route("/mlflow/api/2.0/mlflow/runs") +interface Runs { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Create an MLflow run.") + @post + @route("create") + create is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Get an MLflow run.") + @get + @route("get") + get is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowRunQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Search MLflow runs.") + @post + @route("search") + search is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Update MLflow run metadata or status.") + @post + @route("update") + update is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Delete an MLflow run.") + @post + @route("delete") + delete is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Restore a deleted MLflow run.") + @post + @route("restore") + restore is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Log a batch of metrics, parameters, and tags to an MLflow run.") + @post + @route("log-batch") + logBatch is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Log one metric to an MLflow run.") + @post + @route("log-metric") + logMetric is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Log one parameter to an MLflow run.") + @post + @route("log-parameter") + logParameter is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Set an MLflow run tag.") + @post + @route("set-tag") + setTag is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Delete an MLflow run tag.") + @post + @route("delete-tag") + deleteTag is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Log MLflow model metadata.") + @post + @route("log-model") + logModel is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Log MLflow run input relationships.") + @post + @route("log-inputs") + logInputs is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; +} + +@tag("MLflow Metrics") +interface Metrics { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Get MLflow metric history.") + @get + @route("/mlflow/api/2.0/mlflow/metrics/get-history") + getHistory is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowMetricHistoryQueryParameters, + MlflowResponse + >; +} + +@tag("MLflow Artifacts") +interface Artifacts { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("List MLflow artifacts.") + @get + @route("/mlflow/api/2.0/mlflow/artifacts/list") + list is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowArtifactListQueryParameters, + MlflowResponse + >; +} + +@tag("MLflow Registered Models") +@route("/mlflow/api/2.0/mlflow/registered-models") +interface RegisteredModels { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Create an MLflow registered model.") + @post + @route("create") + create is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Update an MLflow registered model.") + @patch + @route("update") + update is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Delete an MLflow registered model.") + @delete + @route("delete") + delete is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowRegisteredModelQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Get an MLflow registered model.") + @get + @route("get") + get is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowRegisteredModelQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("List MLflow registered models.") + @get + @route("list") + list is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowPaginationQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Search MLflow registered models.") + @get + @route("search") + search is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowPaginationQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Set an MLflow registered-model tag.") + @post + @route("set-tag") + setTag is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Delete an MLflow registered-model tag.") + @delete + @route("delete-tag") + deleteTag is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowRegisteredModelQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Get latest versions for an MLflow registered model.") + @get + @route("get-latest-versions") + getLatestVersions is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowRegisteredModelQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Rename an MLflow registered model.") + @post + @route("rename") + rename is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; +} + +@tag("MLflow Model Versions") +@route("/mlflow/api/2.0/mlflow/model-versions") +interface ModelVersions { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Create an MLflow model version.") + @post + @route("create") + create is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Update an MLflow model version.") + @patch + @route("update") + update is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Transition an MLflow model version stage.") + @post + @route("transition-stage") + transitionStage is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Delete an MLflow model version.") + @delete + @route("delete") + delete is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowModelVersionQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Get an MLflow model version.") + @get + @route("get") + get is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowModelVersionQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Search MLflow model versions.") + @get + @route("search") + search is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowPaginationQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Get an MLflow model version download URI.") + @get + @route("get-download-uri") + getDownloadUri is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowModelVersionQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Set an MLflow model-version tag.") + @post + @route("set-tag") + setTag is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Delete an MLflow model-version tag.") + @delete + @route("delete-tag") + deleteTag is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowModelVersionQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Get an MLflow model version storage location URI.") + @post + @route("get-storage-location-uri") + getStorageLocationUri is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, + MlflowResponse + >; +} \ No newline at end of file From aff30b5a995fe15cc1ea609b9e2f9e2b8e0fc21d Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Mon, 4 May 2026 18:36:05 -0700 Subject: [PATCH 02/37] fix(ai-foundry): sync training job surface Update the Foundry training job TypeSpec, generated OpenAPI output, and examples from the latest PR bundle. Rename the generated examples from Jobs_* to TrainingJobs_* to match the updated operation surface. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot (github-copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ai-foundry/data-plane/Foundry/client.tsp | 40 +- ...iningJobs_BeginCancel_MaximumSet_Gen.json} | 4 +- ...iningJobs_BeginCancel_MinimumSet_Gen.json} | 4 +- ...iningJobs_BeginDelete_MaximumSet_Gen.json} | 4 +- ...iningJobs_BeginDelete_MinimumSet_Gen.json} | 4 +- ...> TrainingJobs_Create_MaximumSet_Gen.json} | 6 +- ...> TrainingJobs_Create_MinimumSet_Gen.json} | 4 +- ...n => TrainingJobs_Get_MaximumSet_Gen.json} | 6 +- ...n => TrainingJobs_Get_MinimumSet_Gen.json} | 4 +- ... => TrainingJobs_List_MaximumSet_Gen.json} | 6 +- ... => TrainingJobs_List_MinimumSet_Gen.json} | 4 +- .../v1/microsoft-foundry-openapi3.json | 10558 +++++++-------- .../microsoft-foundry-openapi3.json | 11302 ++++++++-------- .../Foundry/relocate-beta-operations.tsp | 128 +- .../data-plane/Foundry/src/jobs/models.tsp | 104 +- .../data-plane/Foundry/src/jobs/routes.tsp | 481 +- 16 files changed, 11263 insertions(+), 11396 deletions(-) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Jobs_BeginCancel_MaximumSet_Gen.json => TrainingJobs_BeginCancel_MaximumSet_Gen.json} (79%) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Jobs_BeginCancel_MinimumSet_Gen.json => TrainingJobs_BeginCancel_MinimumSet_Gen.json} (55%) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Jobs_BeginDelete_MaximumSet_Gen.json => TrainingJobs_BeginDelete_MaximumSet_Gen.json} (81%) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Jobs_BeginDelete_MinimumSet_Gen.json => TrainingJobs_BeginDelete_MinimumSet_Gen.json} (55%) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Jobs_CreateTrainingJob_MaximumSet_Gen.json => TrainingJobs_Create_MaximumSet_Gen.json} (97%) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Jobs_CreateTrainingJob_MinimumSet_Gen.json => TrainingJobs_Create_MinimumSet_Gen.json} (92%) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Jobs_Get_MaximumSet_Gen.json => TrainingJobs_Get_MaximumSet_Gen.json} (95%) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Jobs_Get_MinimumSet_Gen.json => TrainingJobs_Get_MinimumSet_Gen.json} (83%) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Jobs_List_MaximumSet_Gen.json => TrainingJobs_List_MaximumSet_Gen.json} (97%) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Jobs_List_MinimumSet_Gen.json => TrainingJobs_List_MinimumSet_Gen.json} (84%) diff --git a/specification/ai-foundry/data-plane/Foundry/client.tsp b/specification/ai-foundry/data-plane/Foundry/client.tsp index a6ede7aa6904..074490f4e278 100644 --- a/specification/ai-foundry/data-plane/Foundry/client.tsp +++ b/specification/ai-foundry/data-plane/Foundry/client.tsp @@ -43,7 +43,7 @@ using Azure.AI.Projects; @@clientNamespace(OpenAI, "azure.ai.projects", "python"); // -------------------------------------------------------------------------------- -// Agents sub‐client +// Agents subΓÇÉclient // -------------------------------------------------------------------------------- // Use short form method names @@ -141,7 +141,7 @@ using Azure.AI.Projects; @@clientName(MemoryStoreObject, "MemoryStore", "javascript"); // -------------------------------------------------------------------------------- -// Responses sub‐client +// Responses subΓÇÉclient // -------------------------------------------------------------------------------- // Allow assigning a `dict[str, Any]` object directly to the "schema" property of TextResponseFormatJsonSchema @@ -157,7 +157,7 @@ using Azure.AI.Projects; ); // -------------------------------------------------------------------------------- -// Evaluators sub‐client +// Evaluators subΓÇÉclient // -------------------------------------------------------------------------------- @@clientName(Evaluators.listLatestVersions, "list"); @@clientName(Evaluators.startPendingUpload, "pendingUpload"); @@ -167,13 +167,13 @@ using Azure.AI.Projects; @@alternateType(EvaluatorVersion.modified_at, utcDateTime, "python"); // -------------------------------------------------------------------------------- -// Insights sub‐client +// Insights subΓÇÉclient // -------------------------------------------------------------------------------- @@clientName(Azure.AI.Projects.Insight.id, "insight_id"); @@clientName(InsightsGetParams.id, "insight_id"); // -------------------------------------------------------------------------------- -// Datasets sub‐client +// Datasets subΓÇÉclient // -------------------------------------------------------------------------------- // Shorter method names for SDK datasets operations @@ -188,7 +188,7 @@ using Azure.AI.Projects; @@clientName(SasCredential, "BlobReferenceSasCredential"); // Not to be confused with class "SASCredentials" // -------------------------------------------------------------------------------- -// Indexes sub‐client +// Indexes subΓÇÉclient // -------------------------------------------------------------------------------- // Shorter method names for SDK Index operations @@ -198,7 +198,7 @@ using Azure.AI.Projects; @@clientName(Indexes.createOrUpdateVersion, "createOrUpdate"); // -------------------------------------------------------------------------------- -// Schedules sub‐client +// Schedules subΓÇÉclient // -------------------------------------------------------------------------------- @@clientName(SchedulesCreateOrUpdateParams.resource, "schedule"); @@ -213,7 +213,7 @@ using Azure.AI.Projects; @@alternateType(ScheduleRun.triggerTime, utcDateTime, "python"); // -------------------------------------------------------------------------------- -// Toolsets sub‐client +// Toolsets subΓÇÉclient // -------------------------------------------------------------------------------- @@clientName(Toolsets.createToolset, "create"); @@ -223,7 +223,7 @@ using Azure.AI.Projects; @@clientName(Toolsets.deleteToolset, "delete"); // -------------------------------------------------------------------------------- -// Connections sub‐client +// Connections subΓÇÉclient // -------------------------------------------------------------------------------- // Make these two internal, since all SDKs hand-write a single public method with boolean "includeCredentials" @@ -232,27 +232,31 @@ using Azure.AI.Projects; @@access(Connections.getWithCredentials, Access.internal); // -------------------------------------------------------------------------------- -// Deployment sub‐client +// Deployment subΓÇÉclient // -------------------------------------------------------------------------------- // Less generic names @@clientName(Sku, "ModelDeploymentSku"); -@@clientName(Azure.AI.Projects.Jobs.get, "get", "python"); -@@clientName(Azure.AI.Projects.Jobs.list, "list", "python"); -@@clientName(Azure.AI.Projects.Jobs.createTrainingJob, - "create_training_job", +@@clientName(Azure.AI.Projects.TrainingJobs.get, "get", "python"); +@@clientName(Azure.AI.Projects.TrainingJobs.list, "list", "python"); +@@clientName(Azure.AI.Projects.TrainingJobs.create, "create", "python"); +@@clientName(Azure.AI.Projects.TrainingJobs.create, "create", "javascript"); +@@clientName(Azure.AI.Projects.Beta.Model, "model", "python"); +@@clientName(Azure.AI.Projects.Beta.Model, "model", "javascript"); +@@clientName(Azure.AI.Projects.Beta.Model.TrainingJobs, + "training_jobs", "python" ); -@@clientName(Azure.AI.Projects.Jobs.createTrainingJob, - "createTrainingJob", +@@clientName(Azure.AI.Projects.Beta.Model.TrainingJobs, + "trainingJobs", "javascript" ); -@@clientName(Azure.AI.Projects.Jobs.beginDelete, +@@clientName(Azure.AI.Projects.TrainingJobs.beginDelete, "begin_delete", "python" ); -@@clientName(Azure.AI.Projects.Jobs.beginCancel, +@@clientName(Azure.AI.Projects.TrainingJobs.beginCancel, "begin_cancel", "python" ); diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginCancel_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginCancel_MaximumSet_Gen.json similarity index 79% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginCancel_MaximumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginCancel_MaximumSet_Gen.json index 6abe5ceac72b..019686c1aea3 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginCancel_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginCancel_MaximumSet_Gen.json @@ -1,6 +1,6 @@ { - "title": "Jobs_BeginCancel_MaximumSet", - "operationId": "Jobs_BeginCancel", + "title": "TrainingJobs_BeginCancel_MaximumSet", + "operationId": "TrainingJobs_BeginCancel", "parameters": { "api-version": "v1", "name": "my_training_job_01", diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginCancel_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginCancel_MinimumSet_Gen.json similarity index 55% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginCancel_MinimumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginCancel_MinimumSet_Gen.json index 9d620fdc1f83..da52a6797d8d 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginCancel_MinimumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginCancel_MinimumSet_Gen.json @@ -1,6 +1,6 @@ { - "title": "Jobs_BeginCancel_MinimumSet", - "operationId": "Jobs_BeginCancel", + "title": "TrainingJobs_BeginCancel_MinimumSet", + "operationId": "TrainingJobs_BeginCancel", "parameters": { "api-version": "v1", "name": "my_training_job_01" diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginDelete_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginDelete_MaximumSet_Gen.json similarity index 81% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginDelete_MaximumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginDelete_MaximumSet_Gen.json index 9bc226e831fa..d090b6e5c8c8 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginDelete_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginDelete_MaximumSet_Gen.json @@ -1,6 +1,6 @@ { - "title": "Jobs_BeginDelete_MaximumSet", - "operationId": "Jobs_BeginDelete", + "title": "TrainingJobs_BeginDelete_MaximumSet", + "operationId": "TrainingJobs_BeginDelete", "parameters": { "api-version": "v1", "name": "my_training_job_01", diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginDelete_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginDelete_MinimumSet_Gen.json similarity index 55% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginDelete_MinimumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginDelete_MinimumSet_Gen.json index 7a70e68f0691..2610a55fd71b 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_BeginDelete_MinimumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginDelete_MinimumSet_Gen.json @@ -1,6 +1,6 @@ { - "title": "Jobs_BeginDelete_MinimumSet", - "operationId": "Jobs_BeginDelete", + "title": "TrainingJobs_BeginDelete_MinimumSet", + "operationId": "TrainingJobs_BeginDelete", "parameters": { "api-version": "v1", "name": "my_training_job_01" diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_CreateTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json similarity index 97% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_CreateTrainingJob_MaximumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json index 0835d55a5063..d33f6035a429 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_CreateTrainingJob_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json @@ -1,6 +1,6 @@ { - "title": "Jobs_CreateTrainingJob_MaximumSet", - "operationId": "Jobs_CreateTrainingJob", + "title": "TrainingJobs_Create_MaximumSet", + "operationId": "TrainingJobs_Create", "parameters": { "api-version": "v1", "Operation-Id": "create-my-training-job-01", @@ -83,7 +83,7 @@ "body": { "id": "my_training_job_01", "name": "my_training_job_01", - "type": "Microsoft.MachineLearningServices/workspaces/jobs", + "type": "Microsoft.MachineLearningServices/workspaces/trainingJobs", "properties": { "jobType": "Command", "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_CreateTrainingJob_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json similarity index 92% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_CreateTrainingJob_MinimumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json index 1339c8e16929..6b460ff85b5e 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_CreateTrainingJob_MinimumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json @@ -1,6 +1,6 @@ { - "title": "Jobs_CreateTrainingJob_MinimumSet", - "operationId": "Jobs_CreateTrainingJob", + "title": "TrainingJobs_Create_MinimumSet", + "operationId": "TrainingJobs_Create", "parameters": { "api-version": "v1", "Operation-Id": "create-my-training-job-01", diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_Get_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json similarity index 95% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_Get_MaximumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json index e8eb7b22a070..7cba48755498 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_Get_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json @@ -1,6 +1,6 @@ { - "title": "Jobs_Get_MaximumSet", - "operationId": "Jobs_Get", + "title": "TrainingJobs_Get_MaximumSet", + "operationId": "TrainingJobs_Get", "parameters": { "api-version": "v1", "name": "my_training_job_01", @@ -12,7 +12,7 @@ "body": { "id": "my_training_job_01", "name": "my_training_job_01", - "type": "Microsoft.MachineLearningServices/workspaces/jobs", + "type": "Microsoft.MachineLearningServices/workspaces/trainingJobs", "properties": { "jobType": "Command", "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_Get_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MinimumSet_Gen.json similarity index 83% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_Get_MinimumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MinimumSet_Gen.json index 4adbae63ddba..b4f26effd1fc 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_Get_MinimumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MinimumSet_Gen.json @@ -1,6 +1,6 @@ { - "title": "Jobs_Get_MinimumSet", - "operationId": "Jobs_Get", + "title": "TrainingJobs_Get_MinimumSet", + "operationId": "TrainingJobs_Get", "parameters": { "api-version": "v1", "name": "my_training_job_01" diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_List_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MaximumSet_Gen.json similarity index 97% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_List_MaximumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MaximumSet_Gen.json index 7c5ca1c2f887..537cdd6ca8aa 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_List_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MaximumSet_Gen.json @@ -1,6 +1,6 @@ { - "title": "Jobs_List_MaximumSet", - "operationId": "Jobs_List", + "title": "TrainingJobs_List_MaximumSet", + "operationId": "TrainingJobs_List", "parameters": { "api-version": "v1", "jobType": "Command", @@ -17,7 +17,7 @@ { "id": "my_training_job_01", "name": "my_training_job_01", - "type": "Microsoft.MachineLearningServices/workspaces/jobs", + "type": "Microsoft.MachineLearningServices/workspaces/trainingJobs", "properties": { "jobType": "Command", "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_List_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MinimumSet_Gen.json similarity index 84% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_List_MinimumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MinimumSet_Gen.json index 94b91ba15987..25c369cec0a8 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Jobs_List_MinimumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MinimumSet_Gen.json @@ -1,6 +1,6 @@ { - "title": "Jobs_List_MinimumSet", - "operationId": "Jobs_List", + "title": "TrainingJobs_List_MinimumSet", + "operationId": "TrainingJobs_List", "parameters": { "api-version": "v1" }, diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 20f4e4471557..03b6b9c5d24d 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -78,7 +78,7 @@ "name": "Toolsets" }, { - "name": "Jobs" + "name": "TrainingJobs" } ], "paths": { @@ -3590,105 +3590,10 @@ ] } }, - "/jobs": { - "get": { - "operationId": "Jobs_list", - "description": "List Jobs.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "jobType", - "in": "query", - "required": false, - "description": "Filter by job type (e.g. 'Command').", - "schema": { - "$ref": "#/components/schemas/JobType" - }, - "explode": false - }, - { - "name": "tag", - "in": "query", - "required": false, - "description": "Filter jobs by tag in the format 'key=value' (e.g., 'framework=pytorch').", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "listViewType", - "in": "query", - "required": false, - "description": "Specifies which view type to apply when listing jobs.", - "schema": { - "$ref": "#/components/schemas/ListViewType" - }, - "explode": false - }, - { - "name": "properties", - "in": "query", - "required": false, - "description": "Comma-separated user property names and optionally values. Example: prop1,prop2=value2.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJob" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Jobs" - ] - }, + "/memory_stores": { "post": { - "operationId": "Jobs_createTrainingJob", - "description": "Create and execute a model training Job.", + "operationId": "createMemoryStore", + "description": "Create a memory store.", "parameters": [ { "name": "Foundry-Features", @@ -3698,19 +3603,10 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "MemoryStores=V1Preview" ] } }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry job creation.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -3723,12 +3619,12 @@ } ], "responses": { - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", + "200": { + "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/MemoryStoreObject" } } } @@ -3745,78 +3641,113 @@ } }, "tags": [ - "Jobs" + "Memory Stores" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the memory store." + }, + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the memory store." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the memory store." + }, + "definition": { + "allOf": [ + { + "$ref": "#/components/schemas/MemoryStoreDefinition" + } + ], + "description": "The memory store definition." + } + }, + "required": [ + "name", + "definition" + ] } } - }, - "description": "The job to create." + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] } - } - }, - "/jobs/{jobName}/artifacts": { + }, "get": { - "operationId": "JobArtifacts_listJobArtifacts", - "description": "List artifacts for the current view of a job.", + "operationId": "listMemoryStores", + "description": "List all memory stores.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false }, { - "name": "limit", + "name": "order", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, { - "name": "skipToken", + "name": "after", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { "type": "string" }, "explode": false }, { - "name": "pathPrefix", + "name": "before", "in": "query", "required": false, - "description": "Artifact path prefix to list.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, "explode": false }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } + }, { "name": "api-version", "in": "query", @@ -3834,7 +3765,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MemoryStoreObject" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -3851,43 +3808,39 @@ } }, "tags": [ - "Jobs" - ] + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } } }, - "/jobs/{jobName}/artifacts/{artifactPath}:content": { - "get": { - "operationId": "JobArtifacts_downloadJobArtifact", - "description": "Download job artifact content.", + "/memory_stores/{name}": { + "post": { + "operationId": "updateMemoryStore", + "description": "Update a memory store.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", + "name": "name", "in": "path", "required": true, - "description": "The job name.", + "description": "The name of the memory store to update.", "schema": { "type": "string" } }, { - "name": "artifactPath", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The artifact path.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] } }, { @@ -3905,10 +3858,9 @@ "200": { "description": "The request has succeeded.", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/MemoryStoreObject" } } } @@ -3925,43 +3877,61 @@ } }, "tags": [ - "Jobs" - ] - } - }, - "/jobs/{jobName}/artifacts/{artifactPath}:contentInfo": { + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the memory store." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the memory store." + } + } + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + }, "get": { - "operationId": "JobArtifacts_getJobArtifactContentInfo", - "description": "Get download information for a job artifact.", + "operationId": "getMemoryStore", + "description": "Retrieve a memory store.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", + "name": "name", "in": "path", "required": true, - "description": "The job name.", + "description": "The name of the memory store to retrieve.", "schema": { "type": "string" } }, { - "name": "artifactPath", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The artifact path.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] } }, { @@ -3981,7 +3951,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifactContentInfo" + "$ref": "#/components/schemas/MemoryStoreObject" } } } @@ -3998,43 +3968,37 @@ } }, "tags": [ - "Jobs" - ] - } - }, - "/jobs/{jobName}/artifacts/{artifactPath}:metadata": { - "get": { - "operationId": "JobArtifacts_getJobArtifactMetadata", - "description": "Get metadata for a job artifact.", + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + }, + "delete": { + "operationId": "deleteMemoryStore", + "description": "Delete a memory store.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", + "name": "name", "in": "path", "required": true, - "description": "The job name.", + "description": "The name of the memory store to delete.", "schema": { "type": "string" } }, { - "name": "artifactPath", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The artifact path.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] } }, { @@ -4054,7 +4018,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifact" + "$ref": "#/components/schemas/DeleteMemoryStoreResponse" } } } @@ -4071,56 +4035,49 @@ } }, "tags": [ - "Jobs" - ] + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } } }, - "/jobs/{jobName}/attempts": { + "/memory_stores/{name}/updates/{update_id}": { "get": { - "operationId": "JobAttempts_listJobAttempts", - "description": "List execution attempts for a job.", + "operationId": "getUpdateResult", + "description": "Get memory store update result.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", + "name": "name", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The name of the memory store.", "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] + "type": "string" } }, { - "name": "jobName", + "name": "update_id", "in": "path", "required": true, - "description": "The job name.", + "description": "The ID of the memory update operation.", "schema": { "type": "string" } }, { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" - }, - "explode": false + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] + } }, { "name": "api-version", @@ -4139,7 +4096,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobAttempt" + "$ref": "#/components/schemas/MemoryStoreUpdateResponse" } } } @@ -4156,43 +4113,39 @@ } }, "tags": [ - "Jobs" - ] + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } } }, - "/jobs/{jobName}/attempts/{attemptId}": { - "get": { - "operationId": "JobAttempts_getJobAttempt", - "description": "Get one execution attempt for a job.", + "/memory_stores/{name}:delete_scope": { + "post": { + "operationId": "deleteScopeMemories", + "description": "Delete all memories associated with a specific scope from a memory store.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", + "name": "name", "in": "path", "required": true, - "description": "The job name.", + "description": "The name of the memory store.", "schema": { "type": "string" } }, { - "name": "attemptId", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The attempt identifier.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] } }, { @@ -4212,7 +4165,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobAttempt" + "$ref": "#/components/schemas/MemoryStoreDeleteScopeResponse" } } } @@ -4229,76 +4182,60 @@ } }, "tags": [ - "Jobs" - ] + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scope": { + "type": "string", + "description": "The namespace that logically groups and isolates memories to delete, such as a user ID." + } + }, + "required": [ + "scope" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } } }, - "/jobs/{jobName}/attempts/{attemptId}/artifacts": { - "get": { - "operationId": "JobAttemptArtifacts_listJobAttemptArtifacts", - "description": "List artifacts for a specific job attempt.", + "/memory_stores/{name}:search_memories": { + "post": { + "operationId": "searchMemories", + "description": "Search for relevant memories from a memory store based on conversation context.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", + "name": "name", "in": "path", "required": true, - "description": "The job name.", + "description": "The name of the memory store to search.", "schema": { "type": "string" } }, { - "name": "attemptId", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The attempt identifier.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "pathPrefix", - "in": "query", - "required": false, - "description": "Artifact path prefix to list.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -4316,7 +4253,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" + "$ref": "#/components/schemas/MemoryStoreSearchResponse" } } } @@ -4333,52 +4270,77 @@ } }, "tags": [ - "Jobs" - ] + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scope": { + "type": "string", + "description": "The namespace that logically groups and isolates memories, such as a user ID." + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.InputItem" + }, + "description": "Items for which to search for relevant memories." + }, + "previous_search_id": { + "type": "string", + "description": "The unique ID of the previous search request, enabling incremental memory search from where the last operation left off." + }, + "options": { + "allOf": [ + { + "$ref": "#/components/schemas/MemorySearchOptions" + } + ], + "description": "Memory search options." + } + }, + "required": [ + "scope" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } } }, - "/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:content": { - "get": { - "operationId": "JobAttemptArtifacts_downloadJobAttemptArtifact", - "description": "Download artifact content from a specific job attempt.", + "/memory_stores/{name}:update_memories": { + "post": { + "operationId": "updateMemories", + "description": "Update memory store with conversation memories.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", + "name": "name", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The name of the memory store to update.", "schema": { "type": "string" } }, { - "name": "artifactPath", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The artifact path.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] } }, { @@ -4393,13 +4355,22 @@ } ], "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/octet-stream": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", "schema": { "type": "string", - "format": "binary" + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MemoryStoreUpdateResponse" } } } @@ -4416,53 +4387,85 @@ } }, "tags": [ - "Jobs" - ] + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scope": { + "type": "string", + "description": "The namespace that logically groups and isolates memories, such as a user ID." + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.InputItem" + }, + "description": "Conversation items to be stored in memory." + }, + "previous_update_id": { + "type": "string", + "description": "The unique ID of the previous update request, enabling incremental memory updates from where the last operation left off." + }, + "update_delay": { + "type": "integer", + "format": "int32", + "description": "Timeout period before processing the memory update in seconds.\nIf a new update request is received during this period, it will cancel the current request and reset the timeout.\nSet to 0 to immediately trigger the update without delay.\nDefaults to 300 (5 minutes).", + "default": 300 + } + }, + "required": [ + "scope" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } } }, - "/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:contentInfo": { + "/mlflow/api/2.0/mlflow/artifacts/list": { "get": { - "operationId": "JobAttemptArtifacts_getJobAttemptArtifactContentInfo", - "description": "Get download information for an artifact from a specific job attempt.", + "operationId": "Artifacts_list", + "description": "List MLflow artifacts.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", + "name": "run_id", + "in": "query", + "required": false, + "description": "MLflow run identifier.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", + "name": "run_uuid", + "in": "query", + "required": false, + "description": "MLflow run UUID.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "artifactPath", - "in": "path", - "required": true, - "description": "The artifact path.", + "name": "path", + "in": "query", + "required": false, + "description": "Artifact path to list.", "schema": { "type": "string" - } + }, + "explode": false }, { "name": "api-version", @@ -4481,7 +4484,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifactContentInfo" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4498,54 +4501,68 @@ } }, "tags": [ - "Jobs" + "MLflow Artifacts" ] } }, - "/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:metadata": { - "get": { - "operationId": "JobAttemptArtifacts_getJobAttemptArtifactMetadata", - "description": "Get metadata for an artifact from a specific job attempt.", + "/mlflow/api/2.0/mlflow/experiments/create": { + "post": { + "operationId": "Experiments_create", + "description": "Create an MLflow experiment.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The job name.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } } }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } } - }, - { - "name": "artifactPath", - "in": "path", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } } - }, + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/delete": { + "post": { + "operationId": "Experiments_delete", + "description": "Delete an MLflow experiment.", + "parameters": [ { "name": "api-version", "in": "query", @@ -4563,7 +4580,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifact" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4580,61 +4597,40 @@ } }, "tags": [ - "Jobs" - ] + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{jobName}/attempts/{attemptId}/metrics": { + "/mlflow/api/2.0/mlflow/experiments/get": { "get": { - "operationId": "JobAttemptMetrics_listJobAttemptMetrics", - "description": "List metrics emitted by a specific job attempt.", + "operationId": "Experiments_get", + "description": "Get an MLflow experiment by ID.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", + "name": "experiment_id", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "MLflow experiment identifier.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, { - "name": "skipToken", + "name": "experiment_name", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "MLflow experiment name.", "schema": { "type": "string" }, @@ -4657,7 +4653,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetric" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4674,106 +4670,32 @@ } }, "tags": [ - "Jobs" + "MLflow Experiments" ] } }, - "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}": { + "/mlflow/api/2.0/mlflow/experiments/get-by-name": { "get": { - "operationId": "JobAttemptMetrics_getJobAttemptMetric", - "description": "Get the full history for a metric from a specific job attempt.", + "operationId": "Experiments_getByName", + "description": "Get an MLflow experiment by name.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", + "name": "experiment_id", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "MLflow experiment identifier.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "experiment_name", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "MLflow experiment name.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -4794,7 +4716,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4811,109 +4733,68 @@ } }, "tags": [ - "Jobs" + "MLflow Experiments" ] } }, - "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates": { - "get": { - "operationId": "JobAttemptMetrics_getJobAttemptMetricAggregates", - "description": "Get aggregate metric values from a specific job attempt.", + "/mlflow/api/2.0/mlflow/experiments/restore": { + "post": { + "operationId": "Experiments_restore", + "description": "Restore a deleted MLflow experiment.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The job name.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } } }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/search": { + "post": { + "operationId": "Experiments_search", + "description": "Search MLflow experiments.", + "parameters": [ { "name": "api-version", "in": "query", @@ -4931,7 +4812,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4948,109 +4829,78 @@ } }, "tags": [ - "Jobs" - ] + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample": { - "get": { - "operationId": "JobAttemptMetrics_getJobAttemptMetricSample", - "description": "Get one sampled value or window from a specific job attempt.", + "/mlflow/api/2.0/mlflow/experiments/set-experiment-tag": { + "post": { + "operationId": "Experiments_setTag", + "description": "Set an MLflow experiment tag.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The job name.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } } }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/update": { + "post": { + "operationId": "Experiments_update", + "description": "Update MLflow experiment metadata.", + "parameters": [ { "name": "api-version", "in": "query", @@ -5068,7 +4918,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5085,106 +4935,73 @@ } }, "tags": [ - "Jobs" - ] + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples": { + "/mlflow/api/2.0/mlflow/metrics/get-history": { "get": { - "operationId": "JobAttemptMetrics_getJobAttemptMetricSamples", - "description": "Get sampled metric values from a specific job attempt.", + "operationId": "Metrics_getHistory", + "description": "Get MLflow metric history.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", + "name": "run_id", "in": "query", "required": false, - "description": "Start of the metric time range.", + "description": "MLflow run identifier.", "schema": { - "type": "string", - "format": "date-time" + "type": "string" }, "explode": false }, { - "name": "endTimeUtc", + "name": "run_uuid", "in": "query", "required": false, - "description": "End of the metric time range.", + "description": "MLflow run UUID.", "schema": { - "type": "string", - "format": "date-time" + "type": "string" }, "explode": false }, { - "name": "minStep", + "name": "metric_key", "in": "query", "required": false, - "description": "Minimum metric step to include.", + "description": "Metric key.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "maxStep", + "name": "max_results", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "Maximum number of metric points to return.", "schema": { "type": "integer", - "format": "int64" + "format": "int32" }, "explode": false }, { - "name": "limit", + "name": "page_token", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "Token used to retrieve the next page of metric points.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -5205,7 +5022,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5222,45 +5039,15 @@ } }, "tags": [ - "Jobs" + "MLflow Metrics" ] } }, - "/jobs/{jobName}/attempts/{attemptId}/metrics:lastValues": { - "get": { - "operationId": "JobAttemptMetrics_getJobAttemptMetricLastValues", - "description": "Get latest metric values for a specific job attempt.", + "/mlflow/api/2.0/mlflow/model-versions/create": { + "post": { + "operationId": "ModelVersions_create", + "description": "Create an MLflow model version.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -5278,7 +5065,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5295,61 +5082,40 @@ } }, "tags": [ - "Jobs" - ] + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{jobName}/attempts/{attemptId}/outputs": { - "get": { - "operationId": "JobAttemptOutputs_listJobAttemptOutputs", - "description": "List outputs produced by a specific job attempt.", + "/mlflow/api/2.0/mlflow/model-versions/delete": { + "delete": { + "operationId": "ModelVersions_delete", + "description": "Delete an MLflow model version.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", + "name": "name", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "Registered model name.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, { - "name": "skipToken", + "name": "version", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "Model version.", "schema": { "type": "string" }, @@ -5372,7 +5138,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5389,53 +5155,34 @@ } }, "tags": [ - "Jobs" + "MLflow Model Versions" ] } }, - "/jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}": { - "get": { - "operationId": "JobAttemptOutputs_getJobAttemptOutput", - "description": "Get one output produced by a specific job attempt.", + "/mlflow/api/2.0/mlflow/model-versions/delete-tag": { + "delete": { + "operationId": "ModelVersions_deleteTag", + "description": "Delete an MLflow model-version tag.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "outputName", - "in": "path", - "required": true, - "description": "The output name.", + "name": "version", + "in": "query", + "required": false, + "description": "Model version.", "schema": { "type": "string" - } + }, + "explode": false }, { "name": "api-version", @@ -5454,7 +5201,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5471,52 +5218,30 @@ } }, "tags": [ - "Jobs" + "MLflow Model Versions" ] } }, - "/jobs/{jobName}/metrics": { + "/mlflow/api/2.0/mlflow/model-versions/get": { "get": { - "operationId": "JobMetrics_listJobMetrics", - "description": "List metrics emitted by the current view of a job.", + "operationId": "ModelVersions_get", + "description": "Get an MLflow model version.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", + "name": "name", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "Registered model name.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, { - "name": "skipToken", + "name": "version", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "Model version.", "schema": { "type": "string" }, @@ -5539,7 +5264,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetric" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5556,97 +5281,32 @@ } }, "tags": [ - "Jobs" + "MLflow Model Versions" ] } }, - "/jobs/{jobName}/metrics/{metricName}": { + "/mlflow/api/2.0/mlflow/model-versions/get-download-uri": { "get": { - "operationId": "JobMetrics_getJobMetric", - "description": "Get the full history for a job metric.", + "operationId": "ModelVersions_getDownloadUri", + "description": "Get an MLflow model version download URI.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", + "name": "name", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "Registered model name.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "version", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "Model version.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -5667,7 +5327,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5684,100 +5344,15 @@ } }, "tags": [ - "Jobs" + "MLflow Model Versions" ] } }, - "/jobs/{jobName}/metrics/{metricName}:aggregates": { - "get": { - "operationId": "JobMetrics_getJobMetricAggregates", - "description": "Get aggregate values for a job metric.", + "/mlflow/api/2.0/mlflow/model-versions/get-storage-location-uri": { + "post": { + "operationId": "ModelVersions_getStorageLocationUri", + "description": "Get an MLflow model version storage location URI.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -5795,7 +5370,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5812,97 +5387,43 @@ } }, "tags": [ - "Jobs" - ] + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{jobName}/metrics/{metricName}:sample": { + "/mlflow/api/2.0/mlflow/model-versions/search": { "get": { - "operationId": "JobMetrics_getJobMetricSample", - "description": "Get one sampled value or window for a job metric.", + "operationId": "ModelVersions_search", + "description": "Search MLflow model versions.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", + "name": "max_results", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "Maximum number of items to return.", "schema": { "type": "integer", - "format": "int64" + "format": "int32" }, "explode": false }, { - "name": "limit", + "name": "page_token", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "Token used to retrieve the next page of results.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -5923,7 +5444,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5940,100 +5461,15 @@ } }, "tags": [ - "Jobs" + "MLflow Model Versions" ] } }, - "/jobs/{jobName}/metrics/{metricName}:samples": { - "get": { - "operationId": "JobMetrics_getJobMetricSamples", - "description": "Get sampled values for a job metric.", + "/mlflow/api/2.0/mlflow/model-versions/set-tag": { + "post": { + "operationId": "ModelVersions_setTag", + "description": "Set an MLflow model-version tag.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -6051,7 +5487,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6068,36 +5504,25 @@ } }, "tags": [ - "Jobs" - ] + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{jobName}/metrics:lastValues": { - "get": { - "operationId": "JobMetrics_getJobMetricLastValues", - "description": "Get the latest values for metrics emitted by the current view of a job.", + "/mlflow/api/2.0/mlflow/model-versions/transition-stage": { + "post": { + "operationId": "ModelVersions_transitionStage", + "description": "Transition an MLflow model version stage.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -6115,7 +5540,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6132,57 +5557,25 @@ } }, "tags": [ - "Jobs" - ] + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{jobName}/outputs": { - "get": { - "operationId": "JobOutputs_listJobOutputs", - "description": "List outputs produced by a job.", + "/mlflow/api/2.0/mlflow/model-versions/update": { + "patch": { + "operationId": "ModelVersions_update", + "description": "Update an MLflow model version.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -6200,7 +5593,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6217,45 +5610,25 @@ } }, "tags": [ - "Jobs" - ] + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{jobName}/outputs/{outputName}": { - "get": { - "operationId": "JobOutputs_getJobOutput", - "description": "Get one output produced by a job.", + "/mlflow/api/2.0/mlflow/registered-models/create": { + "post": { + "operationId": "RegisteredModels_create", + "description": "Create an MLflow registered model.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "outputName", - "in": "path", - "required": true, - "description": "The output name.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -6273,7 +5646,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6290,38 +5663,44 @@ } }, "tags": [ - "Jobs" - ] - } - }, - "/jobs/{name}": { - "get": { - "operationId": "Jobs_get", - "description": "Get a Job by name.", + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/registered-models/delete": { + "delete": { + "operationId": "RegisteredModels_delete", + "description": "Delete an MLflow registered model.", "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, { "name": "name", - "in": "path", - "required": true, - "description": "The name of the Job. This is case-sensitive.", + "in": "query", + "required": false, + "description": "Registered model name.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "Foundry-Features", - "in": "header", + "name": "api-version", + "in": "query", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The API version to use for this operation.", "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } + "type": "string" + }, + "explode": false } ], "responses": { @@ -6330,208 +5709,147 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Jobs" + "MLflow Registered Models" ] - }, + } + }, + "/mlflow/api/2.0/mlflow/registered-models/delete-tag": { "delete": { - "operationId": "Jobs_beginDelete", - "description": "Delete a Job by name. Returns 202 Accepted with a Location header to poll for completion, or 204 if the job does not exist.", + "operationId": "RegisteredModels_deleteTag", + "description": "Delete an MLflow registered-model tag.", "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, { "name": "name", - "in": "path", - "required": true, - "description": "The name of the Job. This is case-sensitive.", + "in": "query", + "required": false, + "description": "Registered model name.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "Foundry-Features", - "in": "header", + "name": "api-version", + "in": "query", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The API version to use for this operation.", "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } + "type": "string" + }, + "explode": false } ], "responses": { - "202": { - "description": "Response returned when a job delete operation is accepted asynchronously.", - "headers": { - "Location": { - "required": true, - "description": "URL to poll for the status of the delete operation.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "required": false, - "description": "Suggested delay in seconds before polling.", + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } }, - "204": { - "description": "There is no content to send for this request, but the headers may be useful." - }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Jobs" + "MLflow Registered Models" ] } }, - "/jobs/{name}:cancel": { - "post": { - "operationId": "Jobs_beginCancel", - "description": "Cancel a Job by name. Returns 200 if cancelled immediately, or 202 Accepted with a Location header to poll for completion.", + "/mlflow/api/2.0/mlflow/registered-models/get": { + "get": { + "operationId": "RegisteredModels_get", + "description": "Get an MLflow registered model.", "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, { "name": "name", - "in": "path", - "required": true, - "description": "The name of the Job. This is case-sensitive.", + "in": "query", + "required": false, + "description": "Registered model name.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "Foundry-Features", - "in": "header", + "name": "api-version", + "in": "query", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The API version to use for this operation.", "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } + "type": "string" + }, + "explode": false } ], "responses": { "200": { - "description": "The request has succeeded." - }, - "202": { - "description": "Response returned when a job cancel operation is accepted asynchronously.", - "headers": { - "Location": { - "required": true, - "description": "URL to poll for the status of the cancel operation.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "required": false, - "description": "Suggested delay in seconds before polling.", + "description": "The request has succeeded.", + "content": { + "application/json": { "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Jobs" + "MLflow Registered Models" ] } }, - "/memory_stores": { - "post": { - "operationId": "createMemoryStore", - "description": "Create a memory store.", + "/mlflow/api/2.0/mlflow/registered-models/get-latest-versions": { + "get": { + "operationId": "RegisteredModels_getLatestVersions", + "description": "Get latest versions for an MLflow registered model.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } + "type": "string" + }, + "explode": false }, { "name": "api-version", @@ -6550,7 +5868,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreObject" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6567,113 +5885,36 @@ } }, "tags": [ - "Memory Stores" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the memory store." - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the memory store." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the memory store." - }, - "definition": { - "allOf": [ - { - "$ref": "#/components/schemas/MemoryStoreDefinition" - } - ], - "description": "The memory store definition." - } - }, - "required": [ - "name", - "definition" - ] - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] - } - }, + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/list": { "get": { - "operationId": "listMemoryStores", - "description": "List all memory stores.", + "operationId": "RegisteredModels_list", + "description": "List MLflow registered models.", "parameters": [ { - "name": "limit", + "name": "max_results", "in": "query", "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "description": "Maximum number of items to return.", "schema": { "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" + "format": "int32" }, "explode": false }, { - "name": "before", + "name": "page_token", "in": "query", "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "description": "Token used to retrieve the next page of results.", "schema": { "type": "string" }, "explode": false }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -6691,33 +5932,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MemoryStoreObject" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6734,41 +5949,15 @@ } }, "tags": [ - "Memory Stores" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] - } + "MLflow Registered Models" + ] } }, - "/memory_stores/{name}": { + "/mlflow/api/2.0/mlflow/registered-models/rename": { "post": { - "operationId": "updateMemoryStore", - "description": "Update a memory store.", + "operationId": "RegisteredModels_rename", + "description": "Rename an MLflow registered model.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to update.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -6786,7 +5975,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreObject" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6803,62 +5992,45 @@ } }, "tags": [ - "Memory Stores" + "MLflow Registered Models" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the memory store." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the memory store." - } - } + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } - }, + } + }, + "/mlflow/api/2.0/mlflow/registered-models/search": { "get": { - "operationId": "getMemoryStore", - "description": "Retrieve a memory store.", + "operationId": "RegisteredModels_search", + "description": "Search MLflow registered models.", "parameters": [ { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to retrieve.", + "name": "max_results", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int32" + }, + "explode": false }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "page_token", + "in": "query", + "required": false, + "description": "Token used to retrieve the next page of results.", "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } + "type": "string" + }, + "explode": false }, { "name": "api-version", @@ -6877,7 +6049,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreObject" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6894,39 +6066,15 @@ } }, "tags": [ - "Memory Stores" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] - } - }, - "delete": { - "operationId": "deleteMemoryStore", - "description": "Delete a memory store.", + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/set-tag": { + "post": { + "operationId": "RegisteredModels_setTag", + "description": "Set an MLflow registered-model tag.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to delete.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -6944,7 +6092,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteMemoryStoreResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6961,53 +6109,28 @@ } }, "tags": [ - "Memory Stores" + "MLflow Registered Models" ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } } } }, - "/memory_stores/{name}/updates/{update_id}": { - "get": { - "operationId": "getUpdateResult", - "description": "Get memory store update result.", + "/mlflow/api/2.0/mlflow/registered-models/update": { + "patch": { + "operationId": "RegisteredModels_update", + "description": "Update an MLflow registered model.", "parameters": [ { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store.", - "schema": { - "type": "string" - } - }, - { - "name": "update_id", - "in": "path", - "required": true, - "description": "The ID of the memory update operation.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", + "name": "api-version", + "in": "query", "required": true, "description": "The API version to use for this operation.", "schema": { @@ -7022,7 +6145,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreUpdateResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7039,41 +6162,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Registered Models" ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } } } }, - "/memory_stores/{name}:delete_scope": { + "/mlflow/api/2.0/mlflow/runs/create": { "post": { - "operationId": "deleteScopeMemories", - "description": "Delete all memories associated with a specific scope from a memory store.", + "operationId": "Runs_create", + "description": "Create an MLflow run.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -7091,7 +6198,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreDeleteScopeResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7108,60 +6215,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "scope": { - "type": "string", - "description": "The namespace that logically groups and isolates memories to delete, such as a user ID." - } - }, - "required": [ - "scope" - ] + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } } }, - "/memory_stores/{name}:search_memories": { + "/mlflow/api/2.0/mlflow/runs/delete": { "post": { - "operationId": "searchMemories", - "description": "Search for relevant memories from a memory store based on conversation context.", + "operationId": "Runs_delete", + "description": "Delete an MLflow run.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to search.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -7179,7 +6251,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreSearchResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7196,79 +6268,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "scope": { - "type": "string", - "description": "The namespace that logically groups and isolates memories, such as a user ID." - }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.InputItem" - }, - "description": "Items for which to search for relevant memories." - }, - "previous_search_id": { - "type": "string", - "description": "The unique ID of the previous search request, enabling incremental memory search from where the last operation left off." - }, - "options": { - "allOf": [ - { - "$ref": "#/components/schemas/MemorySearchOptions" - } - ], - "description": "Memory search options." - } - }, - "required": [ - "scope" - ] + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } } }, - "/memory_stores/{name}:update_memories": { + "/mlflow/api/2.0/mlflow/runs/delete-tag": { "post": { - "operationId": "updateMemories", - "description": "Update memory store with conversation memories.", + "operationId": "Runs_deleteTag", + "description": "Delete an MLflow run tag.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to update.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -7281,22 +6299,12 @@ } ], "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, + "200": { + "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreUpdateResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7313,55 +6321,24 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "scope": { - "type": "string", - "description": "The namespace that logically groups and isolates memories, such as a user ID." - }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.InputItem" - }, - "description": "Conversation items to be stored in memory." - }, - "previous_update_id": { - "type": "string", - "description": "The unique ID of the previous update request, enabling incremental memory updates from where the last operation left off." - }, - "update_delay": { - "type": "integer", - "format": "int32", - "description": "Timeout period before processing the memory update in seconds.\nIf a new update request is received during this period, it will cancel the current request and reset the timeout.\nSet to 0 to immediately trigger the update without delay.\nDefaults to 300 (5 minutes).", - "default": 300 - } - }, - "required": [ - "scope" - ] + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } } }, - "/mlflow/api/2.0/mlflow/artifacts/list": { + "/mlflow/api/2.0/mlflow/runs/get": { "get": { - "operationId": "Artifacts_list", - "description": "List MLflow artifacts.", + "operationId": "Runs_get", + "description": "Get an MLflow run.", "parameters": [ { "name": "run_id", @@ -7383,16 +6360,6 @@ }, "explode": false }, - { - "name": "path", - "in": "query", - "required": false, - "description": "Artifact path to list.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -7427,14 +6394,14 @@ } }, "tags": [ - "MLflow Artifacts" + "MLflow Runs" ] } }, - "/mlflow/api/2.0/mlflow/experiments/create": { + "/mlflow/api/2.0/mlflow/runs/log-batch": { "post": { - "operationId": "Experiments_create", - "description": "Create an MLflow experiment.", + "operationId": "Runs_logBatch", + "description": "Log a batch of metrics, parameters, and tags to an MLflow run.", "parameters": [ { "name": "api-version", @@ -7470,7 +6437,7 @@ } }, "tags": [ - "MLflow Experiments" + "MLflow Runs" ], "requestBody": { "required": true, @@ -7484,10 +6451,10 @@ } } }, - "/mlflow/api/2.0/mlflow/experiments/delete": { + "/mlflow/api/2.0/mlflow/runs/log-inputs": { "post": { - "operationId": "Experiments_delete", - "description": "Delete an MLflow experiment.", + "operationId": "Runs_logInputs", + "description": "Log MLflow run input relationships.", "parameters": [ { "name": "api-version", @@ -7523,7 +6490,7 @@ } }, "tags": [ - "MLflow Experiments" + "MLflow Runs" ], "requestBody": { "required": true, @@ -7537,31 +6504,11 @@ } } }, - "/mlflow/api/2.0/mlflow/experiments/get": { - "get": { - "operationId": "Experiments_get", - "description": "Get an MLflow experiment by ID.", + "/mlflow/api/2.0/mlflow/runs/log-metric": { + "post": { + "operationId": "Runs_logMetric", + "description": "Log one metric to an MLflow run.", "parameters": [ - { - "name": "experiment_id", - "in": "query", - "required": false, - "description": "MLflow experiment identifier.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "experiment_name", - "in": "query", - "required": false, - "description": "MLflow experiment name.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -7596,35 +6543,25 @@ } }, "tags": [ - "MLflow Experiments" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/mlflow/api/2.0/mlflow/experiments/get-by-name": { - "get": { - "operationId": "Experiments_getByName", - "description": "Get an MLflow experiment by name.", + "/mlflow/api/2.0/mlflow/runs/log-model": { + "post": { + "operationId": "Runs_logModel", + "description": "Log MLflow model metadata.", "parameters": [ - { - "name": "experiment_id", - "in": "query", - "required": false, - "description": "MLflow experiment identifier.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "experiment_name", - "in": "query", - "required": false, - "description": "MLflow experiment name.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -7659,14 +6596,24 @@ } }, "tags": [ - "MLflow Experiments" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/mlflow/api/2.0/mlflow/experiments/restore": { + "/mlflow/api/2.0/mlflow/runs/log-parameter": { "post": { - "operationId": "Experiments_restore", - "description": "Restore a deleted MLflow experiment.", + "operationId": "Runs_logParameter", + "description": "Log one parameter to an MLflow run.", "parameters": [ { "name": "api-version", @@ -7702,7 +6649,7 @@ } }, "tags": [ - "MLflow Experiments" + "MLflow Runs" ], "requestBody": { "required": true, @@ -7716,10 +6663,10 @@ } } }, - "/mlflow/api/2.0/mlflow/experiments/search": { + "/mlflow/api/2.0/mlflow/runs/restore": { "post": { - "operationId": "Experiments_search", - "description": "Search MLflow experiments.", + "operationId": "Runs_restore", + "description": "Restore a deleted MLflow run.", "parameters": [ { "name": "api-version", @@ -7755,7 +6702,7 @@ } }, "tags": [ - "MLflow Experiments" + "MLflow Runs" ], "requestBody": { "required": true, @@ -7769,10 +6716,10 @@ } } }, - "/mlflow/api/2.0/mlflow/experiments/set-experiment-tag": { + "/mlflow/api/2.0/mlflow/runs/search": { "post": { - "operationId": "Experiments_setTag", - "description": "Set an MLflow experiment tag.", + "operationId": "Runs_search", + "description": "Search MLflow runs.", "parameters": [ { "name": "api-version", @@ -7808,7 +6755,7 @@ } }, "tags": [ - "MLflow Experiments" + "MLflow Runs" ], "requestBody": { "required": true, @@ -7822,10 +6769,10 @@ } } }, - "/mlflow/api/2.0/mlflow/experiments/update": { + "/mlflow/api/2.0/mlflow/runs/set-tag": { "post": { - "operationId": "Experiments_update", - "description": "Update MLflow experiment metadata.", + "operationId": "Runs_setTag", + "description": "Set an MLflow run tag.", "parameters": [ { "name": "api-version", @@ -7861,7 +6808,7 @@ } }, "tags": [ - "MLflow Experiments" + "MLflow Runs" ], "requestBody": { "required": true, @@ -7875,62 +6822,11 @@ } } }, - "/mlflow/api/2.0/mlflow/metrics/get-history": { - "get": { - "operationId": "Metrics_getHistory", - "description": "Get MLflow metric history.", + "/mlflow/api/2.0/mlflow/runs/update": { + "post": { + "operationId": "Runs_update", + "description": "Update MLflow run metadata or status.", "parameters": [ - { - "name": "run_id", - "in": "query", - "required": false, - "description": "MLflow run identifier.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "run_uuid", - "in": "query", - "required": false, - "description": "MLflow run UUID.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "metric_key", - "in": "query", - "required": false, - "description": "Metric key.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "max_results", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "page_token", - "in": "query", - "required": false, - "description": "Token used to retrieve the next page of metric points.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -7965,33 +6861,32 @@ } }, "tags": [ - "MLflow Metrics" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/mlflow/api/2.0/mlflow/model-versions/create": { + "/openai/v1/conversations": { "post": { - "operationId": "ModelVersions_create", - "description": "Create an MLflow model version.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], + "operationId": "createConversation", + "description": "Create a conversation.", + "parameters": [], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -8008,50 +6903,80 @@ } }, "tags": [ - "MLflow Model Versions" + "Conversations" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/OpenAI.CreateConversationBody" } } } } - } - }, - "/mlflow/api/2.0/mlflow/model-versions/delete": { - "delete": { - "operationId": "ModelVersions_delete", - "description": "Delete an MLflow model version.", + }, + "get": { + "operationId": "listConversations", + "description": "Returns the list of all conversations.", "parameters": [ { - "name": "name", + "name": "limit", "in": "query", "required": false, - "description": "Registered model name.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "version", + "name": "order", "in": "query", "required": false, - "description": "Model version.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "string" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, { - "name": "api-version", + "name": "after", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "agent_name", + "in": "query", + "required": false, + "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "agent_id", + "in": "query", + "required": false, + "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", "schema": { "type": "string" }, @@ -8064,7 +6989,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ConversationResource" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -8081,44 +7032,23 @@ } }, "tags": [ - "MLflow Model Versions" + "Conversations" ] } }, - "/mlflow/api/2.0/mlflow/model-versions/delete-tag": { - "delete": { - "operationId": "ModelVersions_deleteTag", - "description": "Delete an MLflow model-version tag.", + "/openai/v1/conversations/{conversation_id}": { + "post": { + "operationId": "updateConversation", + "description": "Update a conversation.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "version", - "in": "query", - "required": false, - "description": "Model version.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation to update.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8127,7 +7057,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -8144,44 +7074,31 @@ } }, "tags": [ - "MLflow Model Versions" - ] - } - }, - "/mlflow/api/2.0/mlflow/model-versions/get": { + "Conversations" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.UpdateConversationBody" + } + } + } + } + }, "get": { - "operationId": "ModelVersions_get", - "description": "Get an MLflow model version.", + "operationId": "getConversation", + "description": "Retrieves a conversation.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "version", - "in": "query", - "required": false, - "description": "Model version.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8190,7 +7107,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -8207,44 +7124,21 @@ } }, "tags": [ - "MLflow Model Versions" + "Conversations" ] - } - }, - "/mlflow/api/2.0/mlflow/model-versions/get-download-uri": { - "get": { - "operationId": "ModelVersions_getDownloadUri", - "description": "Get an MLflow model version download URI.", + }, + "delete": { + "operationId": "deleteConversation", + "description": "Deletes a conversation.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "version", - "in": "query", - "required": false, - "description": "Model version.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8253,7 +7147,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.DeletedConversationResource" } } } @@ -8270,22 +7164,34 @@ } }, "tags": [ - "MLflow Model Versions" + "Conversations" ] } }, - "/mlflow/api/2.0/mlflow/model-versions/get-storage-location-uri": { + "/openai/v1/conversations/{conversation_id}/items": { "post": { - "operationId": "ModelVersions_getStorageLocationUri", - "description": "Get an MLflow model version storage location URI.", + "operationId": "createConversationItems", + "description": "Create items in a conversation with the given ID.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation on which the item needs to be created.", "schema": { "type": "string" + } + }, + { + "name": "include", + "in": "query", + "required": false, + "description": "Additional fields to include in the response.\nSee the `include` parameter for listing Conversation items for more information.", + "schema": { + "type": "array", + "items": { + "type": "string" + } }, "explode": false } @@ -8296,7 +7202,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationItemList" } } } @@ -8313,55 +7219,96 @@ } }, "tags": [ - "MLflow Model Versions" + "Conversations" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Item" + }, + "maxItems": 20, + "description": "The items to add to the conversation. You may add up to 20 items at a time." + } + }, + "required": [ + "items" + ] } } } } - } - }, - "/mlflow/api/2.0/mlflow/model-versions/search": { + }, "get": { - "operationId": "ModelVersions_search", - "description": "Search MLflow model versions.", + "operationId": "listConversationItems", + "description": "List all items for a conversation with the given ID.", "parameters": [ { - "name": "max_results", + "name": "conversation_id", + "in": "path", + "required": true, + "description": "The id of the conversation on which the items needs to be listed.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { "type": "integer", - "format": "int32" + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "page_token", + "name": "order", "in": "query", "required": false, - "description": "Token used to retrieve the next page of results.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { "type": "string" }, "explode": false }, { - "name": "api-version", + "name": "before", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, "explode": false + }, + { + "name": "item_type", + "in": "query", + "required": false, + "description": "Filter by item type. If provided, only items of the specified type will be returned.", + "schema": { + "$ref": "#/components/schemas/OpenAI.ItemType" + }, + "explode": false } ], "responses": { @@ -8370,7 +7317,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.OutputItem" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -8387,24 +7360,32 @@ } }, "tags": [ - "MLflow Model Versions" + "Conversations" ] } }, - "/mlflow/api/2.0/mlflow/model-versions/set-tag": { - "post": { - "operationId": "ModelVersions_setTag", - "description": "Set an MLflow model-version tag.", + "/openai/v1/conversations/{conversation_id}/items/{item_id}": { + "get": { + "operationId": "getConversationItem", + "description": "Get a single item from a conversation with the given IDs.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the conversation that contains the item.", "schema": { "type": "string" - }, - "explode": false + } + }, + { + "name": "item_id", + "in": "path", + "required": true, + "description": "The id of the conversation item to retrieve.", + "schema": { + "type": "string" + } } ], "responses": { @@ -8413,7 +7394,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.OutputItem" } } } @@ -8430,34 +7411,30 @@ } }, "tags": [ - "MLflow Model Versions" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/model-versions/transition-stage": { - "post": { - "operationId": "ModelVersions_transitionStage", - "description": "Transition an MLflow model version stage.", + "Conversations" + ] + }, + "delete": { + "operationId": "deleteConversationItem", + "description": "Delete an item from a conversation with the given IDs.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation on which the item needs to be deleted from.", "schema": { "type": "string" - }, - "explode": false + } + }, + { + "name": "item_id", + "in": "path", + "required": true, + "description": "The id of the conversation item to delete.", + "schema": { + "type": "string" + } } ], "responses": { @@ -8466,7 +7443,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -8483,34 +7460,69 @@ } }, "tags": [ - "MLflow Model Versions" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Conversations" + ] } }, - "/mlflow/api/2.0/mlflow/model-versions/update": { - "patch": { - "operationId": "ModelVersions_update", - "description": "Update an MLflow model version.", + "/openai/v1/evals": { + "get": { + "operationId": "Evals_listEvals", + "summary": "List all evaluations", + "description": "List evaluations for a project.", "parameters": [ { - "name": "api-version", + "name": "after", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Identifier for the last run from the previous pagination request.", "schema": { "type": "string" }, "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of runs to retrieve.", + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" + }, + "explode": false + }, + { + "name": "order_by", + "in": "query", + "required": false, + "description": "Evals can be ordered by creation time or last updated time.\nUse `created_at` for creation time or `updated_at` for last updated time.", + "schema": { + "type": "string", + "enum": [ + "created_at", + "updated_at" + ], + "default": "created_at" + } } ], "responses": { @@ -8519,7 +7531,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Eval" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -8536,43 +7574,21 @@ } }, "tags": [ - "MLflow Model Versions" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/registered-models/create": { + "Evals" + ] + }, "post": { - "operationId": "RegisteredModels_create", - "description": "Create an MLflow registered model.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], + "operationId": "Evals_createEval", + "summary": "Create evaluation", + "description": "Create the structure of an evaluation that can be used to test a model's performance.\nAn evaluation is a set of testing criteria and the config for a data source, which dictates the schema of the data used in the evaluation. After creating an evaluation, you can run it on different models and model parameters. We support several types of graders and datasources.\nFor more information, see the [Evals guide](https://platform.openai.com/docs/guides/evals).", + "parameters": [], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/Eval" } } } @@ -8589,44 +7605,34 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/CreateEvalRequest" } } } } } }, - "/mlflow/api/2.0/mlflow/registered-models/delete": { + "/openai/v1/evals/{eval_id}": { "delete": { - "operationId": "RegisteredModels_delete", - "description": "Delete an MLflow registered model.", + "operationId": "Evals_deleteEval", + "summary": "Delete an evaluation", + "description": "Delete an evaluation.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8635,7 +7641,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/DeleteEvalResponse" } } } @@ -8652,34 +7658,22 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/delete-tag": { - "delete": { - "operationId": "RegisteredModels_deleteTag", - "description": "Delete an MLflow registered-model tag.", + }, + "get": { + "operationId": "Evals_getEval", + "summary": "Get an evaluation", + "description": "Get an evaluation by ID.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8688,7 +7682,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/Eval" } } } @@ -8705,34 +7699,22 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/get": { - "get": { - "operationId": "RegisteredModels_get", - "description": "Get an MLflow registered model.", + }, + "post": { + "operationId": "Evals_updateEval", + "summary": "Update an evaluation", + "description": "Update certain properties of an evaluation.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to update.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8741,7 +7723,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/Eval" } } } @@ -8758,96 +7740,89 @@ } }, "tags": [ - "MLflow Registered Models" - ] + "Evals" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateEvalParametersBody" + } + } + } + } } }, - "/mlflow/api/2.0/mlflow/registered-models/get-latest-versions": { + "/openai/v1/evals/{eval_id}/runs": { "get": { - "operationId": "RegisteredModels_getLatestVersions", - "description": "Get latest versions for an MLflow registered model.", + "operationId": "Evals_listRuns", + "summary": "Get a list of runs for an evaluation", + "description": "Get a list of runs for an evaluation.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation to retrieve runs for.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", + "name": "after", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Identifier for the last run from the previous pagination request.", "schema": { "type": "string" }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Registered Models" - ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/list": { - "get": { - "operationId": "RegisteredModels_list", - "description": "List MLflow registered models.", - "parameters": [ { - "name": "max_results", + "name": "limit", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "Number of runs to retrieve.", "schema": { - "type": "integer", - "format": "int32" + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 }, "explode": false }, { - "name": "page_token", + "name": "order", "in": "query", "required": false, - "description": "Token used to retrieve the next page of results.", + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" }, "explode": false }, { - "name": "api-version", + "name": "status", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Filter runs by status. One of `queued` | `in_progress` | `failed` | `completed` | `canceled`.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "queued", + "in_progress", + "completed", + "canceled", + "failed" + ] }, "explode": false } @@ -8858,7 +7833,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRun" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -8875,24 +7876,21 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/rename": { + }, "post": { - "operationId": "RegisteredModels_rename", - "description": "Rename an MLflow registered model.", + "operationId": "Evals_createEvalRun", + "summary": "Create evaluation run", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to create a run for.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8901,7 +7899,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRun" } } } @@ -8918,55 +7916,43 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/CreateEvalRunRequest" } } } } } }, - "/mlflow/api/2.0/mlflow/registered-models/search": { - "get": { - "operationId": "RegisteredModels_search", - "description": "Search MLflow registered models.", + "/openai/v1/evals/{eval_id}/runs/{run_id}": { + "delete": { + "operationId": "Evals_deleteEvalRun", + "summary": "Delete evaluation run", + "description": "Delete an eval run.", "parameters": [ { - "name": "max_results", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "page_token", - "in": "query", - "required": false, - "description": "Token used to retrieve the next page of results.", + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation to delete the run from.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", - "in": "query", + "name": "run_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the run to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8975,7 +7961,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/DeleteEvalRunResponse" } } } @@ -8992,77 +7978,31 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/set-tag": { - "post": { - "operationId": "RegisteredModels_setTag", - "description": "Set an MLflow registered-model tag.", + }, + "get": { + "operationId": "Evals_getEvalRun", + "summary": "Get an evaluation run", + "description": "Get an evaluation run by ID.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to retrieve runs for.", "schema": { "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Registered Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/registered-models/update": { - "patch": { - "operationId": "RegisteredModels_update", - "description": "Update an MLflow registered model.", - "parameters": [ { - "name": "api-version", - "in": "query", + "name": "run_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the run to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -9071,7 +8011,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRun" } } } @@ -9088,87 +8028,31 @@ } }, "tags": [ - "MLflow Registered Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/create": { + "Evals" + ] + }, "post": { - "operationId": "Runs_create", - "description": "Create an MLflow run.", + "operationId": "Evals_cancelEvalRun", + "summary": "Cancel evaluation run", + "description": "Cancel an ongoing evaluation run.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation whose run you want to cancel.", "schema": { "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/delete": { - "post": { - "operationId": "Runs_delete", - "description": "Delete an MLflow run.", - "parameters": [ { - "name": "api-version", - "in": "query", + "name": "run_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the run to cancel.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -9177,7 +8061,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRun" } } } @@ -9194,107 +8078,85 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Evals" + ] } }, - "/mlflow/api/2.0/mlflow/runs/delete-tag": { - "post": { - "operationId": "Runs_deleteTag", - "description": "Delete an MLflow run tag.", + "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items": { + "get": { + "operationId": "Evals_getEvalRunOutputItems", + "summary": "Get evaluation run output items", + "description": "Get a list of output items for an evaluation run.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", "schema": { "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/get": { - "get": { - "operationId": "Runs_get", - "description": "Get an MLflow run.", - "parameters": [ { "name": "run_id", + "in": "path", + "required": true, + "description": "The ID of the run to retrieve output items for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", "in": "query", "required": false, - "description": "MLflow run identifier.", + "description": "Identifier for the last run from the previous pagination request.", "schema": { "type": "string" }, "explode": false }, { - "name": "run_uuid", + "name": "limit", "in": "query", "required": false, - "description": "MLflow run UUID.", + "description": "Number of runs to retrieve.", "schema": { - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 }, "explode": false }, { - "name": "api-version", + "name": "order", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" }, "explode": false + }, + { + "name": "status", + "in": "query", + "required": false, + "description": "Filter output items by status. Use `failed` to filter by failed output\nitems or `pass` to filter by passed output items.", + "schema": { + "type": "string", + "enum": [ + "fail", + "pass" + ] + } } ], "responses": { @@ -9303,7 +8165,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRunOutputItem" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -9320,24 +8208,42 @@ } }, "tags": [ - "MLflow Runs" + "Evals" ] } }, - "/mlflow/api/2.0/mlflow/runs/log-batch": { - "post": { - "operationId": "Runs_logBatch", - "description": "Log a batch of metrics, parameters, and tags to an MLflow run.", + "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}": { + "get": { + "operationId": "Evals_getEvalRunOutputItem", + "summary": "Get an output item of an evaluation run", + "description": "Get an evaluation run output item by ID.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to retrieve runs for.", "schema": { "type": "string" - }, - "explode": false + } + }, + { + "name": "run_id", + "in": "path", + "required": true, + "description": "The ID of the run to retrieve.", + "schema": { + "type": "string" + } + }, + { + "name": "output_item_id", + "in": "path", + "required": true, + "description": "The ID of the output item to retrieve.", + "schema": { + "type": "string" + } } ], "responses": { @@ -9346,7 +8252,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRunOutputItem" } } } @@ -9363,24 +8269,14 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Evals" + ] } }, - "/mlflow/api/2.0/mlflow/runs/log-inputs": { + "/openai/v1/fine_tuning/jobs": { "post": { - "operationId": "Runs_logInputs", - "description": "Log MLflow run input relationships.", + "operationId": "createFineTuningJob", + "description": "Creates a fine-tuning job which begins the process of creating a new model from a given dataset.\n\nResponse includes details of the enqueued job including job status and the name of the fine-tuned models once complete.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", "parameters": [ { "name": "api-version", @@ -9399,7 +8295,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -9416,25 +8312,45 @@ } }, "tags": [ - "MLflow Runs" + "Fine-Tuning" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/OpenAI.CreateFineTuningJobRequest" } } } } - } - }, - "/mlflow/api/2.0/mlflow/runs/log-metric": { - "post": { - "operationId": "Runs_logMetric", - "description": "Log one metric to an MLflow run.", + }, + "get": { + "operationId": "listPaginatedFineTuningJobs", + "description": "List your organization's fine-tuning jobs", "parameters": [ + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last job from the previous pagination request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of fine-tuning jobs to retrieve.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -9452,7 +8368,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ListPaginatedFineTuningJobsResponse" } } } @@ -9469,25 +8385,24 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/log-model": { - "post": { - "operationId": "Runs_logModel", - "description": "Log MLflow model metadata.", + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}": { + "get": { + "operationId": "retrieveFineTuningJob", + "description": "Get info about a fine-tuning job.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -9505,7 +8420,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -9522,25 +8437,24 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/log-parameter": { + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel": { "post": { - "operationId": "Runs_logParameter", - "description": "Log one parameter to an MLflow run.", + "operationId": "cancelFineTuningJob", + "description": "Immediately cancel a fine-tune job.", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to cancel.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -9558,7 +8472,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -9575,25 +8489,46 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/restore": { - "post": { - "operationId": "Runs_restore", - "description": "Restore a deleted MLflow run.", + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints": { + "get": { + "operationId": "listFineTuningJobCheckpoints", + "description": "List checkpoints for a fine-tuning job.", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to get checkpoints for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last checkpoint ID from the previous pagination request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of checkpoints to retrieve.", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -9611,7 +8546,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ListFineTuningJobCheckpointsResponse" } } } @@ -9628,25 +8563,46 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/search": { - "post": { - "operationId": "Runs_search", - "description": "Search MLflow runs.", + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events": { + "get": { + "operationId": "listFineTuningJobEvents", + "description": "Get fine-grained status updates for a fine-tuning job.", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to get events for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last event from the previous pagination request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of events to retrieve.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -9664,7 +8620,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ListFineTuningJobEventsResponse" } } } @@ -9681,25 +8637,24 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/set-tag": { + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause": { "post": { - "operationId": "Runs_setTag", - "description": "Set an MLflow run tag.", + "operationId": "pauseFineTuningJob", + "description": "Pause a running fine-tune job.", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to pause.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -9717,7 +8672,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -9734,25 +8689,24 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/update": { + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume": { "post": { - "operationId": "Runs_update", - "description": "Update MLflow run metadata or status.", + "operationId": "resumeFineTuningJob", + "description": "Resume a paused fine-tune job.", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to resume.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -9770,7 +8724,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -9787,32 +8741,27 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/openai/v1/conversations": { + "/openai/v1/responses": { "post": { - "operationId": "createConversation", - "description": "Create a conversation.", + "operationId": "createResponse_createResponseStream", "parameters": [], + "description": "Creates a model response. Creates a model response (streaming response).", "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" + "$ref": "#/components/schemas/OpenAI.Response" + } + }, + "text/event-stream": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" } } } @@ -9829,36 +8778,437 @@ } }, "tags": [ - "Conversations" + "Responses" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.CreateConversationBody" - } - } - } - } - }, - "get": { - "operationId": "listConversations", - "description": "Returns the list of all conversations.", - "parameters": [ - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { + "anyOf": [ + { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true + }, + "top_logprobs": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "temperature": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "top_p": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "user": { + "type": "string", + "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", + "deprecated": true + }, + "safety_identifier": { + "type": "string", + "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." + }, + "prompt_cache_key": { + "type": "string", + "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." + }, + "service_tier": { + "$ref": "#/components/schemas/OpenAI.ServiceTier" + }, + "prompt_cache_retention": { + "type": "string", + "enum": [ + "in-memory", + "24h" + ], + "nullable": true + }, + "previous_response_id": { + "type": "string", + "nullable": true + }, + "model": { + "type": "string", + "description": "The model deployment to use for the creation of this response." + }, + "reasoning": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Reasoning" + } + ], + "nullable": true + }, + "background": { + "type": "boolean", + "nullable": true + }, + "max_output_tokens": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "max_tool_calls": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "text": { + "$ref": "#/components/schemas/OpenAI.ResponseTextParam" + }, + "tools": { + "$ref": "#/components/schemas/OpenAI.ToolsArray" + }, + "tool_choice": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" + }, + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" + } + ] + }, + "prompt": { + "$ref": "#/components/schemas/OpenAI.Prompt" + }, + "truncation": { + "type": "string", + "enum": [ + "auto", + "disabled" + ], + "nullable": true, + "default": "disabled" + }, + "input": { + "$ref": "#/components/schemas/OpenAI.InputParam" + }, + "include": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "nullable": true + }, + "parallel_tool_calls": { + "type": "boolean", + "nullable": true, + "default": true + }, + "store": { + "type": "boolean", + "nullable": true, + "default": true + }, + "instructions": { + "type": "string", + "nullable": true + }, + "stream": { + "type": "boolean", + "nullable": true + }, + "stream_options": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" + } + ], + "nullable": true + }, + "conversation": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ConversationParam" + } + ], + "nullable": true + }, + "context_management": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ContextManagementParam" + }, + "nullable": true, + "description": "Context management configuration for this request." + }, + "agent_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "The agent to use for generating the response." + }, + "structured_inputs": { + "type": "object", + "additionalProperties": {}, + "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." + } + } + }, + { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true + }, + "top_logprobs": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "temperature": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "top_p": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "user": { + "type": "string", + "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", + "deprecated": true + }, + "safety_identifier": { + "type": "string", + "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." + }, + "prompt_cache_key": { + "type": "string", + "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." + }, + "service_tier": { + "$ref": "#/components/schemas/OpenAI.ServiceTier" + }, + "prompt_cache_retention": { + "type": "string", + "enum": [ + "in-memory", + "24h" + ], + "nullable": true + }, + "previous_response_id": { + "type": "string", + "nullable": true + }, + "model": { + "type": "string", + "description": "The model deployment to use for the creation of this response." + }, + "reasoning": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Reasoning" + } + ], + "nullable": true + }, + "background": { + "type": "boolean", + "nullable": true + }, + "max_output_tokens": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "max_tool_calls": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "text": { + "$ref": "#/components/schemas/OpenAI.ResponseTextParam" + }, + "tools": { + "$ref": "#/components/schemas/OpenAI.ToolsArray" + }, + "tool_choice": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" + }, + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" + } + ] + }, + "prompt": { + "$ref": "#/components/schemas/OpenAI.Prompt" + }, + "truncation": { + "type": "string", + "enum": [ + "auto", + "disabled" + ], + "nullable": true, + "default": "disabled" + }, + "input": { + "$ref": "#/components/schemas/OpenAI.InputParam" + }, + "include": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "nullable": true + }, + "parallel_tool_calls": { + "type": "boolean", + "nullable": true, + "default": true + }, + "store": { + "type": "boolean", + "nullable": true, + "default": true + }, + "instructions": { + "type": "string", + "nullable": true + }, + "stream": { + "type": "boolean", + "nullable": true + }, + "stream_options": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" + } + ], + "nullable": true + }, + "conversation": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ConversationParam" + } + ], + "nullable": true + }, + "context_management": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ContextManagementParam" + }, + "nullable": true, + "description": "Context management configuration for this request." + }, + "agent_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "The agent to use for generating the response." + }, + "structured_inputs": { + "type": "object", + "additionalProperties": {}, + "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." + } + } + } + ] + } + } + } + } + }, + "get": { + "operationId": "listResponses", + "description": "Returns the list of all responses.", + "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { "name": "order", "in": "query", "required": false, @@ -9907,6 +9257,16 @@ "type": "string" }, "explode": false + }, + { + "name": "conversation_id", + "in": "query", + "required": false, + "description": "Filter by conversation ID. If provided, only responses associated with the specified conversation will be returned.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -9924,7 +9284,7 @@ "data": { "type": "array", "items": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" + "$ref": "#/components/schemas/OpenAI.Response" }, "description": "The requested list of items." }, @@ -9958,32 +9318,22 @@ } }, "tags": [ - "Conversations" + "Responses" ] } }, - "/openai/v1/conversations/{conversation_id}": { + "/openai/v1/responses/compact": { "post": { - "operationId": "updateConversation", - "description": "Update a conversation.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation to update.", - "schema": { - "type": "string" - } - } - ], + "operationId": "compactResponseConversation", + "description": "Produces a compaction of a responses conversation.", + "parameters": [], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" + "$ref": "#/components/schemas/OpenAI.CompactResource" } } } @@ -10000,80 +9350,89 @@ } }, "tags": [ - "Conversations" + "Responses" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.UpdateConversationBody" + "$ref": "#/components/schemas/OpenAI.CompactResponseMethodPublicBody" } } } } - }, + } + }, + "/openai/v1/responses/{response_id}": { "get": { - "operationId": "getConversation", - "description": "Retrieves a conversation.", + "operationId": "getResponse_getResponseStream", "parameters": [ { - "name": "conversation_id", + "name": "response_id", "in": "path", "required": true, - "description": "The id of the conversation to retrieve.", "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - } - } - } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ] - }, - "delete": { - "operationId": "deleteConversation", - "description": "Deletes a conversation.", - "parameters": [ { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation to delete.", + "name": "include[]", + "in": "query", + "required": false, "schema": { - "type": "string" - } + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "default": [] + } + }, + { + "name": "stream", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false + }, + "explode": false + }, + { + "name": "starting_after", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "accept", + "in": "header", + "required": false, + "schema": { + "type": "string", + "enum": [ + "text/event-stream" + ] + } } ], + "description": "Retrieves a model response with the given ID. Retrieves a model response with the given ID (streaming response).", "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.DeletedConversationResource" + "$ref": "#/components/schemas/OpenAI.Response" + } + }, + "text/event-stream": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" } } } @@ -10090,36 +9449,21 @@ } }, "tags": [ - "Conversations" + "Responses" ] - } - }, - "/openai/v1/conversations/{conversation_id}/items": { - "post": { - "operationId": "createConversationItems", - "description": "Create items in a conversation with the given ID.", + }, + "delete": { + "operationId": "deleteResponse", + "description": "Deletes a model response.", "parameters": [ { - "name": "conversation_id", + "name": "response_id", "in": "path", "required": true, - "description": "The id of the conversation on which the item needs to be created.", + "description": "The ID of the response to delete.", "schema": { "type": "string" } - }, - { - "name": "include", - "in": "query", - "required": false, - "description": "Additional fields to include in the response.\nSee the `include` parameter for listing Conversation items for more information.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - }, - "explode": false } ], "responses": { @@ -10128,7 +9472,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationItemList" + "$ref": "#/components/schemas/DeleteResponseResult" } } } @@ -10145,41 +9489,61 @@ } }, "tags": [ - "Conversations" + "Responses" + ] + } + }, + "/openai/v1/responses/{response_id}/cancel": { + "post": { + "operationId": "cancelResponse", + "description": "Cancels a model response.", + "parameters": [ + { + "name": "response_id", + "in": "path", + "required": true, + "description": "The ID of the response to cancel.", + "schema": { + "type": "string" + } + } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Item" - }, - "maxItems": 20, - "description": "The items to add to the conversation. You may add up to 20 items at a time." - } - }, - "required": [ - "items" - ] + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.Response" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } } } } - } - }, + }, + "tags": [ + "Responses" + ] + } + }, + "/openai/v1/responses/{response_id}/input_items": { "get": { - "operationId": "listConversationItems", - "description": "List all items for a conversation with the given ID.", + "operationId": "listInputItems", + "description": "Returns a list of input items for a given response.", "parameters": [ { - "name": "conversation_id", + "name": "response_id", "in": "path", "required": true, - "description": "The id of the conversation on which the items needs to be listed.", "schema": { "type": "string" } @@ -10225,16 +9589,6 @@ "type": "string" }, "explode": false - }, - { - "name": "item_type", - "in": "query", - "required": false, - "description": "Filter by item type. If provided, only items of the specified type will be returned.", - "schema": { - "$ref": "#/components/schemas/OpenAI.ItemType" - }, - "explode": false } ], "responses": { @@ -10252,7 +9606,7 @@ "data": { "type": "array", "items": { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/OpenAI.ItemResource" }, "description": "The requested list of items." }, @@ -10286,31 +9640,28 @@ } }, "tags": [ - "Conversations" + "Responses" ] } }, - "/openai/v1/conversations/{conversation_id}/items/{item_id}": { + "/redTeams/runs": { "get": { - "operationId": "getConversationItem", - "description": "Get a single item from a conversation with the given IDs.", + "operationId": "RedTeams_list", + "description": "List a redteam by name.", "parameters": [ { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The ID of the conversation that contains the item.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "item_id", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The id of the conversation item to retrieve.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "RedTeams=V1Preview" + ] } } ], @@ -10320,46 +9671,63 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/PagedRedTeam" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Conversations" + "Redteams" ] - }, - "delete": { - "operationId": "deleteConversationItem", - "description": "Delete an item from a conversation with the given IDs.", + } + }, + "/redTeams/runs/{name}": { + "get": { + "operationId": "RedTeams_get", + "description": "Get a redteam by name.", "parameters": [ { - "name": "conversation_id", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", "in": "path", "required": true, - "description": "The id of the conversation on which the item needs to be deleted from.", + "description": "Identifier of the red team run.", "schema": { "type": "string" } }, { - "name": "item_id", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The id of the conversation item to delete.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "RedTeams=V1Preview" + ] } } ], @@ -10369,152 +9737,71 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" + "$ref": "#/components/schemas/RedTeam" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Conversations" + "Redteams" ] } }, - "/openai/v1/evals": { - "get": { - "operationId": "Evals_listEvals", - "summary": "List all evaluations", - "description": "List evaluations for a project.", + "/redTeams/runs:run": { + "post": { + "operationId": "RedTeams_create", + "description": "Creates a redteam run.", "parameters": [ { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last run from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of runs to retrieve.", - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { "type": "string", "enum": [ - "asc", - "desc" - ], - "default": "asc" - }, - "explode": false + "RedTeams=V1Preview" + ] + } }, { - "name": "order_by", + "name": "api-version", "in": "query", - "required": false, - "description": "Evals can be ordered by creation time or last updated time.\nUse `created_at` for creation time or `updated_at` for last updated time.", + "required": true, + "description": "The API version to use for this operation.", "schema": { - "type": "string", - "enum": [ - "created_at", - "updated_at" - ], - "default": "created_at" - } + "type": "string" + }, + "explode": false } ], "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Eval" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - }, - "post": { - "operationId": "Evals_createEval", - "summary": "Create evaluation", - "description": "Create the structure of an evaluation that can be used to test a model's performance.\nAn evaluation is a set of testing criteria and the config for a data source, which dictates the schema of the data used in the evaluation. After creating an evaluation, you can run it on different models and model parameters. We support several types of graders and datasources.\nFor more information, see the [Evals guide](https://platform.openai.com/docs/guides/evals).", - "parameters": [], - "responses": { - "200": { - "description": "The request has succeeded.", + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Eval" + "$ref": "#/components/schemas/RedTeam" } } } @@ -10531,33 +9818,59 @@ } }, "tags": [ - "Evals" + "Redteams" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateEvalRequest" + "$ref": "#/components/schemas/RedTeam" } } - } + }, + "description": "Redteam to be run" } } }, - "/openai/v1/evals/{eval_id}": { - "delete": { - "operationId": "Evals_deleteEval", - "summary": "Delete an evaluation", - "description": "Delete an evaluation.", + "/schedules": { + "get": { + "operationId": "Schedules_list", + "description": "List all schedules.", "parameters": [ { - "name": "eval_id", - "in": "path", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "type", + "in": "query", + "required": false, + "description": "Filter by the type of schedule.", + "schema": { + "$ref": "#/components/schemas/ScheduleTaskType" + }, + "explode": false + }, + { + "name": "enabled", + "in": "query", + "required": false, + "description": "Filter by the enabled status.", + "schema": { + "type": "boolean" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The ID of the evaluation to delete.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] } } ], @@ -10567,190 +9880,121 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteEvalResponse" + "$ref": "#/components/schemas/PagedSchedule" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Evals" + "Schedules" ] - }, - "get": { - "operationId": "Evals_getEval", - "summary": "Get an evaluation", - "description": "Get an evaluation by ID.", + } + }, + "/schedules/{id}": { + "delete": { + "operationId": "Schedules_delete", + "description": "Delete a schedule.", "parameters": [ { - "name": "eval_id", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "id", "in": "path", "required": true, - "description": "The ID of the evaluation to retrieve.", + "description": "Identifier of the schedule.", "schema": { "type": "string" } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } } ], "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Eval" - } - } - } + "204": { + "description": "There is no content to send for this request, but the headers may be useful." }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Evals" + "Schedules" ] }, - "post": { - "operationId": "Evals_updateEval", - "summary": "Update an evaluation", - "description": "Update certain properties of an evaluation.", + "get": { + "operationId": "Schedules_get", + "description": "Get a schedule by id.", "parameters": [ { - "name": "eval_id", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "id", "in": "path", "required": true, - "description": "The ID of the evaluation to update.", + "description": "Identifier of the schedule.", "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Eval" - } - } - } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateEvalParametersBody" - } - } - } - } - } - }, - "/openai/v1/evals/{eval_id}/runs": { - "get": { - "operationId": "Evals_listRuns", - "summary": "Get a list of runs for an evaluation", - "description": "Get a list of runs for an evaluation.", - "parameters": [ { - "name": "eval_id", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The ID of the evaluation to retrieve runs for.", - "schema": { - "type": "string" - } - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last run from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of runs to retrieve.", - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", - "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" - }, - "explode": false - }, - { - "name": "status", - "in": "query", - "required": false, - "description": "Filter runs by status. One of `queued` | `in_progress` | `failed` | `completed` | `canceled`.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { "type": "string", "enum": [ - "queued", - "in_progress", - "completed", - "canceled", - "failed" + "Schedules=V1Preview" ] - }, - "explode": false + } } ], "responses": { @@ -10759,64 +10003,62 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRun" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/Schedule" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Evals" + "Schedules" ] }, - "post": { - "operationId": "Evals_createEvalRun", - "summary": "Create evaluation run", + "put": { + "operationId": "Schedules_createOrUpdate", + "description": "Create or update operation template.", "parameters": [ { - "name": "eval_id", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "id", "in": "path", "required": true, - "description": "The ID of the evaluation to create a run for.", + "description": "Identifier of the schedule.", "schema": { "type": "string" } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } } ], "responses": { @@ -10825,59 +10067,104 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRun" + "$ref": "#/components/schemas/Schedule" + } + } + } + }, + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Schedule" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Evals" + "Schedules" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateEvalRunRequest" + "$ref": "#/components/schemas/Schedule" } } - } + }, + "description": "The resource instance." } } }, - "/openai/v1/evals/{eval_id}/runs/{run_id}": { - "delete": { - "operationId": "Evals_deleteEvalRun", - "summary": "Delete evaluation run", - "description": "Delete an eval run.", + "/schedules/{id}/runs": { + "get": { + "operationId": "Schedules_listRuns", + "description": "List all schedule runs.", "parameters": [ { - "name": "eval_id", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "id", "in": "path", "required": true, - "description": "The ID of the evaluation to delete the run from.", + "description": "Identifier of the schedule.", "schema": { "type": "string" } }, { - "name": "run_id", - "in": "path", + "name": "type", + "in": "query", + "required": false, + "description": "Filter by the type of schedule.", + "schema": { + "$ref": "#/components/schemas/ScheduleTaskType" + }, + "explode": false + }, + { + "name": "enabled", + "in": "query", + "required": false, + "description": "Filter by the enabled status.", + "schema": { + "type": "boolean" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The ID of the run to delete.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] } } ], @@ -10887,36 +10174,46 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteEvalRunResponse" + "$ref": "#/components/schemas/PagedScheduleRun" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Evals" + "Schedules" ] - }, + } + }, + "/schedules/{schedule_id}/runs/{run_id}": { "get": { - "operationId": "Evals_getEvalRun", - "summary": "Get an evaluation run", - "description": "Get an evaluation run by ID.", + "operationId": "Schedules_getRun", + "description": "Get a schedule run by id.", "parameters": [ { - "name": "eval_id", + "name": "schedule_id", "in": "path", "required": true, - "description": "The ID of the evaluation to retrieve runs for.", + "description": "The unique identifier of the schedule.", "schema": { "type": "string" } @@ -10925,10 +10222,32 @@ "name": "run_id", "in": "path", "required": true, - "description": "The ID of the run to retrieve.", + "description": "The unique identifier of the schedule run.", "schema": { "type": "string" } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -10937,7 +10256,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRun" + "$ref": "#/components/schemas/ScheduleRun" } } } @@ -10954,31 +10273,36 @@ } }, "tags": [ - "Evals" + "Schedules" ] - }, + } + }, + "/skills": { "post": { - "operationId": "Evals_cancelEvalRun", - "summary": "Cancel evaluation run", - "description": "Cancel an ongoing evaluation run.", + "operationId": "Skills_createSkill", + "description": "Creates a skill.", "parameters": [ { - "name": "eval_id", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The ID of the evaluation whose run you want to cancel.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "Skills=V1Preview" + ] } }, { - "name": "run_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the run to cancel.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -10987,7 +10311,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRun" + "$ref": "#/components/schemas/SkillObject" } } } @@ -11004,85 +10328,118 @@ } }, "tags": [ - "Evals" - ] - } - }, - "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items": { + "Skills" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 63, + "description": "The unique name of the skill." + }, + "description": { + "type": "string", + "maxLength": 1024, + "description": "A human-readable description of the skill." + }, + "instructions": { + "type": "string", + "maxLength": 102400, + "description": "Instructions that define the behavior of the skill." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of key-value pairs associated with the skill." + } + }, + "required": [ + "name" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + }, "get": { - "operationId": "Evals_getEvalRunOutputItems", - "summary": "Get evaluation run output items", - "description": "Get a list of output items for an evaluation run.", + "operationId": "Skills_listSkills", + "description": "Returns the list of all skills.", "parameters": [ { - "name": "eval_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", - "required": true, - "description": "The ID of the run to retrieve output items for.", + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false }, { - "name": "after", + "name": "order", "in": "query", "required": false, - "description": "Identifier for the last run from the previous pagination request.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "string" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, { - "name": "limit", + "name": "after", "in": "query", "required": false, - "description": "Number of runs to retrieve.", + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 + "type": "string" }, "explode": false }, { - "name": "order", + "name": "before", "in": "query", "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" + "type": "string" }, "explode": false }, { - "name": "status", - "in": "query", - "required": false, - "description": "Filter output items by status. Use `failed` to filter by failed output\nitems or `pass` to filter by passed output items.", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { "type": "string", "enum": [ - "fail", - "pass" + "Skills=V1Preview" ] } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -11100,7 +10457,7 @@ "data": { "type": "array", "items": { - "$ref": "#/components/schemas/EvalRunOutputItem" + "$ref": "#/components/schemas/SkillObject" }, "description": "The requested list of items." }, @@ -11134,42 +10491,50 @@ } }, "tags": [ - "Evals" - ] + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } } }, - "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}": { + "/skills/{skill_name}": { "get": { - "operationId": "Evals_getEvalRunOutputItem", - "summary": "Get an output item of an evaluation run", - "description": "Get an evaluation run output item by ID.", + "operationId": "Skills_getSkill", + "description": "Retrieves a skill.", "parameters": [ { - "name": "eval_id", + "name": "skill_name", "in": "path", "required": true, - "description": "The ID of the evaluation to retrieve runs for.", + "description": "The unique name of the skill.", "schema": { "type": "string" } }, { - "name": "run_id", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The ID of the run to retrieve.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "Skills=V1Preview" + ] } }, { - "name": "output_item_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the output item to retrieve.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -11178,7 +10543,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRunOutputItem" + "$ref": "#/components/schemas/SkillObject" } } } @@ -11195,15 +10560,39 @@ } }, "tags": [ - "Evals" - ] - } - }, - "/openai/v1/fine_tuning/jobs": { - "post": { - "operationId": "createFineTuningJob", - "description": "Creates a fine-tuning job which begins the process of creating a new model from a given dataset.\n\nResponse includes details of the enqueued job including job status and the name of the fine-tuned models once complete.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + }, + "post": { + "operationId": "Skills_updateSkill", + "description": "Updates an existing skill.", "parameters": [ + { + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, { "name": "api-version", "in": "query", @@ -11221,7 +10610,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/SkillObject" } } } @@ -11238,44 +10627,67 @@ } }, "tags": [ - "Fine-Tuning" + "Skills" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.CreateFineTuningJobRequest" + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 1024, + "description": "A human-readable description of the skill." + }, + "instructions": { + "type": "string", + "maxLength": 102400, + "description": "Instructions that define the behavior of the skill." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of key-value pairs associated with the skill." + } + } } } } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] } }, - "get": { - "operationId": "listPaginatedFineTuningJobs", - "description": "List your organization's fine-tuning jobs", + "delete": { + "operationId": "Skills_deleteSkill", + "description": "Deletes a skill.", "parameters": [ { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last job from the previous pagination request.", + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of fine-tuning jobs to retrieve.", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } }, { "name": "api-version", @@ -11294,7 +10706,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ListPaginatedFineTuningJobsResponse" + "$ref": "#/components/schemas/DeleteSkillResponse" } } } @@ -11311,24 +10723,41 @@ } }, "tags": [ - "Fine-Tuning" - ] + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}": { + "/skills/{skill_name}:download": { "get": { - "operationId": "retrieveFineTuningJob", - "description": "Get info about a fine-tuning job.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", + "operationId": "Skills_downloadSkill", + "description": "Downloads a skill package.", "parameters": [ { - "name": "fine_tuning_job_id", + "name": "skill_name", "in": "path", "required": true, - "description": "The ID of the fine-tuning job.", + "description": "The unique name of the skill.", "schema": { "type": "string" } }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, { "name": "api-version", "in": "query", @@ -11342,11 +10771,12 @@ ], "responses": { "200": { - "description": "The request has succeeded.", + "description": "The response body for downloading a skill package.", "content": { - "application/json": { + "application/gzip": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "type": "string", + "format": "binary" } } } @@ -11363,22 +10793,30 @@ } }, "tags": [ - "Fine-Tuning" - ] + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel": { + "/skills:import": { "post": { - "operationId": "cancelFineTuningJob", - "description": "Immediately cancel a fine-tune job.", + "operationId": "Skills_createSkillFromPackage", + "description": "Creates a skill from a GZip package.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The ID of the fine-tuning job to cancel.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "Skills=V1Preview" + ] } }, { @@ -11398,7 +10836,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/SkillObject" } } } @@ -11415,46 +10853,44 @@ } }, "tags": [ - "Fine-Tuning" - ] + "Skills" + ], + "requestBody": { + "required": true, + "content": { + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" + } + } + }, + "description": "The GZip package used to create the skill." + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints": { - "get": { - "operationId": "listFineTuningJobCheckpoints", - "description": "List checkpoints for a fine-tuning job.", + "/toolsets": { + "post": { + "operationId": "createToolset", + "description": "Create a toolset.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The ID of the fine-tuning job to get checkpoints for.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] } }, - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last checkpoint ID from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of checkpoints to retrieve.", - "schema": { - "type": "integer", - "format": "int32", - "default": 10 - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -11472,7 +10908,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ListFineTuningJobCheckpointsResponse" + "$ref": "#/components/schemas/ToolsetObject" } } } @@ -11489,46 +10925,112 @@ } }, "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events": { + "Toolsets" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the toolset." + }, + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the toolset." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the toolset." + }, + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" + }, + "description": "The list of tools to include in the toolset." + } + }, + "required": [ + "name", + "tools" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + }, "get": { - "operationId": "listFineTuningJobEvents", - "description": "Get fine-grained status updates for a fine-tuning job.", + "operationId": "listToolsets", + "description": "List all toolsets.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to get events for.", + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false }, { "name": "after", "in": "query", "required": false, - "description": "Identifier for the last event from the previous pagination request.", + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { "type": "string" }, "explode": false }, { - "name": "limit", + "name": "before", "in": "query", "required": false, - "description": "Number of events to retrieve.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { - "type": "integer", - "format": "int32", - "default": 20 + "type": "string" }, "explode": false }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, { "name": "api-version", "in": "query", @@ -11546,7 +11048,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ListFineTuningJobEventsResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolsetObject" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -11563,24 +11091,41 @@ } }, "tags": [ - "Fine-Tuning" - ] + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause": { + "/toolsets/{tool_set_name}": { "post": { - "operationId": "pauseFineTuningJob", - "description": "Pause a running fine-tune job.", + "operationId": "updateToolset", + "description": "Update a toolset.", "parameters": [ { - "name": "fine_tuning_job_id", + "name": "tool_set_name", "in": "path", "required": true, - "description": "The ID of the fine-tuning job to pause.", + "description": "The name of the toolset to update.", "schema": { "type": "string" } }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, { "name": "api-version", "in": "query", @@ -11598,7 +11143,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/ToolsetObject" } } } @@ -11615,24 +11160,73 @@ } }, "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume": { - "post": { - "operationId": "resumeFineTuningJob", - "description": "Resume a paused fine-tune job.", + "Toolsets" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the toolset." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the toolset." + }, + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" + }, + "description": "The list of tools to include in the toolset." + } + }, + "required": [ + "tools" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + }, + "get": { + "operationId": "getToolset", + "description": "Retrieve a toolset.", "parameters": [ { - "name": "fine_tuning_job_id", + "name": "tool_set_name", "in": "path", "required": true, - "description": "The ID of the fine-tuning job to resume.", + "description": "The name of the toolset to retrieve.", "schema": { "type": "string" } }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, { "name": "api-version", "in": "query", @@ -11650,7 +11244,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/ToolsetObject" } } } @@ -11667,35 +11261,65 @@ } }, "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/responses": { - "post": { - "operationId": "createResponse_createResponseStream", - "parameters": [], - "description": "Creates a model response. Creates a model response (streaming response).", - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.Response" - } - }, - "text/event-stream": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" - } - } + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + }, + "delete": { + "operationId": "deleteToolset", + "description": "Delete a toolset.", + "parameters": [ + { + "name": "tool_set_name", + "in": "path", + "required": true, + "description": "The name of the toolset to delete.", + "schema": { + "type": "string" } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteToolsetResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } @@ -11704,491 +11328,811 @@ } }, "tags": [ - "Responses" + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + } + }, + "/trainingJobs": { + "get": { + "operationId": "TrainingJobs_list", + "description": "List training jobs.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "jobType", + "in": "query", + "required": false, + "description": "Filter by job type (e.g. 'Command').", + "schema": { + "$ref": "#/components/schemas/JobType" + }, + "explode": false + }, + { + "name": "tag", + "in": "query", + "required": false, + "description": "Filter jobs by tag in the format 'key=value' (e.g., 'framework=pytorch').", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "listViewType", + "in": "query", + "required": false, + "description": "Specifies which view type to apply when listing jobs.", + "schema": { + "$ref": "#/components/schemas/ListViewType" + }, + "explode": false + }, + { + "name": "properties", + "in": "query", + "required": false, + "description": "Comma-separated user property names and optionally values. Example: prop1,prop2=value2.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJob" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + }, + "post": { + "operationId": "TrainingJobs_create", + "description": "Create and execute a model training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry job creation.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Job" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "anyOf": [ - { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "top_logprobs": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "temperature": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "top_p": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "user": { - "type": "string", - "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", - "deprecated": true - }, - "safety_identifier": { - "type": "string", - "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." - }, - "prompt_cache_key": { - "type": "string", - "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." - }, - "service_tier": { - "$ref": "#/components/schemas/OpenAI.ServiceTier" - }, - "prompt_cache_retention": { - "type": "string", - "enum": [ - "in-memory", - "24h" - ], - "nullable": true - }, - "previous_response_id": { - "type": "string", - "nullable": true - }, - "model": { - "type": "string", - "description": "The model deployment to use for the creation of this response." - }, - "reasoning": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Reasoning" - } - ], - "nullable": true - }, - "background": { - "type": "boolean", - "nullable": true - }, - "max_output_tokens": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "max_tool_calls": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "text": { - "$ref": "#/components/schemas/OpenAI.ResponseTextParam" - }, - "tools": { - "$ref": "#/components/schemas/OpenAI.ToolsArray" - }, - "tool_choice": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" - }, - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" - } - ] - }, - "prompt": { - "$ref": "#/components/schemas/OpenAI.Prompt" - }, - "truncation": { - "type": "string", - "enum": [ - "auto", - "disabled" - ], - "nullable": true, - "default": "disabled" - }, - "input": { - "$ref": "#/components/schemas/OpenAI.InputParam" - }, - "include": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "nullable": true - }, - "parallel_tool_calls": { - "type": "boolean", - "nullable": true, - "default": true - }, - "store": { - "type": "boolean", - "nullable": true, - "default": true - }, - "instructions": { - "type": "string", - "nullable": true - }, - "stream": { - "type": "boolean", - "nullable": true - }, - "stream_options": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" - } - ], - "nullable": true - }, - "conversation": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ConversationParam" - } - ], - "nullable": true - }, - "context_management": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ContextManagementParam" - }, - "nullable": true, - "description": "Context management configuration for this request." - }, - "agent_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "The agent to use for generating the response." - }, - "structured_inputs": { - "type": "object", - "additionalProperties": {}, - "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." - } - } - }, - { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "top_logprobs": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "temperature": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "top_p": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "user": { - "type": "string", - "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", - "deprecated": true - }, - "safety_identifier": { - "type": "string", - "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." - }, - "prompt_cache_key": { - "type": "string", - "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." - }, - "service_tier": { - "$ref": "#/components/schemas/OpenAI.ServiceTier" - }, - "prompt_cache_retention": { - "type": "string", - "enum": [ - "in-memory", - "24h" - ], - "nullable": true - }, - "previous_response_id": { - "type": "string", - "nullable": true - }, - "model": { - "type": "string", - "description": "The model deployment to use for the creation of this response." - }, - "reasoning": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Reasoning" - } - ], - "nullable": true - }, - "background": { - "type": "boolean", - "nullable": true - }, - "max_output_tokens": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "max_tool_calls": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "text": { - "$ref": "#/components/schemas/OpenAI.ResponseTextParam" - }, - "tools": { - "$ref": "#/components/schemas/OpenAI.ToolsArray" - }, - "tool_choice": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" - }, - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" - } - ] - }, - "prompt": { - "$ref": "#/components/schemas/OpenAI.Prompt" - }, - "truncation": { - "type": "string", - "enum": [ - "auto", - "disabled" - ], - "nullable": true, - "default": "disabled" - }, - "input": { - "$ref": "#/components/schemas/OpenAI.InputParam" - }, - "include": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "nullable": true - }, - "parallel_tool_calls": { - "type": "boolean", - "nullable": true, - "default": true - }, - "store": { - "type": "boolean", - "nullable": true, - "default": true - }, - "instructions": { - "type": "string", - "nullable": true - }, - "stream": { - "type": "boolean", - "nullable": true - }, - "stream_options": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" - } - ], - "nullable": true - }, - "conversation": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ConversationParam" - } - ], - "nullable": true - }, - "context_management": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ContextManagementParam" - }, - "nullable": true, - "description": "Context management configuration for this request." - }, - "agent_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "The agent to use for generating the response." - }, - "structured_inputs": { - "type": "object", - "additionalProperties": {}, - "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." - } - } - } - ] + "$ref": "#/components/schemas/Job" + } + } + }, + "description": "The training job to create." + } + } + }, + "/trainingJobs/{jobName}/artifacts": { + "get": { + "operationId": "TrainingJobArtifacts_listArtifacts", + "description": "List artifacts for the current view of a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/artifacts:content": { + "get": { + "operationId": "TrainingJobArtifacts_downloadArtifact", + "description": "Download training job artifact content.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/artifacts:contentInfo": { + "get": { + "operationId": "TrainingJobArtifacts_getArtifactContentInfo", + "description": "Get download information for a training job artifact.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/artifacts:metadata": { + "get": { + "operationId": "TrainingJobArtifacts_getArtifactMetadata", + "description": "Get metadata for a training job artifact.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/metrics": { + "get": { + "operationId": "TrainingJobMetrics_listMetrics", + "description": "List metrics emitted by the current view of a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetric" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/metrics/{metricName}": { + "get": { + "operationId": "TrainingJobMetrics_getMetric", + "description": "Get the full history for a training job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricPoint" + } } } - } - } - }, - "get": { - "operationId": "listResponses", - "description": "Returns the list of all responses.", - "parameters": [ + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/metrics/{metricName}:aggregates": { + "get": { + "operationId": "TrainingJobMetrics_getMetricAggregates", + "description": "Get aggregate values for a training job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false + "type": "string" + } }, { - "name": "order", + "name": "startTimeUtc", "in": "query", "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "description": "Start of the metric time range.", "schema": { - "$ref": "#/components/schemas/PageOrder" + "type": "string", + "format": "date-time" }, "explode": false }, { - "name": "after", + "name": "endTimeUtc", "in": "query", "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "description": "End of the metric time range.", "schema": { - "type": "string" + "type": "string", + "format": "date-time" }, "explode": false }, { - "name": "before", + "name": "minStep", "in": "query", "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "description": "Minimum metric step to include.", "schema": { - "type": "string" + "type": "integer", + "format": "int64" }, "explode": false }, { - "name": "agent_name", + "name": "maxStep", "in": "query", "required": false, - "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", + "description": "Maximum metric step to include.", "schema": { - "type": "string" + "type": "integer", + "format": "int64" }, "explode": false }, { - "name": "agent_id", + "name": "limit", "in": "query", "required": false, - "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", + "description": "Maximum number of metric points to return.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" }, "explode": false }, { - "name": "conversation_id", + "name": "api-version", "in": "query", - "required": false, - "description": "Filter by conversation ID. If provided, only responses associated with the specified conversation will be returned.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, @@ -12201,33 +12145,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Response" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/PagedJobMetricAggregate" } } } @@ -12244,121 +12162,118 @@ } }, "tags": [ - "Responses" + "TrainingJobs" ] } }, - "/openai/v1/responses/compact": { - "post": { - "operationId": "compactResponseConversation", - "description": "Produces a compaction of a responses conversation.", - "parameters": [], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CompactResource" - } - } + "/trainingJobs/{jobName}/metrics/{metricName}:sample": { + "get": { + "operationId": "TrainingJobMetrics_getMetricSample", + "description": "Get one sampled value or window for a training job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CompactResponseMethodPublicBody" - } + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" } - } - } - } - }, - "/openai/v1/responses/{response_id}": { - "get": { - "operationId": "getResponse_getResponseStream", - "parameters": [ + }, { - "name": "response_id", + "name": "metricName", "in": "path", "required": true, + "description": "The metric name.", "schema": { "type": "string" } }, { - "name": "include[]", + "name": "startTimeUtc", "in": "query", "required": false, + "description": "Start of the metric time range.", "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "default": [] - } + "type": "string", + "format": "date-time" + }, + "explode": false }, { - "name": "stream", + "name": "endTimeUtc", "in": "query", "required": false, + "description": "End of the metric time range.", "schema": { - "type": "boolean", - "default": false + "type": "string", + "format": "date-time" }, "explode": false }, { - "name": "starting_after", + "name": "minStep", "in": "query", "required": false, + "description": "Minimum metric step to include.", "schema": { "type": "integer", - "format": "int32" + "format": "int64" }, "explode": false }, { - "name": "accept", - "in": "header", + "name": "maxStep", + "in": "query", "required": false, + "description": "Maximum metric step to include.", "schema": { - "type": "string", - "enum": [ - "text/event-stream" - ] - } + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], - "description": "Retrieves a model response with the given ID. Retrieves a model response with the given ID (streaming response).", "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.Response" - } - }, - "text/event-stream": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -12375,21 +12290,109 @@ } }, "tags": [ - "Responses" + "TrainingJobs" ] - }, - "delete": { - "operationId": "deleteResponse", - "description": "Deletes a model response.", + } + }, + "/trainingJobs/{jobName}/metrics/{metricName}:samples": { + "get": { + "operationId": "TrainingJobMetrics_getMetricSamples", + "description": "Get sampled values for a training job metric.", "parameters": [ { - "name": "response_id", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", "in": "path", "required": true, - "description": "The ID of the response to delete.", + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", "schema": { "type": "string" } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -12398,7 +12401,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteResponseResult" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -12415,23 +12418,45 @@ } }, "tags": [ - "Responses" + "TrainingJobs" ] } }, - "/openai/v1/responses/{response_id}/cancel": { - "post": { - "operationId": "cancelResponse", - "description": "Cancels a model response.", + "/trainingJobs/{jobName}/metrics:lastValues": { + "get": { + "operationId": "TrainingJobMetrics_getMetricLastValues", + "description": "Get the latest values for metrics emitted by the current view of a training job.", "parameters": [ { - "name": "response_id", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", "in": "path", "required": true, - "description": "The ID of the response to cancel.", + "description": "The training job name.", "schema": { "type": "string" } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -12440,7 +12465,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.Response" + "$ref": "#/components/schemas/PagedJobMetricLastValue" } } } @@ -12457,19 +12482,32 @@ } }, "tags": [ - "Responses" + "TrainingJobs" ] } }, - "/openai/v1/responses/{response_id}/input_items": { + "/trainingJobs/{jobName}/outputs": { "get": { - "operationId": "listInputItems", - "description": "Returns a list of input items for a given response.", + "operationId": "TrainingJobOutputs_listOutputs", + "description": "List outputs produced by a training job.", "parameters": [ { - "name": "response_id", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", "in": "path", "required": true, + "description": "The training job name.", "schema": { "type": "string" } @@ -12478,39 +12516,28 @@ "name": "limit", "in": "query", "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "description": "Maximum number of items to return.", "schema": { "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" + "format": "int32" }, "explode": false }, { - "name": "after", + "name": "skipToken", "in": "query", "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "description": "Continuation token returned by a previous list request.", "schema": { "type": "string" }, "explode": false }, { - "name": "before", + "name": "api-version", "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, @@ -12523,33 +12550,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ItemResource" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/PagedJobOutputReference" } } } @@ -12566,18 +12567,15 @@ } }, "tags": [ - "Responses" + "TrainingJobs" ] } }, - "/redTeams/runs": { + "/trainingJobs/{jobName}/outputs/{outputName}": { "get": { - "operationId": "RedTeams_list", - "description": "List a redteam by name.", + "operationId": "TrainingJobOutputs_getOutput", + "description": "Get one output produced by a training job.", "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, { "name": "Foundry-Features", "in": "header", @@ -12586,9 +12584,37 @@ "schema": { "type": "string", "enum": [ - "RedTeams=V1Preview" + "Jobs=V1Preview" ] } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "outputName", + "in": "path", + "required": true, + "description": "The output name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -12597,64 +12623,83 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedRedTeam" + "$ref": "#/components/schemas/JobOutputReference" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Redteams" + "TrainingJobs" ] } }, - "/redTeams/runs/{name}": { + "/trainingJobs/{jobName}/runs": { "get": { - "operationId": "RedTeams_get", - "description": "Get a redteam by name.", + "operationId": "TrainingJobRuns_listRuns", + "description": "List runs for a training job.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false }, { - "name": "name", - "in": "path", - "required": true, - "description": "Identifier of the red team run.", + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "Foundry-Features", - "in": "header", + "name": "api-version", + "in": "query", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The API version to use for this operation.", "schema": { - "type": "string", - "enum": [ - "RedTeams=V1Preview" - ] - } + "type": "string" + }, + "explode": false } ], "responses": { @@ -12663,40 +12708,31 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RedTeam" + "$ref": "#/components/schemas/PagedJobRun" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Redteams" + "TrainingJobs" ] } }, - "/redTeams/runs:run": { - "post": { - "operationId": "RedTeams_create", - "description": "Creates a redteam run.", + "/trainingJobs/{jobName}/runs/{runId}": { + "get": { + "operationId": "TrainingJobRuns_getRun", + "description": "Get one run for a training job.", "parameters": [ { "name": "Foundry-Features", @@ -12706,10 +12742,28 @@ "schema": { "type": "string", "enum": [ - "RedTeams=V1Preview" + "Jobs=V1Preview" ] } }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -12722,12 +12776,12 @@ } ], "responses": { - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", + "200": { + "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RedTeam" + "$ref": "#/components/schemas/JobRun" } } } @@ -12744,60 +12798,85 @@ } }, "tags": [ - "Redteams" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RedTeam" - } - } - }, - "description": "Redteam to be run" - } + "TrainingJobs" + ] } }, - "/schedules": { + "/trainingJobs/{jobName}/runs/{runId}/artifacts": { "get": { - "operationId": "Schedules_list", - "description": "List all schedules.", + "operationId": "TrainingJobRunArtifacts_listRunArtifacts", + "description": "List artifacts for a specific training job run.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } }, { - "name": "type", + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", "in": "query", "required": false, - "description": "Filter by the type of schedule.", + "description": "Maximum number of items to return.", "schema": { - "$ref": "#/components/schemas/ScheduleTaskType" + "type": "integer", + "format": "int32" }, "explode": false }, { - "name": "enabled", + "name": "skipToken", "in": "query", "required": false, - "description": "Filter by the enabled status.", + "description": "Continuation token returned by a previous list request.", "schema": { - "type": "boolean" + "type": "string" }, "explode": false }, { - "name": "Foundry-Features", - "in": "header", + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The API version to use for this operation.", "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } + "type": "string" + }, + "explode": false } ], "responses": { @@ -12806,121 +12885,165 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedSchedule" + "$ref": "#/components/schemas/PagedJobArtifact" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" + "TrainingJobs" ] } }, - "/schedules/{id}": { - "delete": { - "operationId": "Schedules_delete", - "description": "Delete a schedule.", + "/trainingJobs/{jobName}/runs/{runId}/artifacts:content": { + "get": { + "operationId": "TrainingJobRunArtifacts_downloadRunArtifact", + "description": "Download artifact content from a specific training job run.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } }, { - "name": "id", + "name": "jobName", "in": "path", "required": true, - "description": "Identifier of the schedule.", + "description": "The training job name.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", + "name": "runId", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The run identifier.", "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] + "type": "string" } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { - "204": { - "description": "There is no content to send for this request, but the headers may be useful." - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", + "200": { + "description": "The request has succeeded.", + "content": { + "application/octet-stream": { "schema": { - "type": "string" + "type": "string", + "format": "binary" } } - }, + } + }, + "default": { + "description": "An unexpected error response.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" + "TrainingJobs" ] - }, + } + }, + "/trainingJobs/{jobName}/runs/{runId}/artifacts:contentInfo": { "get": { - "operationId": "Schedules_get", - "description": "Get a schedule by id.", + "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfo", + "description": "Get download information for an artifact from a specific training job run.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } }, { - "name": "id", + "name": "jobName", "in": "path", "required": true, - "description": "Identifier of the schedule.", + "description": "The training job name.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", + "name": "runId", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The run identifier.", "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] + "type": "string" } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -12929,62 +13052,81 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Schedule" + "$ref": "#/components/schemas/JobArtifactContentInfo" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" + "TrainingJobs" ] - }, - "put": { - "operationId": "Schedules_createOrUpdate", - "description": "Create or update operation template.", + } + }, + "/trainingJobs/{jobName}/runs/{runId}/artifacts:metadata": { + "get": { + "operationId": "TrainingJobRunArtifacts_getRunArtifactMetadata", + "description": "Get metadata for an artifact from a specific training job run.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } }, { - "name": "id", + "name": "jobName", "in": "path", "required": true, - "description": "Identifier of the schedule.", + "description": "The training job name.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", + "name": "runId", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The run identifier.", "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] + "type": "string" } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -12993,105 +13135,92 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - } - }, - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" + "$ref": "#/components/schemas/JobArtifact" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - }, - "description": "The resource instance." - } + "TrainingJobs" + ] } }, - "/schedules/{id}/runs": { + "/trainingJobs/{jobName}/runs/{runId}/metrics": { "get": { - "operationId": "Schedules_listRuns", - "description": "List all schedule runs.", + "operationId": "TrainingJobRunMetrics_listRunMetrics", + "description": "List metrics emitted by a specific training job run.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } }, { - "name": "id", + "name": "jobName", "in": "path", "required": true, - "description": "Identifier of the schedule.", + "description": "The training job name.", "schema": { "type": "string" } }, { - "name": "type", + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", "in": "query", "required": false, - "description": "Filter by the type of schedule.", + "description": "Maximum number of items to return.", "schema": { - "$ref": "#/components/schemas/ScheduleTaskType" + "type": "integer", + "format": "int32" }, "explode": false }, { - "name": "enabled", + "name": "skipToken", "in": "query", "required": false, - "description": "Filter by the enabled status.", + "description": "Continuation token returned by a previous list request.", "schema": { - "type": "boolean" + "type": "string" }, "explode": false }, { - "name": "Foundry-Features", - "in": "header", + "name": "api-version", + "in": "query", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The API version to use for this operation.", "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } + "type": "string" + }, + "explode": false } ], "responses": { @@ -13100,70 +13229,125 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedScheduleRun" + "$ref": "#/components/schemas/PagedJobMetric" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" + "TrainingJobs" ] } }, - "/schedules/{schedule_id}/runs/{run_id}": { + "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}": { "get": { - "operationId": "Schedules_getRun", - "description": "Get a schedule run by id.", + "operationId": "TrainingJobRunMetrics_getRunMetric", + "description": "Get the full history for a metric from a specific training job run.", "parameters": [ { - "name": "schedule_id", - "in": "path", - "required": true, - "description": "The unique identifier of the schedule.", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int64" + }, + "explode": false }, { - "name": "run_id", - "in": "path", - "required": true, - "description": "The unique identifier of the schedule run.", + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int64" + }, + "explode": false }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } + "type": "integer", + "format": "int32" + }, + "explode": false }, { "name": "api-version", @@ -13182,7 +13366,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ScheduleRun" + "$ref": "#/components/schemas/PagedJobMetricPoint" } } } @@ -13199,14 +13383,14 @@ } }, "tags": [ - "Schedules" + "TrainingJobs" ] } }, - "/skills": { - "post": { - "operationId": "Skills_createSkill", - "description": "Creates a skill.", + "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:aggregates": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetricAggregates", + "description": "Get aggregate metric values from a specific training job run.", "parameters": [ { "name": "Foundry-Features", @@ -13216,146 +13400,91 @@ "schema": { "type": "string", "enum": [ - "Skills=V1Preview" + "Jobs=V1Preview" ] } }, { - "name": "api-version", - "in": "query", + "name": "jobName", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The training job name.", "schema": { "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillObject" - } - } } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" } - } - }, - "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 63, - "description": "The unique name of the skill." - }, - "description": { - "type": "string", - "maxLength": 1024, - "description": "A human-readable description of the skill." - }, - "instructions": { - "type": "string", - "maxLength": 102400, - "description": "Instructions that define the behavior of the skill." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of key-value pairs associated with the skill." - } - }, - "required": [ - "name" - ] - } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - }, - "get": { - "operationId": "Skills_listSkills", - "description": "Returns the list of all skills.", - "parameters": [ + }, { - "name": "limit", + "name": "startTimeUtc", "in": "query", "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "description": "Start of the metric time range.", "schema": { - "type": "integer", - "format": "int32", - "default": 20 + "type": "string", + "format": "date-time" }, "explode": false }, { - "name": "order", + "name": "endTimeUtc", "in": "query", "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "description": "End of the metric time range.", "schema": { - "$ref": "#/components/schemas/PageOrder" + "type": "string", + "format": "date-time" }, "explode": false }, { - "name": "after", + "name": "minStep", "in": "query", "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "description": "Minimum metric step to include.", "schema": { - "type": "string" + "type": "integer", + "format": "int64" }, "explode": false }, { - "name": "before", + "name": "maxStep", "in": "query", "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "description": "Maximum metric step to include.", "schema": { - "type": "string" + "type": "integer", + "format": "int64" }, "explode": false }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } + "type": "integer", + "format": "int32" + }, + "explode": false }, { "name": "api-version", @@ -13374,33 +13503,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SkillObject" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/PagedJobMetricAggregate" } } } @@ -13417,29 +13520,15 @@ } }, "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } + "TrainingJobs" + ] } }, - "/skills/{skill_name}": { + "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:sample": { "get": { - "operationId": "Skills_getSkill", - "description": "Retrieves a skill.", + "operationId": "TrainingJobRunMetrics_getRunMetricSample", + "description": "Get one sampled value or window from a specific training job run.", "parameters": [ - { - "name": "skill_name", - "in": "path", - "required": true, - "description": "The unique name of the skill.", - "schema": { - "type": "string" - } - }, { "name": "Foundry-Features", "in": "header", @@ -13448,77 +13537,92 @@ "schema": { "type": "string", "enum": [ - "Skills=V1Preview" + "Jobs=V1Preview" ] } }, { - "name": "api-version", - "in": "query", + "name": "jobName", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The training job name.", "schema": { "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillObject" - } - } } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - }, - "post": { - "operationId": "Skills_updateSkill", - "description": "Updates an existing skill.", - "parameters": [ { - "name": "skill_name", + "name": "runId", "in": "path", "required": true, - "description": "The unique name of the skill.", + "description": "The run identifier.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", + "name": "metricName", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The metric name.", "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] + "type": "string" } }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -13536,7 +13640,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillObject" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -13553,56 +13657,15 @@ } }, "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 1024, - "description": "A human-readable description of the skill." - }, - "instructions": { - "type": "string", - "maxLength": 102400, - "description": "Instructions that define the behavior of the skill." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of key-value pairs associated with the skill." - } - } - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - }, - "delete": { - "operationId": "Skills_deleteSkill", - "description": "Deletes a skill.", + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:samples": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetricSamples", + "description": "Get sampled metric values from a specific training job run.", "parameters": [ - { - "name": "skill_name", - "in": "path", - "required": true, - "description": "The unique name of the skill.", - "schema": { - "type": "string" - } - }, { "name": "Foundry-Features", "in": "header", @@ -13611,78 +13674,91 @@ "schema": { "type": "string", "enum": [ - "Skills=V1Preview" + "Jobs=V1Preview" ] } }, { - "name": "api-version", - "in": "query", + "name": "jobName", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The training job name.", "schema": { "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteSkillResponse" - } - } } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" } - } - }, - "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - } - }, - "/skills/{skill_name}:download": { - "get": { - "operationId": "Skills_downloadSkill", - "description": "Downloads a skill package.", - "parameters": [ + }, { - "name": "skill_name", + "name": "metricName", "in": "path", "required": true, - "description": "The unique name of the skill.", + "description": "The metric name.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } + "type": "integer", + "format": "int32" + }, + "explode": false }, { "name": "api-version", @@ -13697,12 +13773,11 @@ ], "responses": { "200": { - "description": "The response body for downloading a skill package.", + "description": "The request has succeeded.", "content": { - "application/gzip": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -13719,19 +13794,14 @@ } }, "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } + "TrainingJobs" + ] } }, - "/skills:import": { - "post": { - "operationId": "Skills_createSkillFromPackage", - "description": "Creates a skill from a GZip package.", + "/trainingJobs/{jobName}/runs/{runId}/metrics:lastValues": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetricLastValues", + "description": "Get latest metric values for a specific training job run.", "parameters": [ { "name": "Foundry-Features", @@ -13741,10 +13811,28 @@ "schema": { "type": "string", "enum": [ - "Skills=V1Preview" + "Jobs=V1Preview" ] } }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -13762,7 +13850,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillObject" + "$ref": "#/components/schemas/PagedJobMetricLastValue" } } } @@ -13779,31 +13867,14 @@ } }, "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/gzip": { - "schema": { - "type": "string", - "format": "binary" - } - } - }, - "description": "The GZip package used to create the skill." - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } + "TrainingJobs" + ] } }, - "/toolsets": { - "post": { - "operationId": "createToolset", - "description": "Create a toolset.", + "/trainingJobs/{jobName}/runs/{runId}/outputs": { + "get": { + "operationId": "TrainingJobRunOutputs_listRunOutputs", + "description": "List outputs produced by a specific training job run.", "parameters": [ { "name": "Foundry-Features", @@ -13813,10 +13884,49 @@ "schema": { "type": "string", "enum": [ - "Toolsets=V1Preview" + "Jobs=V1Preview" ] } }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -13834,7 +13944,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolsetObject" + "$ref": "#/components/schemas/PagedJobOutputReference" } } } @@ -13851,110 +13961,52 @@ } }, "tags": [ - "Toolsets" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the toolset." - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the toolset." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the toolset." - }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" - }, - "description": "The list of tools to include in the toolset." - } - }, - "required": [ - "name", - "tools" - ] - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - }, + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/runs/{runId}/outputs/{outputName}": { "get": { - "operationId": "listToolsets", - "description": "List all toolsets.", + "operationId": "TrainingJobRunOutputs_getRunOutput", + "description": "Get one output produced by a specific training job run.", "parameters": [ { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } }, { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "Foundry-Features", - "in": "header", + "name": "outputName", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The output name.", "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] + "type": "string" } }, { @@ -13974,33 +14026,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ToolsetObject" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/JobOutputReference" } } } @@ -14017,25 +14043,23 @@ } }, "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } + "TrainingJobs" + ] } }, - "/toolsets/{tool_set_name}": { - "post": { - "operationId": "updateToolset", - "description": "Update a toolset.", + "/trainingJobs/{name}": { + "get": { + "operationId": "TrainingJobs_get", + "description": "Get a training job by name.", "parameters": [ { - "name": "tool_set_name", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", "in": "path", "required": true, - "description": "The name of the toolset to update.", + "description": "The name of the training job. This is case-sensitive.", "schema": { "type": "string" } @@ -14048,19 +14072,9 @@ "schema": { "type": "string", "enum": [ - "Toolsets=V1Preview" + "Jobs=V1Preview" ] } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { @@ -14069,74 +14083,47 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolsetObject" + "$ref": "#/components/schemas/Job" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Toolsets" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the toolset." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the toolset." - }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" - }, - "description": "The list of tools to include in the toolset." - } - }, - "required": [ - "tools" - ] - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } + "TrainingJobs" + ] }, - "get": { - "operationId": "getToolset", - "description": "Retrieve a toolset.", + "delete": { + "operationId": "TrainingJobs_beginDelete", + "description": "Delete a training job by name. Returns 202 Accepted with a Location header to poll for completion, or 204 if the job does not exist.", "parameters": [ { - "name": "tool_set_name", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", "in": "path", "required": true, - "description": "The name of the toolset to retrieve.", + "description": "The name of the training job. This is case-sensitive.", "schema": { "type": "string" } @@ -14149,61 +14136,73 @@ "schema": { "type": "string", "enum": [ - "Toolsets=V1Preview" + "Jobs=V1Preview" ] } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { + "202": { + "description": "Response returned when a job delete operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the status of the delete operation.", "schema": { - "$ref": "#/components/schemas/ToolsetObject" + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" } } } }, + "204": { + "description": "There is no content to send for this request, but the headers may be useful." + }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - }, - "delete": { - "operationId": "deleteToolset", - "description": "Delete a toolset.", + "TrainingJobs" + ] + } + }, + "/trainingJobs/{name}:cancel": { + "post": { + "operationId": "TrainingJobs_beginCancel", + "description": "Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with a Location header to poll for completion.", "parameters": [ { - "name": "tool_set_name", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", "in": "path", "required": true, - "description": "The name of the toolset to delete.", + "description": "The name of the training job. This is case-sensitive.", "schema": { "type": "string" } @@ -14216,51 +14215,58 @@ "schema": { "type": "string", "enum": [ - "Toolsets=V1Preview" + "Jobs=V1Preview" ] } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { + "description": "The request has succeeded." + }, + "202": { + "description": "Response returned when a job cancel operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the status of the cancel operation.", "schema": { - "$ref": "#/components/schemas/DeleteToolsetResponse" + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } + "TrainingJobs" + ] } } }, @@ -14816,27 +14822,6 @@ ], "description": "Agentic identity credential definition" }, - "AllNodes": { - "type": "object", - "required": [ - "nodesValueType" - ], - "properties": { - "nodesValueType": { - "type": "string", - "enum": [ - "All" - ], - "description": "Type of the Nodes value." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/NodeCollection" - } - ], - "description": "All nodes means the service will be running on all of the nodes of the job." - }, "ApiErrorResponse": { "type": "object", "required": [ @@ -17062,14 +17047,6 @@ ], "description": "Command Job limit." }, - "services": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/JobService" - }, - "description": "List of job services.", - "readOnly": true - }, "queueSettings": { "allOf": [ { @@ -17082,10 +17059,6 @@ "type": "string", "description": "user-assigned managed identity" }, - "isArchived": { - "type": "boolean", - "description": "Is the asset archived?" - }, "status": { "type": "string", "description": "Status of the job.", @@ -20638,7 +20611,7 @@ "properties": { "name": { "type": "string", - "description": "The name of the Job. This is case-sensitive.", + "description": "The name of the training job. This is case-sensitive.", "readOnly": true }, "id": { @@ -20669,7 +20642,7 @@ "readOnly": true } }, - "description": "Job resource." + "description": "Training job resource." }, "JobArtifact": { "type": "object", @@ -20708,16 +20681,6 @@ "format": "date-time", "description": "Time the artifact was last updated.", "readOnly": true - }, - "origin": { - "type": "string", - "description": "Service origin of the artifact.", - "readOnly": true - }, - "container": { - "type": "string", - "description": "Diagnostic storage container identifier resolved by the service.", - "readOnly": true } }, "description": "Metadata for an artifact produced by or attached to a job." @@ -20768,154 +20731,6 @@ ], "description": "Type of a job artifact." }, - "JobAttempt": { - "type": "object", - "required": [ - "id", - "jobName" - ], - "properties": { - "id": { - "type": "string", - "description": "The attempt identifier.", - "readOnly": true - }, - "jobName": { - "type": "string", - "description": "The job name this attempt belongs to.", - "readOnly": true - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/JobAttemptStatus" - } - ], - "description": "The attempt status.", - "readOnly": true - }, - "statusReason": { - "type": "string", - "description": "Additional status reason.", - "readOnly": true - }, - "startTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Time the attempt started.", - "readOnly": true - }, - "endTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Time the attempt ended.", - "readOnly": true - }, - "lastStartTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Most recent time the attempt started running.", - "readOnly": true - }, - "computeDuration": { - "type": "string", - "format": "duration", - "description": "Total compute duration consumed by the attempt.", - "readOnly": true - }, - "queueingInfo": { - "type": "object", - "additionalProperties": {}, - "description": "Queueing details associated with the attempt.", - "readOnly": true - }, - "computeDetails": { - "type": "object", - "additionalProperties": {}, - "description": "Compute details associated with the attempt.", - "readOnly": true - }, - "error": { - "allOf": [ - { - "$ref": "#/components/schemas/JobAttemptError" - } - ], - "description": "Terminal error for the attempt, if any.", - "readOnly": true - }, - "warnings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobAttemptWarning" - }, - "description": "Warnings emitted for the attempt.", - "readOnly": true - }, - "isCurrent": { - "type": "boolean", - "description": "Whether this attempt is the current attempt for the job.", - "readOnly": true - } - }, - "description": "One execution attempt of a job." - }, - "JobAttemptError": { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "Machine-readable error code." - }, - "message": { - "type": "string", - "description": "Human-readable error message." - }, - "details": { - "type": "object", - "additionalProperties": {}, - "description": "Additional error details." - } - }, - "description": "Error emitted during a job attempt." - }, - "JobAttemptStatus": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "Queued", - "Running", - "Completed", - "Failed", - "Canceled" - ] - } - ], - "description": "Status of a job execution attempt." - }, - "JobAttemptWarning": { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "Machine-readable warning code." - }, - "message": { - "type": "string", - "description": "Human-readable warning message." - }, - "details": { - "type": "object", - "additionalProperties": {}, - "description": "Additional warning details." - } - }, - "description": "Warning emitted during a job attempt." - }, "JobMetric": { "type": "object", "required": [ @@ -20945,7 +20760,7 @@ "readOnly": true } }, - "description": "Metadata for a metric emitted by a job or attempt." + "description": "Metadata for a metric emitted by a job or run." }, "JobMetricAggregate": { "type": "object", @@ -21174,49 +20989,153 @@ }, "description": "Compute Resource configuration for the job." }, - "JobService": { + "JobRun": { "type": "object", + "required": [ + "id", + "jobName" + ], "properties": { - "jobServiceType": { + "id": { "type": "string", - "description": "Endpoint type." + "description": "The run identifier.", + "readOnly": true }, - "port": { - "type": "integer", - "format": "int32", - "description": "Port for endpoint." + "jobName": { + "type": "string", + "description": "The job name this run belongs to.", + "readOnly": true + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/JobRunStatus" + } + ], + "description": "The run status.", + "readOnly": true }, - "endpoint": { + "statusReason": { "type": "string", - "description": "Url for endpoint." + "description": "Additional status reason.", + "readOnly": true }, - "properties": { + "startTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the run started.", + "readOnly": true + }, + "endTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the run ended.", + "readOnly": true + }, + "lastStartTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Most recent time the run started running.", + "readOnly": true + }, + "computeDuration": { + "type": "string", + "format": "duration", + "description": "Total compute duration consumed by the run.", + "readOnly": true + }, + "queueingInfo": { "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional properties to set on the endpoint." + "additionalProperties": {}, + "description": "Queueing details associated with the run.", + "readOnly": true + }, + "computeDetails": { + "type": "object", + "additionalProperties": {}, + "description": "Compute details associated with the run.", + "readOnly": true }, - "nodes": { + "error": { "allOf": [ { - "$ref": "#/components/schemas/AllNodes" + "$ref": "#/components/schemas/JobRunError" } ], - "description": "Nodes that user would like to start the service on. If Nodes is not set or set to null, the service will only be started on leader node." + "description": "Terminal error for the run, if any.", + "readOnly": true }, - "status": { - "type": "string", - "description": "Status of endpoint.", + "warnings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobRunWarning" + }, + "description": "Warnings emitted for the run.", "readOnly": true }, - "errorMessage": { - "type": "string", - "description": "Any error in the service.", + "isCurrent": { + "type": "boolean", + "description": "Whether this run is the current run for the job.", "readOnly": true } }, - "description": "Job endpoint definition." + "description": "One execution run of a training job." + }, + "JobRunError": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable error code." + }, + "message": { + "type": "string", + "description": "Human-readable error message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional error details." + } + }, + "description": "Error emitted during a job run." + }, + "JobRunStatus": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Queued", + "Running", + "Completed", + "Failed", + "Canceled" + ] + } + ], + "description": "Status of a job execution run." + }, + "JobRunWarning": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable warning code." + }, + "message": { + "type": "string", + "description": "Human-readable warning message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional warning details." + } + }, + "description": "Warning emitted during a job run." }, "JobType": { "anyOf": [ @@ -22229,23 +22148,6 @@ ], "description": "Credentials that do not require authentication" }, - "NodeCollection": { - "type": "object", - "required": [ - "nodesValueType" - ], - "properties": { - "nodesValueType": { - "type": "string", - "description": "Type of the Nodes value." - } - }, - "discriminator": { - "propertyName": "nodesValueType", - "mapping": {} - }, - "description": "Nodes that user would like to start the service on." - }, "OAuthConsentRequestOutputItem": { "type": "object", "required": [ @@ -42277,27 +42179,6 @@ }, "description": "Paged collection of JobArtifact items" }, - "PagedJobAttempt": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobAttempt" - }, - "description": "The JobAttempt items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobAttempt items" - }, "PagedJobMetric": { "type": "object", "required": [ @@ -42403,6 +42284,27 @@ }, "description": "Paged collection of JobOutputReference items" }, + "PagedJobRun": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobRun" + }, + "description": "The JobRun items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobRun items" + }, "PagedRedTeam": { "type": "object", "required": [ diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index fa5d662abdeb..216bdfea165d 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -87,7 +87,7 @@ "name": "Toolsets" }, { - "name": "Jobs" + "name": "TrainingJobs" } ], "paths": { @@ -6010,65 +6010,53 @@ ] } }, - "/jobs": { + "/managedAgentIdentityBlueprints": { "get": { - "operationId": "Jobs_list", - "description": "List Jobs.", + "operationId": "ManagedAgentIdentityBlueprints_listManagedAgentIdentityBlueprints", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "jobType", - "in": "query", - "required": false, - "description": "Filter by job type (e.g. 'Command').", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "$ref": "#/components/schemas/JobType" - }, - "explode": false + "type": "string", + "enum": [ + "AgentEndpoints=V1Preview" + ] + } }, { - "name": "tag", + "name": "order", "in": "query", "required": false, - "description": "Filter jobs by tag in the format 'key=value' (e.g., 'framework=pytorch').", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "string" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, { - "name": "listViewType", + "name": "limit", "in": "query", "required": false, - "description": "Specifies which view type to apply when listing jobs.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "$ref": "#/components/schemas/ListViewType" + "type": "integer", + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "properties", + "name": "api-version", "in": "query", - "required": false, - "description": "Comma-separated user property names and optionally values. Example: prop1,prop2=value2.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } } ], "responses": { @@ -6077,38 +6065,32 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJob" + "$ref": "#/components/schemas/PagedManagedAgentIdentityBlueprint" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, - "tags": [ - "Jobs" - ] - }, - "post": { - "operationId": "Jobs_createTrainingJob", - "description": "Create and execute a model training Job.", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + } + }, + "/managedAgentIdentityBlueprints/{blueprint_name}": { + "put": { + "operationId": "ManagedAgentIdentityBlueprints_createOrUpdateManagedAgentIdentityBlueprint", "parameters": [ { "name": "Foundry-Features", @@ -6118,15 +6100,15 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "AgentEndpoints=V1Preview" ] } }, { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry job creation.", + "name": "blueprint_name", + "in": "path", + "required": true, + "description": "The name of the managed agent identity blueprint to create.", "schema": { "type": "string" } @@ -6143,12 +6125,12 @@ } ], "responses": { - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", + "200": { + "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/ManagedAgentIdentityBlueprint" } } } @@ -6164,26 +6146,25 @@ } } }, - "tags": [ - "Jobs" - ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/CreateOrUpdateManagedAgentIdentityBlueprintRequest" } } - }, - "description": "The job to create." + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] } - } - }, - "/jobs/{jobName}/artifacts": { + }, "get": { - "operationId": "JobArtifacts_listJobArtifacts", - "description": "List artifacts for the current view of a job.", + "operationId": "ManagedAgentIdentityBlueprints_getManagedAgentIdentityBlueprint", + "description": "Retrieves a managed agent identity blueprint by name.", "parameters": [ { "name": "Foundry-Features", @@ -6193,50 +6174,19 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "AgentEndpoints=V1Preview" ] } }, { - "name": "jobName", + "name": "blueprint_name", "in": "path", "required": true, - "description": "The job name.", + "description": "The name of the managed agent identity blueprint to retrieve.", "schema": { "type": "string" } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "pathPrefix", - "in": "query", - "required": false, - "description": "Artifact path prefix to list.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -6254,7 +6204,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" + "$ref": "#/components/schemas/ManagedAgentIdentityBlueprint" } } } @@ -6270,15 +6220,15 @@ } } }, - "tags": [ - "Jobs" - ] - } - }, - "/jobs/{jobName}/artifacts/{artifactPath}:content": { - "get": { - "operationId": "JobArtifacts_downloadJobArtifact", - "description": "Download job artifact content.", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "delete": { + "operationId": "ManagedAgentIdentityBlueprints_deleteManagedAgentIdentityBlueprint", + "description": "Deletes a managed agent identity blueprint by name.", "parameters": [ { "name": "Foundry-Features", @@ -6288,24 +6238,15 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "AgentEndpoints=V1Preview" ] } }, { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "artifactPath", + "name": "blueprint_name", "in": "path", "required": true, - "description": "The artifact path.", + "description": "The name of the managed agent identity blueprint to delete.", "schema": { "type": "string" } @@ -6322,16 +6263,8 @@ } ], "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/octet-stream": { - "schema": { - "type": "string", - "format": "binary" - } - } - } + "204": { + "description": "There is no content to send for this request, but the headers may be useful." }, "default": { "description": "An unexpected error response.", @@ -6344,15 +6277,17 @@ } } }, - "tags": [ - "Jobs" - ] + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } } }, - "/jobs/{jobName}/artifacts/{artifactPath}:contentInfo": { - "get": { - "operationId": "JobArtifacts_getJobArtifactContentInfo", - "description": "Get download information for a job artifact.", + "/memory_stores": { + "post": { + "operationId": "createMemoryStore", + "description": "Create a memory store.", "parameters": [ { "name": "Foundry-Features", @@ -6362,28 +6297,10 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "MemoryStores=V1Preview" ] } }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "artifactPath", - "in": "path", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -6401,7 +6318,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifactContentInfo" + "$ref": "#/components/schemas/MemoryStoreObject" } } } @@ -6418,43 +6335,111 @@ } }, "tags": [ - "Jobs" - ] - } - }, - "/jobs/{jobName}/artifacts/{artifactPath}:metadata": { + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the memory store." + }, + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the memory store." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the memory store." + }, + "definition": { + "allOf": [ + { + "$ref": "#/components/schemas/MemoryStoreDefinition" + } + ], + "description": "The memory store definition." + } + }, + "required": [ + "name", + "definition" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + }, "get": { - "operationId": "JobArtifacts_getJobArtifactMetadata", - "description": "Get metadata for a job artifact.", + "operationId": "listMemoryStores", + "description": "List all memory stores.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false }, { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "artifactPath", - "in": "path", - "required": true, - "description": "The artifact path.", + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] } }, { @@ -6474,7 +6459,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifact" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MemoryStoreObject" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -6491,15 +6502,29 @@ } }, "tags": [ - "Jobs" - ] + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } } }, - "/jobs/{jobName}/attempts": { - "get": { - "operationId": "JobAttempts_listJobAttempts", - "description": "List execution attempts for a job.", + "/memory_stores/{name}": { + "post": { + "operationId": "updateMemoryStore", + "description": "Update a memory store.", "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store to update.", + "schema": { + "type": "string" + } + }, { "name": "Foundry-Features", "in": "header", @@ -6508,40 +6533,10 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "MemoryStores=V1Preview" ] } }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -6559,7 +6554,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobAttempt" + "$ref": "#/components/schemas/MemoryStoreObject" } } } @@ -6576,43 +6571,61 @@ } }, "tags": [ - "Jobs" - ] - } - }, - "/jobs/{jobName}/attempts/{attemptId}": { + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the memory store." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the memory store." + } + } + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + }, "get": { - "operationId": "JobAttempts_getJobAttempt", - "description": "Get one execution attempt for a job.", + "operationId": "getMemoryStore", + "description": "Retrieve a memory store.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", + "name": "name", "in": "path", "required": true, - "description": "The job name.", + "description": "The name of the memory store to retrieve.", "schema": { "type": "string" } }, { - "name": "attemptId", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The attempt identifier.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] } }, { @@ -6632,7 +6645,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobAttempt" + "$ref": "#/components/schemas/MemoryStoreObject" } } } @@ -6649,15 +6662,27 @@ } }, "tags": [ - "Jobs" - ] - } - }, - "/jobs/{jobName}/attempts/{attemptId}/artifacts": { - "get": { - "operationId": "JobAttemptArtifacts_listJobAttemptArtifacts", - "description": "List artifacts for a specific job attempt.", + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + }, + "delete": { + "operationId": "deleteMemoryStore", + "description": "Delete a memory store.", "parameters": [ + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the memory store to delete.", + "schema": { + "type": "string" + } + }, { "name": "Foundry-Features", "in": "header", @@ -6666,64 +6691,15 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "MemoryStores=V1Preview" ] } }, { - "name": "jobName", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "pathPrefix", - "in": "query", - "required": false, - "description": "Artifact path prefix to list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "description": "The API version to use for this operation.", "schema": { "type": "string" }, @@ -6736,7 +6712,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" + "$ref": "#/components/schemas/DeleteMemoryStoreResponse" } } } @@ -6753,52 +6729,48 @@ } }, "tags": [ - "Jobs" - ] + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } } }, - "/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:content": { + "/memory_stores/{name}/updates/{update_id}": { "get": { - "operationId": "JobAttemptArtifacts_downloadJobAttemptArtifact", - "description": "Download artifact content from a specific job attempt.", + "operationId": "getUpdateResult", + "description": "Get memory store update result.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", + "name": "name", "in": "path", "required": true, - "description": "The job name.", + "description": "The name of the memory store.", "schema": { "type": "string" } }, { - "name": "attemptId", + "name": "update_id", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The ID of the memory update operation.", "schema": { "type": "string" } }, { - "name": "artifactPath", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The artifact path.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] } }, { @@ -6816,10 +6788,9 @@ "200": { "description": "The request has succeeded.", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/MemoryStoreUpdateResponse" } } } @@ -6836,52 +6807,39 @@ } }, "tags": [ - "Jobs" - ] + "Memory Stores" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } } }, - "/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:contentInfo": { - "get": { - "operationId": "JobAttemptArtifacts_getJobAttemptArtifactContentInfo", - "description": "Get download information for an artifact from a specific job attempt.", + "/memory_stores/{name}:delete_scope": { + "post": { + "operationId": "deleteScopeMemories", + "description": "Delete all memories associated with a specific scope from a memory store.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", + "name": "name", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The name of the memory store.", "schema": { "type": "string" } }, { - "name": "artifactPath", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The artifact path.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] } }, { @@ -6901,7 +6859,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifactContentInfo" + "$ref": "#/components/schemas/MemoryStoreDeleteScopeResponse" } } } @@ -6918,52 +6876,58 @@ } }, "tags": [ - "Jobs" - ] + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scope": { + "type": "string", + "description": "The namespace that logically groups and isolates memories to delete, such as a user ID." + } + }, + "required": [ + "scope" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } } }, - "/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:metadata": { - "get": { - "operationId": "JobAttemptArtifacts_getJobAttemptArtifactMetadata", - "description": "Get metadata for an artifact from a specific job attempt.", + "/memory_stores/{name}:search_memories": { + "post": { + "operationId": "searchMemories", + "description": "Search for relevant memories from a memory store based on conversation context.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", + "name": "name", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The name of the memory store to search.", "schema": { "type": "string" } }, { - "name": "artifactPath", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The artifact path.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] } }, { @@ -6983,7 +6947,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifact" + "$ref": "#/components/schemas/MemoryStoreSearchResponse" } } } @@ -7000,66 +6964,79 @@ } }, "tags": [ - "Jobs" - ] + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scope": { + "type": "string", + "description": "The namespace that logically groups and isolates memories, such as a user ID." + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.InputItem" + }, + "description": "Items for which to search for relevant memories." + }, + "previous_search_id": { + "type": "string", + "description": "The unique ID of the previous search request, enabling incremental memory search from where the last operation left off." + }, + "options": { + "allOf": [ + { + "$ref": "#/components/schemas/MemorySearchOptions" + } + ], + "description": "Memory search options." + } + }, + "required": [ + "scope" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } } }, - "/jobs/{jobName}/attempts/{attemptId}/metrics": { - "get": { - "operationId": "JobAttemptMetrics_listJobAttemptMetrics", - "description": "List metrics emitted by a specific job attempt.", + "/memory_stores/{name}:update_memories": { + "post": { + "operationId": "updateMemories", + "description": "Update memory store with conversation memories.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", + "name": "name", "in": "path", "required": true, - "description": "The job name.", + "description": "The name of the memory store to update.", "schema": { "type": "string" } }, { - "name": "attemptId", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The attempt identifier.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "MemoryStores=V1Preview" + ] } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -7072,12 +7049,22 @@ } ], "responses": { - "200": { - "description": "The request has succeeded.", + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetric" + "$ref": "#/components/schemas/MemoryStoreUpdateResponse" } } } @@ -7094,106 +7081,83 @@ } }, "tags": [ - "Jobs" - ] + "Memory Stores" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scope": { + "type": "string", + "description": "The namespace that logically groups and isolates memories, such as a user ID." + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.InputItem" + }, + "description": "Conversation items to be stored in memory." + }, + "previous_update_id": { + "type": "string", + "description": "The unique ID of the previous update request, enabling incremental memory updates from where the last operation left off." + }, + "update_delay": { + "type": "integer", + "format": "int32", + "description": "Timeout period before processing the memory update in seconds.\nIf a new update request is received during this period, it will cancel the current request and reset the timeout.\nSet to 0 to immediately trigger the update without delay.\nDefaults to 300 (5 minutes).", + "default": 300 + } + }, + "required": [ + "scope" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } } }, - "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}": { + "/mlflow/api/2.0/mlflow/artifacts/list": { "get": { - "operationId": "JobAttemptMetrics_getJobAttemptMetric", - "description": "Get the full history for a metric from a specific job attempt.", + "operationId": "Artifacts_list", + "description": "List MLflow artifacts.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", + "name": "run_id", "in": "query", "required": false, - "description": "Minimum metric step to include.", + "description": "MLflow run identifier.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "maxStep", + "name": "run_uuid", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "MLflow run UUID.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "path", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "Artifact path to list.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -7214,7 +7178,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7231,114 +7195,73 @@ } }, "tags": [ - "Jobs" + "MLflow Artifacts" ] } }, - "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates": { - "get": { - "operationId": "JobAttemptMetrics_getJobAttemptMetricAggregates", - "description": "Get aggregate metric values from a specific job attempt.", + "/mlflow/api/2.0/mlflow/experiments/create": { + "post": { + "operationId": "Experiments_create", + "description": "Create an MLflow experiment.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The job name.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/delete": { + "post": { + "operationId": "Experiments_delete", + "description": "Delete an MLflow experiment.", + "parameters": [ { - "name": "attemptId", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "description": "The API version to use for this operation.", "schema": { "type": "string" }, @@ -7351,7 +7274,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7368,106 +7291,42 @@ } }, "tags": [ - "Jobs" - ] + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample": { + "/mlflow/api/2.0/mlflow/experiments/get": { "get": { - "operationId": "JobAttemptMetrics_getJobAttemptMetricSample", - "description": "Get one sampled value or window from a specific job attempt.", + "operationId": "Experiments_get", + "description": "Get an MLflow experiment by ID.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", + "name": "experiment_id", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "MLflow experiment identifier.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "experiment_name", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "MLflow experiment name.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -7488,7 +7347,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7505,106 +7364,32 @@ } }, "tags": [ - "Jobs" + "MLflow Experiments" ] } }, - "/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples": { + "/mlflow/api/2.0/mlflow/experiments/get-by-name": { "get": { - "operationId": "JobAttemptMetrics_getJobAttemptMetricSamples", - "description": "Get sampled metric values from a specific job attempt.", + "operationId": "Experiments_getByName", + "description": "Get an MLflow experiment by name.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", + "name": "experiment_id", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "MLflow experiment identifier.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "experiment_name", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "MLflow experiment name.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -7625,7 +7410,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7642,45 +7427,15 @@ } }, "tags": [ - "Jobs" + "MLflow Experiments" ] } }, - "/jobs/{jobName}/attempts/{attemptId}/metrics:lastValues": { - "get": { - "operationId": "JobAttemptMetrics_getJobAttemptMetricLastValues", - "description": "Get latest metric values for a specific job attempt.", + "/mlflow/api/2.0/mlflow/experiments/restore": { + "post": { + "operationId": "Experiments_restore", + "description": "Restore a deleted MLflow experiment.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -7698,7 +7453,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7715,66 +7470,25 @@ } }, "tags": [ - "Jobs" - ] + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{jobName}/attempts/{attemptId}/outputs": { - "get": { - "operationId": "JobAttemptOutputs_listJobAttemptOutputs", - "description": "List outputs produced by a specific job attempt.", + "/mlflow/api/2.0/mlflow/experiments/search": { + "post": { + "operationId": "Experiments_search", + "description": "Search MLflow experiments.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -7792,7 +7506,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7809,54 +7523,25 @@ } }, "tags": [ - "Jobs" - ] + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}": { - "get": { - "operationId": "JobAttemptOutputs_getJobAttemptOutput", - "description": "Get one output produced by a specific job attempt.", + "/mlflow/api/2.0/mlflow/experiments/set-experiment-tag": { + "post": { + "operationId": "Experiments_setTag", + "description": "Set an MLflow experiment tag.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "outputName", - "in": "path", - "required": true, - "description": "The output name.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -7874,7 +7559,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7891,57 +7576,25 @@ } }, "tags": [ - "Jobs" - ] + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{jobName}/metrics": { - "get": { - "operationId": "JobMetrics_listJobMetrics", - "description": "List metrics emitted by the current view of a job.", + "/mlflow/api/2.0/mlflow/experiments/update": { + "post": { + "operationId": "Experiments_update", + "description": "Update MLflow experiment metadata.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -7959,7 +7612,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetric" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7976,97 +7629,73 @@ } }, "tags": [ - "Jobs" - ] + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{jobName}/metrics/{metricName}": { + "/mlflow/api/2.0/mlflow/metrics/get-history": { "get": { - "operationId": "JobMetrics_getJobMetric", - "description": "Get the full history for a job metric.", + "operationId": "Metrics_getHistory", + "description": "Get MLflow metric history.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", + "name": "run_id", + "in": "query", + "required": false, + "description": "MLflow run identifier.", "schema": { "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" }, "explode": false }, { - "name": "endTimeUtc", + "name": "run_uuid", "in": "query", "required": false, - "description": "End of the metric time range.", + "description": "MLflow run UUID.", "schema": { - "type": "string", - "format": "date-time" + "type": "string" }, "explode": false }, { - "name": "minStep", + "name": "metric_key", "in": "query", "required": false, - "description": "Minimum metric step to include.", + "description": "Metric key.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "maxStep", + "name": "max_results", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "Maximum number of metric points to return.", "schema": { "type": "integer", - "format": "int64" + "format": "int32" }, "explode": false }, { - "name": "limit", + "name": "page_token", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "Token used to retrieve the next page of metric points.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -8087,7 +7716,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8104,97 +7733,148 @@ } }, "tags": [ - "Jobs" + "MLflow Metrics" ] } }, - "/jobs/{jobName}/metrics/{metricName}:aggregates": { - "get": { - "operationId": "JobMetrics_getJobMetricAggregates", - "description": "Get aggregate values for a job metric.", + "/mlflow/api/2.0/mlflow/model-versions/create": { + "post": { + "operationId": "ModelVersions_create", + "description": "Create an MLflow model version.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The job name.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } } }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } } - }, + } + }, + "tags": [ + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/delete": { + "delete": { + "operationId": "ModelVersions_delete", + "description": "Delete an MLflow model version.", + "parameters": [ { - "name": "startTimeUtc", + "name": "name", "in": "query", "required": false, - "description": "Start of the metric time range.", + "description": "Registered model name.", "schema": { - "type": "string", - "format": "date-time" + "type": "string" }, "explode": false }, { - "name": "endTimeUtc", + "name": "version", "in": "query", "required": false, - "description": "End of the metric time range.", + "description": "Model version.", "schema": { - "type": "string", - "format": "date-time" + "type": "string" }, "explode": false }, { - "name": "minStep", + "name": "api-version", "in": "query", - "required": false, - "description": "Minimum metric step to include.", + "required": true, + "description": "The API version to use for this operation.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/delete-tag": { + "delete": { + "operationId": "ModelVersions_deleteTag", + "description": "Delete an MLflow model-version tag.", + "parameters": [ { - "name": "maxStep", + "name": "name", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "Registered model name.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "version", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "Model version.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -8215,7 +7895,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8232,97 +7912,32 @@ } }, "tags": [ - "Jobs" + "MLflow Model Versions" ] } }, - "/jobs/{jobName}/metrics/{metricName}:sample": { + "/mlflow/api/2.0/mlflow/model-versions/get": { "get": { - "operationId": "JobMetrics_getJobMetricSample", - "description": "Get one sampled value or window for a job metric.", + "operationId": "ModelVersions_get", + "description": "Get an MLflow model version.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", + "name": "name", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "Registered model name.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "version", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "Model version.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -8343,7 +7958,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8360,97 +7975,32 @@ } }, "tags": [ - "Jobs" + "MLflow Model Versions" ] } }, - "/jobs/{jobName}/metrics/{metricName}:samples": { + "/mlflow/api/2.0/mlflow/model-versions/get-download-uri": { "get": { - "operationId": "JobMetrics_getJobMetricSamples", - "description": "Get sampled values for a job metric.", + "operationId": "ModelVersions_getDownloadUri", + "description": "Get an MLflow model version download URI.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", + "name": "name", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "Registered model name.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "version", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "Model version.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -8471,7 +8021,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8488,36 +8038,15 @@ } }, "tags": [ - "Jobs" + "MLflow Model Versions" ] } }, - "/jobs/{jobName}/metrics:lastValues": { - "get": { - "operationId": "JobMetrics_getJobMetricLastValues", - "description": "Get the latest values for metrics emitted by the current view of a job.", + "/mlflow/api/2.0/mlflow/model-versions/get-storage-location-uri": { + "post": { + "operationId": "ModelVersions_getStorageLocationUri", + "description": "Get an MLflow model version storage location URI.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -8535,7 +8064,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8552,38 +8081,27 @@ } }, "tags": [ - "Jobs" - ] + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{jobName}/outputs": { + "/mlflow/api/2.0/mlflow/model-versions/search": { "get": { - "operationId": "JobOutputs_listJobOutputs", - "description": "List outputs produced by a job.", + "operationId": "ModelVersions_search", + "description": "Search MLflow model versions.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", + "name": "max_results", "in": "query", "required": false, "description": "Maximum number of items to return.", @@ -8594,10 +8112,10 @@ "explode": false }, { - "name": "skipToken", + "name": "page_token", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "Token used to retrieve the next page of results.", "schema": { "type": "string" }, @@ -8620,7 +8138,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8637,45 +8155,15 @@ } }, "tags": [ - "Jobs" + "MLflow Model Versions" ] } }, - "/jobs/{jobName}/outputs/{outputName}": { - "get": { - "operationId": "JobOutputs_getJobOutput", - "description": "Get one output produced by a job.", + "/mlflow/api/2.0/mlflow/model-versions/set-tag": { + "post": { + "operationId": "ModelVersions_setTag", + "description": "Set an MLflow model-version tag.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The job name.", - "schema": { - "type": "string" - } - }, - { - "name": "outputName", - "in": "path", - "required": true, - "description": "The output name.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -8693,7 +8181,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8710,38 +8198,34 @@ } }, "tags": [ - "Jobs" - ] + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{name}": { - "get": { - "operationId": "Jobs_get", - "description": "Get a Job by name.", + "/mlflow/api/2.0/mlflow/model-versions/transition-stage": { + "post": { + "operationId": "ModelVersions_transitionStage", + "description": "Transition an MLflow model version stage.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The name of the Job. This is case-sensitive.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } + }, + "explode": false } ], "responses": { @@ -8750,227 +8234,208 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Jobs" - ] - }, - "delete": { - "operationId": "Jobs_beginDelete", - "description": "Delete a Job by name. Returns 202 Accepted with a Location header to poll for completion, or 204 if the job does not exist.", + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/update": { + "patch": { + "operationId": "ModelVersions_update", + "description": "Update an MLflow model version.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The name of the Job. This is case-sensitive.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } + }, + "explode": false } ], "responses": { - "202": { - "description": "Response returned when a job delete operation is accepted asynchronously.", - "headers": { - "Location": { - "required": true, - "description": "URL to poll for the status of the delete operation.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "required": false, - "description": "Suggested delay in seconds before polling.", + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } }, - "204": { - "description": "There is no content to send for this request, but the headers may be useful." - }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Jobs" - ] + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/jobs/{name}:cancel": { + "/mlflow/api/2.0/mlflow/registered-models/create": { "post": { - "operationId": "Jobs_beginCancel", - "description": "Cancel a Job by name. Returns 200 if cancelled immediately, or 202 Accepted with a Location header to poll for completion.", + "operationId": "RegisteredModels_create", + "description": "Create an MLflow registered model.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The name of the Job. This is case-sensitive.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } + }, + "explode": false } ], "responses": { "200": { - "description": "The request has succeeded." - }, - "202": { - "description": "Response returned when a job cancel operation is accepted asynchronously.", - "headers": { - "Location": { - "required": true, - "description": "URL to poll for the status of the cancel operation.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "required": false, - "description": "Suggested delay in seconds before polling.", + "description": "The request has succeeded.", + "content": { + "application/json": { "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Jobs" - ] + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/managedAgentIdentityBlueprints": { - "get": { - "operationId": "ManagedAgentIdentityBlueprints_listManagedAgentIdentityBlueprints", + "/mlflow/api/2.0/mlflow/registered-models/delete": { + "delete": { + "operationId": "RegisteredModels_delete", + "description": "Delete an MLflow registered model.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", "schema": { - "type": "string", - "enum": [ - "AgentEndpoints=V1Preview" - ] - } + "type": "string" + }, + "explode": false }, { - "name": "order", + "name": "api-version", "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "required": true, + "description": "The API version to use for this operation.", "schema": { - "$ref": "#/components/schemas/PageOrder" + "type": "string" }, "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/delete-tag": { + "delete": { + "operationId": "RegisteredModels_deleteTag", + "description": "Delete an MLflow registered-model tag.", + "parameters": [ { - "name": "limit", + "name": "name", "in": "query", "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "description": "Registered model name.", "schema": { - "type": "integer", - "format": "int32", - "default": 20 + "type": "string" }, "explode": false }, @@ -8991,7 +8456,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedManagedAgentIdentityBlueprint" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9007,37 +8472,25 @@ } } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "tags": [ + "MLflow Registered Models" + ] } }, - "/managedAgentIdentityBlueprints/{blueprint_name}": { - "put": { - "operationId": "ManagedAgentIdentityBlueprints_createOrUpdateManagedAgentIdentityBlueprint", + "/mlflow/api/2.0/mlflow/registered-models/get": { + "get": { + "operationId": "RegisteredModels_get", + "description": "Get an MLflow registered model.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "AgentEndpoints=V1Preview" - ] - } - }, - { - "name": "blueprint_name", - "in": "path", - "required": true, - "description": "The name of the managed agent identity blueprint to create.", + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", "schema": { "type": "string" - } + }, + "explode": false }, { "name": "api-version", @@ -9056,7 +8509,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ManagedAgentIdentityBlueprint" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9072,46 +8525,25 @@ } } }, - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateOrUpdateManagedAgentIdentityBlueprintRequest" - } - } - } - }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, + "tags": [ + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/get-latest-versions": { "get": { - "operationId": "ManagedAgentIdentityBlueprints_getManagedAgentIdentityBlueprint", - "description": "Retrieves a managed agent identity blueprint by name.", + "operationId": "RegisteredModels_getLatestVersions", + "description": "Get latest versions for an MLflow registered model.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "AgentEndpoints=V1Preview" - ] - } - }, - { - "name": "blueprint_name", - "in": "path", - "required": true, - "description": "The name of the managed agent identity blueprint to retrieve.", + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", "schema": { "type": "string" - } + }, + "explode": false }, { "name": "api-version", @@ -9130,7 +8562,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ManagedAgentIdentityBlueprint" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9146,36 +8578,36 @@ } } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "delete": { - "operationId": "ManagedAgentIdentityBlueprints_deleteManagedAgentIdentityBlueprint", - "description": "Deletes a managed agent identity blueprint by name.", + "tags": [ + "MLflow Registered Models" + ] + } + }, + "/mlflow/api/2.0/mlflow/registered-models/list": { + "get": { + "operationId": "RegisteredModels_list", + "description": "List MLflow registered models.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "max_results", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", "schema": { - "type": "string", - "enum": [ - "AgentEndpoints=V1Preview" - ] - } + "type": "integer", + "format": "int32" + }, + "explode": false }, { - "name": "blueprint_name", - "in": "path", - "required": true, - "description": "The name of the managed agent identity blueprint to delete.", + "name": "page_token", + "in": "query", + "required": false, + "description": "Token used to retrieve the next page of results.", "schema": { "type": "string" - } + }, + "explode": false }, { "name": "api-version", @@ -9189,8 +8621,15 @@ } ], "responses": { - "204": { - "description": "There is no content to send for this request, but the headers may be useful." + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } }, "default": { "description": "An unexpected error response.", @@ -9203,30 +8642,16 @@ } } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "tags": [ + "MLflow Registered Models" + ] } }, - "/memory_stores": { + "/mlflow/api/2.0/mlflow/registered-models/rename": { "post": { - "operationId": "createMemoryStore", - "description": "Create a memory store.", + "operationId": "RegisteredModels_rename", + "description": "Rename an MLflow registered model.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -9244,7 +8669,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreObject" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9261,118 +8686,51 @@ } }, "tags": [ - "Memory Stores" + "MLflow Registered Models" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the memory store." - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the memory store." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the memory store." - }, - "definition": { - "allOf": [ - { - "$ref": "#/components/schemas/MemoryStoreDefinition" - } - ], - "description": "The memory store definition." - } - }, - "required": [ - "name", - "definition" - ] + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } - }, + } + }, + "/mlflow/api/2.0/mlflow/registered-models/search": { "get": { - "operationId": "listMemoryStores", - "description": "List all memory stores.", + "operationId": "RegisteredModels_search", + "description": "Search MLflow registered models.", "parameters": [ { - "name": "limit", + "name": "max_results", "in": "query", "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "description": "Maximum number of items to return.", "schema": { "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" + "format": "int32" }, "explode": false }, { - "name": "after", + "name": "page_token", "in": "query", "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "description": "Token used to retrieve the next page of results.", "schema": { "type": "string" }, "explode": false }, { - "name": "before", + "name": "api-version", "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, @@ -9385,33 +8743,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MemoryStoreObject" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9428,41 +8760,15 @@ } }, "tags": [ - "Memory Stores" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] - } + "MLflow Registered Models" + ] } }, - "/memory_stores/{name}": { + "/mlflow/api/2.0/mlflow/registered-models/set-tag": { "post": { - "operationId": "updateMemoryStore", - "description": "Update a memory store.", + "operationId": "RegisteredModels_setTag", + "description": "Set an MLflow registered-model tag.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to update.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -9480,7 +8786,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreObject" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9497,130 +8803,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Registered Models" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the memory store." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the memory store." - } - } - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] - } - }, - "get": { - "operationId": "getMemoryStore", - "description": "Retrieve a memory store.", - "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to retrieve.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MemoryStoreObject" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "tags": [ - "Memory Stores" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } - }, - "delete": { - "operationId": "deleteMemoryStore", - "description": "Delete a memory store.", + } + }, + "/mlflow/api/2.0/mlflow/registered-models/update": { + "patch": { + "operationId": "RegisteredModels_update", + "description": "Update an MLflow registered model.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to delete.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -9638,7 +8839,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteMemoryStoreResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9655,119 +8856,25 @@ } }, "tags": [ - "Memory Stores" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] - } - } - }, - "/memory_stores/{name}/updates/{update_id}": { - "get": { - "operationId": "getUpdateResult", - "description": "Get memory store update result.", - "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store.", - "schema": { - "type": "string" - } - }, - { - "name": "update_id", - "in": "path", - "required": true, - "description": "The ID of the memory update operation.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } + "MLflow Registered Models" ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/MemoryStoreUpdateResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "tags": [ - "Memory Stores" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } } }, - "/memory_stores/{name}:delete_scope": { + "/mlflow/api/2.0/mlflow/runs/create": { "post": { - "operationId": "deleteScopeMemories", - "description": "Delete all memories associated with a specific scope from a memory store.", + "operationId": "Runs_create", + "description": "Create an MLflow run.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -9785,7 +8892,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreDeleteScopeResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9802,60 +8909,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "scope": { - "type": "string", - "description": "The namespace that logically groups and isolates memories to delete, such as a user ID." - } - }, - "required": [ - "scope" - ] + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } } }, - "/memory_stores/{name}:search_memories": { + "/mlflow/api/2.0/mlflow/runs/delete": { "post": { - "operationId": "searchMemories", - "description": "Search for relevant memories from a memory store based on conversation context.", + "operationId": "Runs_delete", + "description": "Delete an MLflow run.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to search.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -9873,7 +8945,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreSearchResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9890,79 +8962,25 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "scope": { - "type": "string", - "description": "The namespace that logically groups and isolates memories, such as a user ID." - }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.InputItem" - }, - "description": "Items for which to search for relevant memories." - }, - "previous_search_id": { - "type": "string", - "description": "The unique ID of the previous search request, enabling incremental memory search from where the last operation left off." - }, - "options": { - "allOf": [ - { - "$ref": "#/components/schemas/MemorySearchOptions" - } - ], - "description": "Memory search options." - } - }, - "required": [ - "scope" - ] + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } } }, - "/memory_stores/{name}:update_memories": { + "/mlflow/api/2.0/mlflow/runs/delete-tag": { "post": { - "operationId": "updateMemories", - "description": "Update memory store with conversation memories.", + "operationId": "Runs_deleteTag", + "description": "Delete an MLflow run tag.", "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the memory store to update.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "MemoryStores=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -9975,22 +8993,12 @@ } ], "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, + "200": { + "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/MemoryStoreUpdateResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -10007,55 +9015,24 @@ } }, "tags": [ - "Memory Stores" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "scope": { - "type": "string", - "description": "The namespace that logically groups and isolates memories, such as a user ID." - }, - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.InputItem" - }, - "description": "Conversation items to be stored in memory." - }, - "previous_update_id": { - "type": "string", - "description": "The unique ID of the previous update request, enabling incremental memory updates from where the last operation left off." - }, - "update_delay": { - "type": "integer", - "format": "int32", - "description": "Timeout period before processing the memory update in seconds.\nIf a new update request is received during this period, it will cancel the current request and reset the timeout.\nSet to 0 to immediately trigger the update without delay.\nDefaults to 300 (5 minutes).", - "default": 300 - } - }, - "required": [ - "scope" - ] + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] } } }, - "/mlflow/api/2.0/mlflow/artifacts/list": { + "/mlflow/api/2.0/mlflow/runs/get": { "get": { - "operationId": "Artifacts_list", - "description": "List MLflow artifacts.", + "operationId": "Runs_get", + "description": "Get an MLflow run.", "parameters": [ { "name": "run_id", @@ -10077,16 +9054,6 @@ }, "explode": false }, - { - "name": "path", - "in": "query", - "required": false, - "description": "Artifact path to list.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -10121,14 +9088,14 @@ } }, "tags": [ - "MLflow Artifacts" + "MLflow Runs" ] } }, - "/mlflow/api/2.0/mlflow/experiments/create": { + "/mlflow/api/2.0/mlflow/runs/log-batch": { "post": { - "operationId": "Experiments_create", - "description": "Create an MLflow experiment.", + "operationId": "Runs_logBatch", + "description": "Log a batch of metrics, parameters, and tags to an MLflow run.", "parameters": [ { "name": "api-version", @@ -10164,7 +9131,7 @@ } }, "tags": [ - "MLflow Experiments" + "MLflow Runs" ], "requestBody": { "required": true, @@ -10178,11 +9145,11 @@ } } }, - "/mlflow/api/2.0/mlflow/experiments/delete": { + "/mlflow/api/2.0/mlflow/runs/log-inputs": { "post": { - "operationId": "Experiments_delete", - "description": "Delete an MLflow experiment.", - "parameters": [ + "operationId": "Runs_logInputs", + "description": "Log MLflow run input relationships.", + "parameters": [ { "name": "api-version", "in": "query", @@ -10217,7 +9184,7 @@ } }, "tags": [ - "MLflow Experiments" + "MLflow Runs" ], "requestBody": { "required": true, @@ -10231,31 +9198,11 @@ } } }, - "/mlflow/api/2.0/mlflow/experiments/get": { - "get": { - "operationId": "Experiments_get", - "description": "Get an MLflow experiment by ID.", + "/mlflow/api/2.0/mlflow/runs/log-metric": { + "post": { + "operationId": "Runs_logMetric", + "description": "Log one metric to an MLflow run.", "parameters": [ - { - "name": "experiment_id", - "in": "query", - "required": false, - "description": "MLflow experiment identifier.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "experiment_name", - "in": "query", - "required": false, - "description": "MLflow experiment name.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -10290,35 +9237,25 @@ } }, "tags": [ - "MLflow Experiments" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/mlflow/api/2.0/mlflow/experiments/get-by-name": { - "get": { - "operationId": "Experiments_getByName", - "description": "Get an MLflow experiment by name.", + "/mlflow/api/2.0/mlflow/runs/log-model": { + "post": { + "operationId": "Runs_logModel", + "description": "Log MLflow model metadata.", "parameters": [ - { - "name": "experiment_id", - "in": "query", - "required": false, - "description": "MLflow experiment identifier.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "experiment_name", - "in": "query", - "required": false, - "description": "MLflow experiment name.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -10353,14 +9290,24 @@ } }, "tags": [ - "MLflow Experiments" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/mlflow/api/2.0/mlflow/experiments/restore": { + "/mlflow/api/2.0/mlflow/runs/log-parameter": { "post": { - "operationId": "Experiments_restore", - "description": "Restore a deleted MLflow experiment.", + "operationId": "Runs_logParameter", + "description": "Log one parameter to an MLflow run.", "parameters": [ { "name": "api-version", @@ -10396,7 +9343,7 @@ } }, "tags": [ - "MLflow Experiments" + "MLflow Runs" ], "requestBody": { "required": true, @@ -10410,10 +9357,10 @@ } } }, - "/mlflow/api/2.0/mlflow/experiments/search": { + "/mlflow/api/2.0/mlflow/runs/restore": { "post": { - "operationId": "Experiments_search", - "description": "Search MLflow experiments.", + "operationId": "Runs_restore", + "description": "Restore a deleted MLflow run.", "parameters": [ { "name": "api-version", @@ -10449,7 +9396,7 @@ } }, "tags": [ - "MLflow Experiments" + "MLflow Runs" ], "requestBody": { "required": true, @@ -10463,10 +9410,10 @@ } } }, - "/mlflow/api/2.0/mlflow/experiments/set-experiment-tag": { + "/mlflow/api/2.0/mlflow/runs/search": { "post": { - "operationId": "Experiments_setTag", - "description": "Set an MLflow experiment tag.", + "operationId": "Runs_search", + "description": "Search MLflow runs.", "parameters": [ { "name": "api-version", @@ -10502,7 +9449,7 @@ } }, "tags": [ - "MLflow Experiments" + "MLflow Runs" ], "requestBody": { "required": true, @@ -10516,10 +9463,10 @@ } } }, - "/mlflow/api/2.0/mlflow/experiments/update": { + "/mlflow/api/2.0/mlflow/runs/set-tag": { "post": { - "operationId": "Experiments_update", - "description": "Update MLflow experiment metadata.", + "operationId": "Runs_setTag", + "description": "Set an MLflow run tag.", "parameters": [ { "name": "api-version", @@ -10555,7 +9502,7 @@ } }, "tags": [ - "MLflow Experiments" + "MLflow Runs" ], "requestBody": { "required": true, @@ -10569,62 +9516,11 @@ } } }, - "/mlflow/api/2.0/mlflow/metrics/get-history": { - "get": { - "operationId": "Metrics_getHistory", - "description": "Get MLflow metric history.", + "/mlflow/api/2.0/mlflow/runs/update": { + "post": { + "operationId": "Runs_update", + "description": "Update MLflow run metadata or status.", "parameters": [ - { - "name": "run_id", - "in": "query", - "required": false, - "description": "MLflow run identifier.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "run_uuid", - "in": "query", - "required": false, - "description": "MLflow run UUID.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "metric_key", - "in": "query", - "required": false, - "description": "Metric key.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "max_results", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "page_token", - "in": "query", - "required": false, - "description": "Token used to retrieve the next page of metric points.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -10659,33 +9555,32 @@ } }, "tags": [ - "MLflow Metrics" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/mlflow/api/2.0/mlflow/model-versions/create": { + "/openai/v1/conversations": { "post": { - "operationId": "ModelVersions_create", - "description": "Create an MLflow model version.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], + "operationId": "createConversation", + "description": "Create a conversation.", + "parameters": [], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -10702,50 +9597,80 @@ } }, "tags": [ - "MLflow Model Versions" + "Conversations" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/OpenAI.CreateConversationBody" } } } } - } - }, - "/mlflow/api/2.0/mlflow/model-versions/delete": { - "delete": { - "operationId": "ModelVersions_delete", - "description": "Delete an MLflow model version.", + }, + "get": { + "operationId": "listConversations", + "description": "Returns the list of all conversations.", "parameters": [ { - "name": "name", + "name": "limit", "in": "query", "required": false, - "description": "Registered model name.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { "type": "string" }, "explode": false }, { - "name": "version", + "name": "before", "in": "query", "required": false, - "description": "Model version.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, "explode": false }, { - "name": "api-version", + "name": "agent_name", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "agent_id", + "in": "query", + "required": false, + "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", "schema": { "type": "string" }, @@ -10758,7 +9683,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ConversationResource" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -10775,44 +9726,23 @@ } }, "tags": [ - "MLflow Model Versions" + "Conversations" ] } }, - "/mlflow/api/2.0/mlflow/model-versions/delete-tag": { - "delete": { - "operationId": "ModelVersions_deleteTag", - "description": "Delete an MLflow model-version tag.", + "/openai/v1/conversations/{conversation_id}": { + "post": { + "operationId": "updateConversation", + "description": "Update a conversation.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "version", - "in": "query", - "required": false, - "description": "Model version.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation to update.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -10821,7 +9751,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -10838,44 +9768,31 @@ } }, "tags": [ - "MLflow Model Versions" - ] - } - }, - "/mlflow/api/2.0/mlflow/model-versions/get": { + "Conversations" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.UpdateConversationBody" + } + } + } + } + }, "get": { - "operationId": "ModelVersions_get", - "description": "Get an MLflow model version.", + "operationId": "getConversation", + "description": "Retrieves a conversation.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "version", - "in": "query", - "required": false, - "description": "Model version.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -10884,7 +9801,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -10901,44 +9818,21 @@ } }, "tags": [ - "MLflow Model Versions" + "Conversations" ] - } - }, - "/mlflow/api/2.0/mlflow/model-versions/get-download-uri": { - "get": { - "operationId": "ModelVersions_getDownloadUri", - "description": "Get an MLflow model version download URI.", + }, + "delete": { + "operationId": "deleteConversation", + "description": "Deletes a conversation.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "version", - "in": "query", - "required": false, - "description": "Model version.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -10947,7 +9841,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.DeletedConversationResource" } } } @@ -10964,22 +9858,34 @@ } }, "tags": [ - "MLflow Model Versions" + "Conversations" ] } }, - "/mlflow/api/2.0/mlflow/model-versions/get-storage-location-uri": { + "/openai/v1/conversations/{conversation_id}/items": { "post": { - "operationId": "ModelVersions_getStorageLocationUri", - "description": "Get an MLflow model version storage location URI.", + "operationId": "createConversationItems", + "description": "Create items in a conversation with the given ID.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation on which the item needs to be created.", "schema": { "type": "string" + } + }, + { + "name": "include", + "in": "query", + "required": false, + "description": "Additional fields to include in the response.\nSee the `include` parameter for listing Conversation items for more information.", + "schema": { + "type": "array", + "items": { + "type": "string" + } }, "explode": false } @@ -10990,7 +9896,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationItemList" } } } @@ -11007,55 +9913,96 @@ } }, "tags": [ - "MLflow Model Versions" + "Conversations" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Item" + }, + "maxItems": 20, + "description": "The items to add to the conversation. You may add up to 20 items at a time." + } + }, + "required": [ + "items" + ] } } } } - } - }, - "/mlflow/api/2.0/mlflow/model-versions/search": { + }, "get": { - "operationId": "ModelVersions_search", - "description": "Search MLflow model versions.", + "operationId": "listConversationItems", + "description": "List all items for a conversation with the given ID.", "parameters": [ { - "name": "max_results", + "name": "conversation_id", + "in": "path", + "required": true, + "description": "The id of the conversation on which the items needs to be listed.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { "type": "integer", - "format": "int32" + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "page_token", + "name": "order", "in": "query", "required": false, - "description": "Token used to retrieve the next page of results.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { "type": "string" }, "explode": false }, { - "name": "api-version", + "name": "before", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, "explode": false + }, + { + "name": "item_type", + "in": "query", + "required": false, + "description": "Filter by item type. If provided, only items of the specified type will be returned.", + "schema": { + "$ref": "#/components/schemas/OpenAI.ItemType" + }, + "explode": false } ], "responses": { @@ -11064,7 +10011,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.OutputItem" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -11081,24 +10054,32 @@ } }, "tags": [ - "MLflow Model Versions" + "Conversations" ] } }, - "/mlflow/api/2.0/mlflow/model-versions/set-tag": { - "post": { - "operationId": "ModelVersions_setTag", - "description": "Set an MLflow model-version tag.", + "/openai/v1/conversations/{conversation_id}/items/{item_id}": { + "get": { + "operationId": "getConversationItem", + "description": "Get a single item from a conversation with the given IDs.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the conversation that contains the item.", "schema": { "type": "string" - }, - "explode": false + } + }, + { + "name": "item_id", + "in": "path", + "required": true, + "description": "The id of the conversation item to retrieve.", + "schema": { + "type": "string" + } } ], "responses": { @@ -11107,7 +10088,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.OutputItem" } } } @@ -11124,34 +10105,30 @@ } }, "tags": [ - "MLflow Model Versions" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/model-versions/transition-stage": { - "post": { - "operationId": "ModelVersions_transitionStage", - "description": "Transition an MLflow model version stage.", + "Conversations" + ] + }, + "delete": { + "operationId": "deleteConversationItem", + "description": "Delete an item from a conversation with the given IDs.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation on which the item needs to be deleted from.", "schema": { "type": "string" - }, - "explode": false + } + }, + { + "name": "item_id", + "in": "path", + "required": true, + "description": "The id of the conversation item to delete.", + "schema": { + "type": "string" + } } ], "responses": { @@ -11160,7 +10137,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -11177,34 +10154,69 @@ } }, "tags": [ - "MLflow Model Versions" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Conversations" + ] } }, - "/mlflow/api/2.0/mlflow/model-versions/update": { - "patch": { - "operationId": "ModelVersions_update", - "description": "Update an MLflow model version.", + "/openai/v1/evals": { + "get": { + "operationId": "Evals_listEvals", + "summary": "List all evaluations", + "description": "List evaluations for a project.", "parameters": [ { - "name": "api-version", + "name": "after", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Identifier for the last run from the previous pagination request.", "schema": { "type": "string" }, "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of runs to retrieve.", + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" + }, + "explode": false + }, + { + "name": "order_by", + "in": "query", + "required": false, + "description": "Evals can be ordered by creation time or last updated time.\nUse `created_at` for creation time or `updated_at` for last updated time.", + "schema": { + "type": "string", + "enum": [ + "created_at", + "updated_at" + ], + "default": "created_at" + } } ], "responses": { @@ -11213,7 +10225,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Eval" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -11230,43 +10268,21 @@ } }, "tags": [ - "MLflow Model Versions" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/registered-models/create": { + "Evals" + ] + }, "post": { - "operationId": "RegisteredModels_create", - "description": "Create an MLflow registered model.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], + "operationId": "Evals_createEval", + "summary": "Create evaluation", + "description": "Create the structure of an evaluation that can be used to test a model's performance.\nAn evaluation is a set of testing criteria and the config for a data source, which dictates the schema of the data used in the evaluation. After creating an evaluation, you can run it on different models and model parameters. We support several types of graders and datasources.\nFor more information, see the [Evals guide](https://platform.openai.com/docs/guides/evals).", + "parameters": [], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/Eval" } } } @@ -11283,44 +10299,34 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/CreateEvalRequest" } } } } } }, - "/mlflow/api/2.0/mlflow/registered-models/delete": { + "/openai/v1/evals/{eval_id}": { "delete": { - "operationId": "RegisteredModels_delete", - "description": "Delete an MLflow registered model.", + "operationId": "Evals_deleteEval", + "summary": "Delete an evaluation", + "description": "Delete an evaluation.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -11329,7 +10335,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/DeleteEvalResponse" } } } @@ -11346,34 +10352,22 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/delete-tag": { - "delete": { - "operationId": "RegisteredModels_deleteTag", - "description": "Delete an MLflow registered-model tag.", + }, + "get": { + "operationId": "Evals_getEval", + "summary": "Get an evaluation", + "description": "Get an evaluation by ID.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -11382,7 +10376,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/Eval" } } } @@ -11399,34 +10393,22 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/get": { - "get": { - "operationId": "RegisteredModels_get", - "description": "Get an MLflow registered model.", + }, + "post": { + "operationId": "Evals_updateEval", + "summary": "Update an evaluation", + "description": "Update certain properties of an evaluation.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to update.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -11435,7 +10417,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/Eval" } } } @@ -11452,96 +10434,89 @@ } }, "tags": [ - "MLflow Registered Models" - ] + "Evals" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateEvalParametersBody" + } + } + } + } } }, - "/mlflow/api/2.0/mlflow/registered-models/get-latest-versions": { + "/openai/v1/evals/{eval_id}/runs": { "get": { - "operationId": "RegisteredModels_getLatestVersions", - "description": "Get latest versions for an MLflow registered model.", + "operationId": "Evals_listRuns", + "summary": "Get a list of runs for an evaluation", + "description": "Get a list of runs for an evaluation.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation to retrieve runs for.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", + "name": "after", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Identifier for the last run from the previous pagination request.", "schema": { "type": "string" }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Registered Models" - ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/list": { - "get": { - "operationId": "RegisteredModels_list", - "description": "List MLflow registered models.", - "parameters": [ { - "name": "max_results", + "name": "limit", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "Number of runs to retrieve.", "schema": { - "type": "integer", - "format": "int32" + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 }, "explode": false }, { - "name": "page_token", + "name": "order", "in": "query", "required": false, - "description": "Token used to retrieve the next page of results.", + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" }, "explode": false }, { - "name": "api-version", + "name": "status", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Filter runs by status. One of `queued` | `in_progress` | `failed` | `completed` | `canceled`.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "queued", + "in_progress", + "completed", + "canceled", + "failed" + ] }, "explode": false } @@ -11552,7 +10527,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRun" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -11569,24 +10570,21 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/rename": { + }, "post": { - "operationId": "RegisteredModels_rename", - "description": "Rename an MLflow registered model.", + "operationId": "Evals_createEvalRun", + "summary": "Create evaluation run", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to create a run for.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -11595,7 +10593,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRun" } } } @@ -11612,55 +10610,43 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/CreateEvalRunRequest" } } } } } }, - "/mlflow/api/2.0/mlflow/registered-models/search": { - "get": { - "operationId": "RegisteredModels_search", - "description": "Search MLflow registered models.", + "/openai/v1/evals/{eval_id}/runs/{run_id}": { + "delete": { + "operationId": "Evals_deleteEvalRun", + "summary": "Delete evaluation run", + "description": "Delete an eval run.", "parameters": [ { - "name": "max_results", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "page_token", - "in": "query", - "required": false, - "description": "Token used to retrieve the next page of results.", + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation to delete the run from.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", - "in": "query", + "name": "run_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the run to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -11669,7 +10655,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/DeleteEvalRunResponse" } } } @@ -11686,24 +10672,31 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/set-tag": { - "post": { - "operationId": "RegisteredModels_setTag", - "description": "Set an MLflow registered-model tag.", + }, + "get": { + "operationId": "Evals_getEvalRun", + "summary": "Get an evaluation run", + "description": "Get an evaluation run by ID.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to retrieve runs for.", "schema": { "type": "string" - }, - "explode": false + } + }, + { + "name": "run_id", + "in": "path", + "required": true, + "description": "The ID of the run to retrieve.", + "schema": { + "type": "string" + } } ], "responses": { @@ -11712,7 +10705,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRun" } } } @@ -11729,34 +10722,31 @@ } }, "tags": [ - "MLflow Registered Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/registered-models/update": { - "patch": { - "operationId": "RegisteredModels_update", - "description": "Update an MLflow registered model.", + "Evals" + ] + }, + "post": { + "operationId": "Evals_cancelEvalRun", + "summary": "Cancel evaluation run", + "description": "Cancel an ongoing evaluation run.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation whose run you want to cancel.", "schema": { "type": "string" - }, - "explode": false + } + }, + { + "name": "run_id", + "in": "path", + "required": true, + "description": "The ID of the run to cancel.", + "schema": { + "type": "string" + } } ], "responses": { @@ -11765,7 +10755,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRun" } } } @@ -11782,34 +10772,85 @@ } }, "tags": [ - "MLflow Registered Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Evals" + ] } }, - "/mlflow/api/2.0/mlflow/runs/create": { - "post": { - "operationId": "Runs_create", - "description": "Create an MLflow run.", + "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items": { + "get": { + "operationId": "Evals_getEvalRunOutputItems", + "summary": "Get evaluation run output items", + "description": "Get a list of output items for an evaluation run.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", "schema": { "type": "string" + } + }, + { + "name": "run_id", + "in": "path", + "required": true, + "description": "The ID of the run to retrieve output items for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last run from the previous pagination request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of runs to retrieve.", + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" }, "explode": false + }, + { + "name": "status", + "in": "query", + "required": false, + "description": "Filter output items by status. Use `failed` to filter by failed output\nitems or `pass` to filter by passed output items.", + "schema": { + "type": "string", + "enum": [ + "fail", + "pass" + ] + } } ], "responses": { @@ -11818,7 +10859,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRunOutputItem" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -11835,34 +10902,42 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Evals" + ] } }, - "/mlflow/api/2.0/mlflow/runs/delete": { - "post": { - "operationId": "Runs_delete", - "description": "Delete an MLflow run.", + "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}": { + "get": { + "operationId": "Evals_getEvalRunOutputItem", + "summary": "Get an output item of an evaluation run", + "description": "Get an evaluation run output item by ID.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to retrieve runs for.", "schema": { "type": "string" - }, - "explode": false + } + }, + { + "name": "run_id", + "in": "path", + "required": true, + "description": "The ID of the run to retrieve.", + "schema": { + "type": "string" + } + }, + { + "name": "output_item_id", + "in": "path", + "required": true, + "description": "The ID of the output item to retrieve.", + "schema": { + "type": "string" + } } ], "responses": { @@ -11871,7 +10946,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRunOutputItem" } } } @@ -11888,24 +10963,14 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Evals" + ] } }, - "/mlflow/api/2.0/mlflow/runs/delete-tag": { + "/openai/v1/fine_tuning/jobs": { "post": { - "operationId": "Runs_deleteTag", - "description": "Delete an MLflow run tag.", + "operationId": "createFineTuningJob", + "description": "Creates a fine-tuning job which begins the process of creating a new model from a given dataset.\n\nResponse includes details of the enqueued job including job status and the name of the fine-tuned models once complete.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", "parameters": [ { "name": "api-version", @@ -11924,7 +10989,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -11941,42 +11006,42 @@ } }, "tags": [ - "MLflow Runs" + "Fine-Tuning" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/OpenAI.CreateFineTuningJobRequest" } } } } - } - }, - "/mlflow/api/2.0/mlflow/runs/get": { + }, "get": { - "operationId": "Runs_get", - "description": "Get an MLflow run.", + "operationId": "listPaginatedFineTuningJobs", + "description": "List your organization's fine-tuning jobs", "parameters": [ { - "name": "run_id", + "name": "after", "in": "query", "required": false, - "description": "MLflow run identifier.", + "description": "Identifier for the last job from the previous pagination request.", "schema": { "type": "string" }, "explode": false }, { - "name": "run_uuid", + "name": "limit", "in": "query", "required": false, - "description": "MLflow run UUID.", + "description": "Number of fine-tuning jobs to retrieve.", "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 20 }, "explode": false }, @@ -11997,7 +11062,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ListPaginatedFineTuningJobsResponse" } } } @@ -12014,15 +11079,24 @@ } }, "tags": [ - "MLflow Runs" + "Fine-Tuning" ] } }, - "/mlflow/api/2.0/mlflow/runs/log-batch": { - "post": { - "operationId": "Runs_logBatch", - "description": "Log a batch of metrics, parameters, and tags to an MLflow run.", + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}": { + "get": { + "operationId": "retrieveFineTuningJob", + "description": "Get info about a fine-tuning job.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -12040,7 +11114,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -12057,25 +11131,24 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/log-inputs": { + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel": { "post": { - "operationId": "Runs_logInputs", - "description": "Log MLflow run input relationships.", + "operationId": "cancelFineTuningJob", + "description": "Immediately cancel a fine-tune job.", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to cancel.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -12093,7 +11166,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -12110,25 +11183,46 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/log-metric": { - "post": { - "operationId": "Runs_logMetric", - "description": "Log one metric to an MLflow run.", + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints": { + "get": { + "operationId": "listFineTuningJobCheckpoints", + "description": "List checkpoints for a fine-tuning job.", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to get checkpoints for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last checkpoint ID from the previous pagination request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of checkpoints to retrieve.", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -12146,7 +11240,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ListFineTuningJobCheckpointsResponse" } } } @@ -12163,131 +11257,46 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/log-model": { - "post": { - "operationId": "Runs_logModel", - "description": "Log MLflow model metadata.", + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events": { + "get": { + "operationId": "listFineTuningJobEvents", + "description": "Get fine-grained status updates for a fine-tuning job.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "fine_tuning_job_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the fine-tuning job to get events for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last event from the previous pagination request.", "schema": { "type": "string" }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/log-parameter": { - "post": { - "operationId": "Runs_logParameter", - "description": "Log one parameter to an MLflow run.", - "parameters": [ { - "name": "api-version", + "name": "limit", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Number of events to retrieve.", "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 20 }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/restore": { - "post": { - "operationId": "Runs_restore", - "description": "Restore a deleted MLflow run.", - "parameters": [ { "name": "api-version", "in": "query", @@ -12305,7 +11314,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ListFineTuningJobEventsResponse" } } } @@ -12322,78 +11331,24 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/search": { + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause": { "post": { - "operationId": "Runs_search", - "description": "Search MLflow runs.", + "operationId": "pauseFineTuningJob", + "description": "Pause a running fine-tune job.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "fine_tuning_job_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the fine-tuning job to pause.", "schema": { "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/set-tag": { - "post": { - "operationId": "Runs_setTag", - "description": "Set an MLflow run tag.", - "parameters": [ { "name": "api-version", "in": "query", @@ -12411,7 +11366,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -12428,175 +11383,29 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/update": { + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume": { "post": { - "operationId": "Runs_update", - "description": "Update MLflow run metadata or status.", + "operationId": "resumeFineTuningJob", + "description": "Resume a paused fine-tune job.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "fine_tuning_job_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the fine-tuning job to resume.", "schema": { "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/openai/v1/conversations": { - "post": { - "operationId": "createConversation", - "description": "Create a conversation.", - "parameters": [], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateConversationBody" - } } - } - } - }, - "get": { - "operationId": "listConversations", - "description": "Returns the list of all conversations.", - "parameters": [ - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "agent_name", - "in": "query", - "required": false, - "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", - "schema": { - "type": "string" - }, - "explode": false }, { - "name": "agent_id", + "name": "api-version", "in": "query", - "required": false, - "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, @@ -12609,33 +11418,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -12652,32 +11435,27 @@ } }, "tags": [ - "Conversations" + "Fine-Tuning" ] } }, - "/openai/v1/conversations/{conversation_id}": { + "/openai/v1/responses": { "post": { - "operationId": "updateConversation", - "description": "Update a conversation.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation to update.", - "schema": { - "type": "string" - } - } - ], + "operationId": "createResponse_createResponseStream", + "parameters": [], + "description": "Creates a model response. Creates a model response (streaming response).", "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" + "$ref": "#/components/schemas/OpenAI.Response" + } + }, + "text/event-stream": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" } } } @@ -12694,171 +11472,438 @@ } }, "tags": [ - "Conversations" + "Responses" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.UpdateConversationBody" - } - } - } - } - }, - "get": { - "operationId": "getConversation", - "description": "Retrieves a conversation.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation to retrieve.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ] - }, - "delete": { - "operationId": "deleteConversation", - "description": "Deletes a conversation.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation to delete.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.DeletedConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ] - } - }, - "/openai/v1/conversations/{conversation_id}/items": { - "post": { - "operationId": "createConversationItems", - "description": "Create items in a conversation with the given ID.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation on which the item needs to be created.", - "schema": { - "type": "string" - } - }, - { - "name": "include", - "in": "query", - "required": false, - "description": "Additional fields to include in the response.\nSee the `include` parameter for listing Conversation items for more information.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationItemList" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Item" - }, - "maxItems": 20, - "description": "The items to add to the conversation. You may add up to 20 items at a time." + "anyOf": [ + { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true + }, + "top_logprobs": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "temperature": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "top_p": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "user": { + "type": "string", + "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", + "deprecated": true + }, + "safety_identifier": { + "type": "string", + "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." + }, + "prompt_cache_key": { + "type": "string", + "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." + }, + "service_tier": { + "$ref": "#/components/schemas/OpenAI.ServiceTier" + }, + "prompt_cache_retention": { + "type": "string", + "enum": [ + "in-memory", + "24h" + ], + "nullable": true + }, + "previous_response_id": { + "type": "string", + "nullable": true + }, + "model": { + "type": "string", + "description": "The model deployment to use for the creation of this response." + }, + "reasoning": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Reasoning" + } + ], + "nullable": true + }, + "background": { + "type": "boolean", + "nullable": true + }, + "max_output_tokens": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "max_tool_calls": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "text": { + "$ref": "#/components/schemas/OpenAI.ResponseTextParam" + }, + "tools": { + "$ref": "#/components/schemas/OpenAI.ToolsArray" + }, + "tool_choice": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" + }, + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" + } + ] + }, + "prompt": { + "$ref": "#/components/schemas/OpenAI.Prompt" + }, + "truncation": { + "type": "string", + "enum": [ + "auto", + "disabled" + ], + "nullable": true, + "default": "disabled" + }, + "input": { + "$ref": "#/components/schemas/OpenAI.InputParam" + }, + "include": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "nullable": true + }, + "parallel_tool_calls": { + "type": "boolean", + "nullable": true, + "default": true + }, + "store": { + "type": "boolean", + "nullable": true, + "default": true + }, + "instructions": { + "type": "string", + "nullable": true + }, + "stream": { + "type": "boolean", + "nullable": true + }, + "stream_options": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" + } + ], + "nullable": true + }, + "conversation": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ConversationParam" + } + ], + "nullable": true + }, + "context_management": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ContextManagementParam" + }, + "nullable": true, + "description": "Context management configuration for this request." + }, + "agent": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "(Deprecated) Use agent_reference instead.\nThe agent to use for generating the response." + }, + "agent_session_id": { + "type": "string", + "description": "Optional session identifier for sandbox affinity. Currently only relevant for hosted agents.\nWhen provided, the request is routed to the same sandbox. When omitted, auto-derived from\nconversation_id/prev_response_id or a new UUID is generated." + }, + "agent_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "The agent to use for generating the response." + }, + "structured_inputs": { + "type": "object", + "additionalProperties": {}, + "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." + } + } + }, + { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true + }, + "top_logprobs": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "temperature": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "top_p": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "user": { + "type": "string", + "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", + "deprecated": true + }, + "safety_identifier": { + "type": "string", + "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." + }, + "prompt_cache_key": { + "type": "string", + "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." + }, + "service_tier": { + "$ref": "#/components/schemas/OpenAI.ServiceTier" + }, + "prompt_cache_retention": { + "type": "string", + "enum": [ + "in-memory", + "24h" + ], + "nullable": true + }, + "previous_response_id": { + "type": "string", + "nullable": true + }, + "model": { + "type": "string", + "description": "The model deployment to use for the creation of this response." + }, + "reasoning": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Reasoning" + } + ], + "nullable": true + }, + "background": { + "type": "boolean", + "nullable": true + }, + "max_output_tokens": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "max_tool_calls": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "text": { + "$ref": "#/components/schemas/OpenAI.ResponseTextParam" + }, + "tools": { + "$ref": "#/components/schemas/OpenAI.ToolsArray" + }, + "tool_choice": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" + }, + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" + } + ] + }, + "prompt": { + "$ref": "#/components/schemas/OpenAI.Prompt" + }, + "truncation": { + "type": "string", + "enum": [ + "auto", + "disabled" + ], + "nullable": true, + "default": "disabled" + }, + "input": { + "$ref": "#/components/schemas/OpenAI.InputParam" + }, + "include": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "nullable": true + }, + "parallel_tool_calls": { + "type": "boolean", + "nullable": true, + "default": true + }, + "store": { + "type": "boolean", + "nullable": true, + "default": true + }, + "instructions": { + "type": "string", + "nullable": true + }, + "stream": { + "type": "boolean", + "nullable": true + }, + "stream_options": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" + } + ], + "nullable": true + }, + "conversation": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ConversationParam" + } + ], + "nullable": true + }, + "context_management": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ContextManagementParam" + }, + "nullable": true, + "description": "Context management configuration for this request." + }, + "agent": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "(Deprecated) Use agent_reference instead.\nThe agent to use for generating the response." + }, + "agent_session_id": { + "type": "string", + "description": "Optional session identifier for sandbox affinity. Currently only relevant for hosted agents.\nWhen provided, the request is routed to the same sandbox. When omitted, auto-derived from\nconversation_id/prev_response_id or a new UUID is generated." + }, + "agent_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "The agent to use for generating the response." + }, + "structured_inputs": { + "type": "object", + "additionalProperties": {}, + "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." + } + } } - }, - "required": [ - "items" ] } } @@ -12866,18 +11911,9 @@ } }, "get": { - "operationId": "listConversationItems", - "description": "List all items for a conversation with the given ID.", + "operationId": "listResponses", + "description": "Returns the list of all responses.", "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation on which the items needs to be listed.", - "schema": { - "type": "string" - } - }, { "name": "limit", "in": "query", @@ -12921,12 +11957,32 @@ "explode": false }, { - "name": "item_type", + "name": "agent_name", "in": "query", "required": false, - "description": "Filter by item type. If provided, only items of the specified type will be returned.", + "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", "schema": { - "$ref": "#/components/schemas/OpenAI.ItemType" + "type": "string" + }, + "explode": false + }, + { + "name": "agent_id", + "in": "query", + "required": false, + "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "conversation_id", + "in": "query", + "required": false, + "description": "Filter by conversation ID. If provided, only responses associated with the specified conversation will be returned.", + "schema": { + "type": "string" }, "explode": false } @@ -12946,7 +12002,7 @@ "data": { "type": "array", "items": { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/OpenAI.Response" }, "description": "The requested list of items." }, @@ -12980,41 +12036,22 @@ } }, "tags": [ - "Conversations" + "Responses" ] } }, - "/openai/v1/conversations/{conversation_id}/items/{item_id}": { - "get": { - "operationId": "getConversationItem", - "description": "Get a single item from a conversation with the given IDs.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The ID of the conversation that contains the item.", - "schema": { - "type": "string" - } - }, - { - "name": "item_id", - "in": "path", - "required": true, - "description": "The id of the conversation item to retrieve.", - "schema": { - "type": "string" - } - } - ], + "/openai/v1/responses/compact": { + "post": { + "operationId": "compactResponseConversation", + "description": "Produces a compaction of a responses conversation.", + "parameters": [], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/OpenAI.CompactResource" } } } @@ -13031,237 +12068,89 @@ } }, "tags": [ - "Conversations" - ] - }, - "delete": { - "operationId": "deleteConversationItem", - "description": "Delete an item from a conversation with the given IDs.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation on which the item needs to be deleted from.", - "schema": { - "type": "string" - } - }, - { - "name": "item_id", - "in": "path", - "required": true, - "description": "The id of the conversation item to delete.", - "schema": { - "type": "string" - } - } + "Responses" ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CompactResponseMethodPublicBody" } } } - }, - "tags": [ - "Conversations" - ] + } } }, - "/openai/v1/evals": { + "/openai/v1/responses/{response_id}": { "get": { - "operationId": "Evals_listEvals", - "summary": "List all evaluations", - "description": "List evaluations for a project.", + "operationId": "getResponse_getResponseStream", "parameters": [ { - "name": "after", + "name": "response_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "include[]", "in": "query", "required": false, - "description": "Identifier for the last run from the previous pagination request.", "schema": { - "type": "string" - }, - "explode": false + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "default": [] + } }, { - "name": "limit", + "name": "stream", "in": "query", "required": false, - "description": "Number of runs to retrieve.", "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 + "type": "boolean", + "default": false }, "explode": false }, { - "name": "order", + "name": "starting_after", "in": "query", "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" + "type": "integer", + "format": "int32" }, "explode": false }, { - "name": "order_by", - "in": "query", + "name": "accept", + "in": "header", "required": false, - "description": "Evals can be ordered by creation time or last updated time.\nUse `created_at` for creation time or `updated_at` for last updated time.", "schema": { "type": "string", "enum": [ - "created_at", - "updated_at" - ], - "default": "created_at" + "text/event-stream" + ] } } ], + "description": "Retrieves a model response with the given ID. Retrieves a model response with the given ID (streaming response).", "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Eval" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - }, - "post": { - "operationId": "Evals_createEval", - "summary": "Create evaluation", - "description": "Create the structure of an evaluation that can be used to test a model's performance.\nAn evaluation is a set of testing criteria and the config for a data source, which dictates the schema of the data used in the evaluation. After creating an evaluation, you can run it on different models and model parameters. We support several types of graders and datasources.\nFor more information, see the [Evals guide](https://platform.openai.com/docs/guides/evals).", - "parameters": [], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Eval" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/OpenAI.Response" } - } - } - } - }, - "tags": [ - "Evals" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateEvalRequest" - } - } - } - } - } - }, - "/openai/v1/evals/{eval_id}": { - "delete": { - "operationId": "Evals_deleteEval", - "summary": "Delete an evaluation", - "description": "Delete an evaluation.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to delete.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { + }, + "text/event-stream": { "schema": { - "$ref": "#/components/schemas/DeleteEvalResponse" + "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" } } } @@ -13278,19 +12167,18 @@ } }, "tags": [ - "Evals" + "Responses" ] }, - "get": { - "operationId": "Evals_getEval", - "summary": "Get an evaluation", - "description": "Get an evaluation by ID.", + "delete": { + "operationId": "deleteResponse", + "description": "Deletes a model response.", "parameters": [ { - "name": "eval_id", + "name": "response_id", "in": "path", "required": true, - "description": "The ID of the evaluation to retrieve.", + "description": "The ID of the response to delete.", "schema": { "type": "string" } @@ -13302,7 +12190,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Eval" + "$ref": "#/components/schemas/DeleteResponseResult" } } } @@ -13319,19 +12207,20 @@ } }, "tags": [ - "Evals" + "Responses" ] - }, + } + }, + "/openai/v1/responses/{response_id}/cancel": { "post": { - "operationId": "Evals_updateEval", - "summary": "Update an evaluation", - "description": "Update certain properties of an evaluation.", + "operationId": "cancelResponse", + "description": "Cancels a model response.", "parameters": [ { - "name": "eval_id", + "name": "response_id", "in": "path", "required": true, - "description": "The ID of the evaluation to update.", + "description": "The ID of the response to cancel.", "schema": { "type": "string" } @@ -13343,7 +12232,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Eval" + "$ref": "#/components/schemas/OpenAI.Response" } } } @@ -13360,89 +12249,62 @@ } }, "tags": [ - "Evals" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateEvalParametersBody" - } - } - } - } + "Responses" + ] } }, - "/openai/v1/evals/{eval_id}/runs": { + "/openai/v1/responses/{response_id}/input_items": { "get": { - "operationId": "Evals_listRuns", - "summary": "Get a list of runs for an evaluation", - "description": "Get a list of runs for an evaluation.", + "operationId": "listInputItems", + "description": "Returns a list of input items for a given response.", "parameters": [ { - "name": "eval_id", + "name": "response_id", "in": "path", "required": true, - "description": "The ID of the evaluation to retrieve runs for.", "schema": { "type": "string" } }, { - "name": "after", + "name": "limit", "in": "query", "required": false, - "description": "Identifier for the last run from the previous pagination request.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "limit", + "name": "order", "in": "query", "required": false, - "description": "Number of runs to retrieve.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, { - "name": "order", + "name": "after", "in": "query", "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" + "type": "string" }, "explode": false }, { - "name": "status", + "name": "before", "in": "query", "required": false, - "description": "Filter runs by status. One of `queued` | `in_progress` | `failed` | `completed` | `canceled`.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { - "type": "string", - "enum": [ - "queued", - "in_progress", - "completed", - "canceled", - "failed" - ] + "type": "string" }, "explode": false } @@ -13462,7 +12324,7 @@ "data": { "type": "array", "items": { - "$ref": "#/components/schemas/EvalRun" + "$ref": "#/components/schemas/OpenAI.ItemResource" }, "description": "The requested list of items." }, @@ -13496,20 +12358,28 @@ } }, "tags": [ - "Evals" + "Responses" ] - }, - "post": { - "operationId": "Evals_createEvalRun", - "summary": "Create evaluation run", + } + }, + "/redTeams/runs": { + "get": { + "operationId": "RedTeams_list", + "description": "List a redteam by name.", "parameters": [ { - "name": "eval_id", - "in": "path", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The ID of the evaluation to create a run for.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "RedTeams=V1Preview" + ] } } ], @@ -13519,59 +12389,63 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRun" + "$ref": "#/components/schemas/PagedRedTeam" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Evals" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateEvalRunRequest" - } - } - } - } + "Redteams" + ] } }, - "/openai/v1/evals/{eval_id}/runs/{run_id}": { - "delete": { - "operationId": "Evals_deleteEvalRun", - "summary": "Delete evaluation run", - "description": "Delete an eval run.", + "/redTeams/runs/{name}": { + "get": { + "operationId": "RedTeams_get", + "description": "Get a redteam by name.", "parameters": [ { - "name": "eval_id", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", "in": "path", "required": true, - "description": "The ID of the evaluation to delete the run from.", + "description": "Identifier of the red team run.", "schema": { "type": "string" } }, { - "name": "run_id", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The ID of the run to delete.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "RedTeams=V1Preview" + ] } } ], @@ -13581,57 +12455,71 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteEvalRunResponse" + "$ref": "#/components/schemas/RedTeam" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Evals" + "Redteams" ] - }, - "get": { - "operationId": "Evals_getEvalRun", - "summary": "Get an evaluation run", - "description": "Get an evaluation run by ID.", + } + }, + "/redTeams/runs:run": { + "post": { + "operationId": "RedTeams_create", + "description": "Creates a redteam run.", "parameters": [ { - "name": "eval_id", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The ID of the evaluation to retrieve runs for.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "RedTeams=V1Preview" + ] } }, { - "name": "run_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the run to retrieve.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { - "200": { - "description": "The request has succeeded.", + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRun" + "$ref": "#/components/schemas/RedTeam" } } } @@ -13648,30 +12536,59 @@ } }, "tags": [ - "Evals" - ] - }, - "post": { - "operationId": "Evals_cancelEvalRun", - "summary": "Cancel evaluation run", - "description": "Cancel an ongoing evaluation run.", + "Redteams" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RedTeam" + } + } + }, + "description": "Redteam to be run" + } + } + }, + "/schedules": { + "get": { + "operationId": "Schedules_list", + "description": "List all schedules.", "parameters": [ { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation whose run you want to cancel.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "run_id", - "in": "path", - "required": true, - "description": "The ID of the run to cancel.", + "name": "type", + "in": "query", + "required": false, + "description": "Filter by the type of schedule.", "schema": { - "type": "string" + "$ref": "#/components/schemas/ScheduleTaskType" + }, + "explode": false + }, + { + "name": "enabled", + "in": "query", + "required": false, + "description": "Filter by the enabled status.", + "schema": { + "type": "boolean" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] } } ], @@ -13681,188 +12598,120 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRun" + "$ref": "#/components/schemas/PagedSchedule" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Evals" + "Schedules" ] } }, - "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items": { - "get": { - "operationId": "Evals_getEvalRunOutputItems", - "summary": "Get evaluation run output items", - "description": "Get a list of output items for an evaluation run.", + "/schedules/{id}": { + "delete": { + "operationId": "Schedules_delete", + "description": "Delete a schedule.", "parameters": [ { - "name": "eval_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "run_id", + "name": "id", "in": "path", "required": true, - "description": "The ID of the run to retrieve output items for.", + "description": "Identifier of the schedule.", "schema": { "type": "string" } }, { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last run from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of runs to retrieve.", - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", - "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" - }, - "explode": false - }, - { - "name": "status", - "in": "query", - "required": false, - "description": "Filter output items by status. Use `failed` to filter by failed output\nitems or `pass` to filter by passed output items.", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { "type": "string", "enum": [ - "fail", - "pass" + "Schedules=V1Preview" ] } } ], "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRunOutputItem" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } + "204": { + "description": "There is no content to send for this request, but the headers may be useful." }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Evals" + "Schedules" ] - } - }, - "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}": { + }, "get": { - "operationId": "Evals_getEvalRunOutputItem", - "summary": "Get an output item of an evaluation run", - "description": "Get an evaluation run output item by ID.", + "operationId": "Schedules_get", + "description": "Get a schedule by id.", "parameters": [ { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to retrieve runs for.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "run_id", + "name": "id", "in": "path", "required": true, - "description": "The ID of the run to retrieve.", + "description": "Identifier of the schedule.", "schema": { "type": "string" } }, { - "name": "output_item_id", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The ID of the output item to retrieve.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] } } ], @@ -13872,41 +12721,62 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRunOutputItem" + "$ref": "#/components/schemas/Schedule" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Evals" + "Schedules" ] - } - }, - "/openai/v1/fine_tuning/jobs": { - "post": { - "operationId": "createFineTuningJob", - "description": "Creates a fine-tuning job which begins the process of creating a new model from a given dataset.\n\nResponse includes details of the enqueued job including job status and the name of the fine-tuned models once complete.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", + }, + "put": { + "operationId": "Schedules_createOrUpdate", + "description": "Create or update operation template.", "parameters": [ { - "name": "api-version", - "in": "query", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "Identifier of the schedule.", "schema": { "type": "string" - }, - "explode": false + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } } ], "responses": { @@ -13915,71 +12785,105 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/Schedule" + } + } + } + }, + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Schedule" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Fine-Tuning" + "Schedules" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.CreateFineTuningJobRequest" + "$ref": "#/components/schemas/Schedule" } } - } + }, + "description": "The resource instance." } - }, + } + }, + "/schedules/{id}/runs": { "get": { - "operationId": "listPaginatedFineTuningJobs", - "description": "List your organization's fine-tuning jobs", + "operationId": "Schedules_listRuns", + "description": "List all schedule runs.", "parameters": [ { - "name": "after", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "id", + "in": "path", + "required": true, + "description": "Identifier of the schedule.", + "schema": { + "type": "string" + } + }, + { + "name": "type", "in": "query", "required": false, - "description": "Identifier for the last job from the previous pagination request.", + "description": "Filter by the type of schedule.", "schema": { - "type": "string" + "$ref": "#/components/schemas/ScheduleTaskType" }, "explode": false }, { - "name": "limit", + "name": "enabled", "in": "query", "required": false, - "description": "Number of fine-tuning jobs to retrieve.", + "description": "Filter by the enabled status.", "schema": { - "type": "integer", - "format": "int32", - "default": 20 + "type": "boolean" }, "explode": false }, { - "name": "api-version", - "in": "query", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The API version to use for this operation.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" - }, - "explode": false + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } } ], "responses": { @@ -13988,41 +12892,71 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ListPaginatedFineTuningJobsResponse" + "$ref": "#/components/schemas/PagedScheduleRun" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Fine-Tuning" + "Schedules" ] } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}": { + "/schedules/{schedule_id}/runs/{run_id}": { "get": { - "operationId": "retrieveFineTuningJob", - "description": "Get info about a fine-tuning job.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", + "operationId": "Schedules_getRun", + "description": "Get a schedule run by id.", "parameters": [ { - "name": "fine_tuning_job_id", + "name": "schedule_id", "in": "path", "required": true, - "description": "The ID of the fine-tuning job.", + "description": "The unique identifier of the schedule.", + "schema": { + "type": "string" + } + }, + { + "name": "run_id", + "in": "path", + "required": true, + "description": "The unique identifier of the schedule run.", "schema": { "type": "string" } }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } + }, { "name": "api-version", "in": "query", @@ -14040,7 +12974,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/ScheduleRun" } } } @@ -14057,22 +12991,25 @@ } }, "tags": [ - "Fine-Tuning" + "Schedules" ] } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel": { + "/skills": { "post": { - "operationId": "cancelFineTuningJob", - "description": "Immediately cancel a fine-tune job.", + "operationId": "Skills_createSkill", + "description": "Creates a skill.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The ID of the fine-tuning job to cancel.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "Skills=V1Preview" + ] } }, { @@ -14092,7 +13029,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/SkillObject" } } } @@ -14109,46 +13046,109 @@ } }, "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints": { + "Skills" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 63, + "description": "The unique name of the skill." + }, + "description": { + "type": "string", + "maxLength": 1024, + "description": "A human-readable description of the skill." + }, + "instructions": { + "type": "string", + "maxLength": 102400, + "description": "Instructions that define the behavior of the skill." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of key-value pairs associated with the skill." + } + }, + "required": [ + "name" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + }, "get": { - "operationId": "listFineTuningJobCheckpoints", - "description": "List checkpoints for a fine-tuning job.", + "operationId": "Skills_listSkills", + "description": "Returns the list of all skills.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to get checkpoints for.", + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false }, { "name": "after", "in": "query", "required": false, - "description": "Identifier for the last checkpoint ID from the previous pagination request.", + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { "type": "string" }, "explode": false }, { - "name": "limit", + "name": "before", "in": "query", "required": false, - "description": "Number of checkpoints to retrieve.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { - "type": "integer", - "format": "int32", - "default": 10 + "type": "string" }, "explode": false }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, { "name": "api-version", "in": "query", @@ -14166,62 +13166,246 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ListFineTuningJobCheckpointsResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ] + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SkillObject" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events": { + "/skills/{skill_name}": { "get": { - "operationId": "listFineTuningJobEvents", - "description": "Get fine-grained status updates for a fine-tuning job.", + "operationId": "Skills_getSkill", + "description": "Retrieves a skill.", "parameters": [ { - "name": "fine_tuning_job_id", + "name": "skill_name", "in": "path", "required": true, - "description": "The ID of the fine-tuning job to get events for.", + "description": "The unique name of the skill.", "schema": { "type": "string" } }, { - "name": "after", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", "in": "query", - "required": false, - "description": "Identifier for the last event from the previous pagination request.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + }, + "post": { + "operationId": "Skills_updateSkill", + "description": "Updates an existing skill.", + "parameters": [ + { + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", + "schema": { + "type": "string" + } }, { - "name": "limit", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", "in": "query", - "required": false, - "description": "Number of events to retrieve.", + "required": true, + "description": "The API version to use for this operation.", "schema": { - "type": "integer", - "format": "int32", - "default": 20 + "type": "string" }, "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 1024, + "description": "A human-readable description of the skill." + }, + "instructions": { + "type": "string", + "maxLength": 102400, + "description": "Instructions that define the behavior of the skill." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of key-value pairs associated with the skill." + } + } + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + }, + "delete": { + "operationId": "Skills_deleteSkill", + "description": "Deletes a skill.", + "parameters": [ + { + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } }, { "name": "api-version", @@ -14240,7 +13424,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ListFineTuningJobEventsResponse" + "$ref": "#/components/schemas/DeleteSkillResponse" } } } @@ -14257,24 +13441,41 @@ } }, "tags": [ - "Fine-Tuning" - ] + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause": { - "post": { - "operationId": "pauseFineTuningJob", - "description": "Pause a running fine-tune job.", + "/skills/{skill_name}:download": { + "get": { + "operationId": "Skills_downloadSkill", + "description": "Downloads a skill package.", "parameters": [ { - "name": "fine_tuning_job_id", + "name": "skill_name", "in": "path", "required": true, - "description": "The ID of the fine-tuning job to pause.", + "description": "The unique name of the skill.", "schema": { "type": "string" } }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, { "name": "api-version", "in": "query", @@ -14288,11 +13489,12 @@ ], "responses": { "200": { - "description": "The request has succeeded.", + "description": "The response body for downloading a skill package.", "content": { - "application/json": { + "application/gzip": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "type": "string", + "format": "binary" } } } @@ -14309,22 +13511,30 @@ } }, "tags": [ - "Fine-Tuning" - ] + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume": { + "/skills:import": { "post": { - "operationId": "resumeFineTuningJob", - "description": "Resume a paused fine-tune job.", + "operationId": "Skills_createSkillFromPackage", + "description": "Creates a skill from a GZip package.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The ID of the fine-tuning job to resume.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "Skills=V1Preview" + ] } }, { @@ -14344,7 +13554,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/SkillObject" } } } @@ -14361,27 +13571,62 @@ } }, "tags": [ - "Fine-Tuning" - ] + "Skills" + ], + "requestBody": { + "required": true, + "content": { + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" + } + } + }, + "description": "The GZip package used to create the skill." + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } } }, - "/openai/v1/responses": { + "/toolsets": { "post": { - "operationId": "createResponse_createResponseStream", - "parameters": [], - "description": "Creates a model response. Creates a model response (streaming response).", + "operationId": "createToolset", + "description": "Create a toolset.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.Response" - } - }, - "text/event-stream": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" + "$ref": "#/components/schemas/ToolsetObject" } } } @@ -14398,515 +13643,1214 @@ } }, "tags": [ - "Responses" + "Toolsets" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "anyOf": [ - { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the toolset." + }, + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the toolset." + }, + "metadata": { "type": "object", - "properties": { - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "top_logprobs": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the toolset." + }, + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" + }, + "description": "The list of tools to include in the toolset." + } + }, + "required": [ + "name", + "tools" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + }, + "get": { + "operationId": "listToolsets", + "description": "List all toolsets.", + "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolsetObject" }, - "temperature": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "top_p": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "user": { - "type": "string", - "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", - "deprecated": true - }, - "safety_identifier": { - "type": "string", - "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." - }, - "prompt_cache_key": { - "type": "string", - "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." - }, - "service_tier": { - "$ref": "#/components/schemas/OpenAI.ServiceTier" - }, - "prompt_cache_retention": { - "type": "string", - "enum": [ - "in-memory", - "24h" - ], - "nullable": true - }, - "previous_response_id": { - "type": "string", - "nullable": true - }, - "model": { - "type": "string", - "description": "The model deployment to use for the creation of this response." - }, - "reasoning": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Reasoning" - } - ], - "nullable": true - }, - "background": { - "type": "boolean", - "nullable": true - }, - "max_output_tokens": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "max_tool_calls": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "text": { - "$ref": "#/components/schemas/OpenAI.ResponseTextParam" - }, - "tools": { - "$ref": "#/components/schemas/OpenAI.ToolsArray" - }, - "tool_choice": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" - }, - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" - } - ] - }, - "prompt": { - "$ref": "#/components/schemas/OpenAI.Prompt" - }, - "truncation": { - "type": "string", - "enum": [ - "auto", - "disabled" - ], - "nullable": true, - "default": "disabled" - }, - "input": { - "$ref": "#/components/schemas/OpenAI.InputParam" - }, - "include": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "nullable": true - }, - "parallel_tool_calls": { - "type": "boolean", - "nullable": true, - "default": true - }, - "store": { - "type": "boolean", - "nullable": true, - "default": true - }, - "instructions": { - "type": "string", - "nullable": true - }, - "stream": { - "type": "boolean", - "nullable": true - }, - "stream_options": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" - } - ], - "nullable": true - }, - "conversation": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ConversationParam" - } - ], - "nullable": true - }, - "context_management": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ContextManagementParam" - }, - "nullable": true, - "description": "Context management configuration for this request." - }, - "agent": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "(Deprecated) Use agent_reference instead.\nThe agent to use for generating the response." - }, - "agent_session_id": { - "type": "string", - "description": "Optional session identifier for sandbox affinity. Currently only relevant for hosted agents.\nWhen provided, the request is routed to the same sandbox. When omitted, auto-derived from\nconversation_id/prev_response_id or a new UUID is generated." - }, - "agent_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "The agent to use for generating the response." - }, - "structured_inputs": { - "type": "object", - "additionalProperties": {}, - "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." - } + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." } }, - { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "top_logprobs": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "temperature": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "top_p": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "user": { - "type": "string", - "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", - "deprecated": true - }, - "safety_identifier": { - "type": "string", - "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." - }, - "prompt_cache_key": { - "type": "string", - "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." - }, - "service_tier": { - "$ref": "#/components/schemas/OpenAI.ServiceTier" - }, - "prompt_cache_retention": { - "type": "string", - "enum": [ - "in-memory", - "24h" - ], - "nullable": true - }, - "previous_response_id": { - "type": "string", - "nullable": true - }, - "model": { - "type": "string", - "description": "The model deployment to use for the creation of this response." - }, - "reasoning": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Reasoning" - } - ], - "nullable": true - }, - "background": { - "type": "boolean", - "nullable": true - }, - "max_output_tokens": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "max_tool_calls": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "text": { - "$ref": "#/components/schemas/OpenAI.ResponseTextParam" - }, - "tools": { - "$ref": "#/components/schemas/OpenAI.ToolsArray" - }, - "tool_choice": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" - }, - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" - } - ] - }, - "prompt": { - "$ref": "#/components/schemas/OpenAI.Prompt" - }, - "truncation": { - "type": "string", - "enum": [ - "auto", - "disabled" - ], - "nullable": true, - "default": "disabled" - }, - "input": { - "$ref": "#/components/schemas/OpenAI.InputParam" - }, - "include": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "nullable": true - }, - "parallel_tool_calls": { - "type": "boolean", - "nullable": true, - "default": true - }, - "store": { - "type": "boolean", - "nullable": true, - "default": true - }, - "instructions": { - "type": "string", - "nullable": true - }, - "stream": { - "type": "boolean", - "nullable": true - }, - "stream_options": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" - } - ], - "nullable": true - }, - "conversation": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ConversationParam" - } - ], - "nullable": true - }, - "context_management": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ContextManagementParam" - }, - "nullable": true, - "description": "Context management configuration for this request." - }, - "agent": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "(Deprecated) Use agent_reference instead.\nThe agent to use for generating the response." - }, - "agent_session_id": { - "type": "string", - "description": "Optional session identifier for sandbox affinity. Currently only relevant for hosted agents.\nWhen provided, the request is routed to the same sandbox. When omitted, auto-derived from\nconversation_id/prev_response_id or a new UUID is generated." - }, - "agent_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "The agent to use for generating the response." - }, - "structured_inputs": { - "type": "object", - "additionalProperties": {}, - "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." - } - } - } - ] + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + } + }, + "/toolsets/{tool_set_name}": { + "post": { + "operationId": "updateToolset", + "description": "Update a toolset.", + "parameters": [ + { + "name": "tool_set_name", + "in": "path", + "required": true, + "description": "The name of the toolset to update.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToolsetObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } } } - } - } - }, - "get": { - "operationId": "listResponses", - "description": "Returns the list of all responses.", - "parameters": [ + } + }, + "tags": [ + "Toolsets" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the toolset." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the toolset." + }, + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" + }, + "description": "The list of tools to include in the toolset." + } + }, + "required": [ + "tools" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + }, + "get": { + "operationId": "getToolset", + "description": "Retrieve a toolset.", + "parameters": [ + { + "name": "tool_set_name", + "in": "path", + "required": true, + "description": "The name of the toolset to retrieve.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToolsetObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + }, + "delete": { + "operationId": "deleteToolset", + "description": "Delete a toolset.", + "parameters": [ + { + "name": "tool_set_name", + "in": "path", + "required": true, + "description": "The name of the toolset to delete.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteToolsetResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + } + }, + "/trainingJobs": { + "get": { + "operationId": "TrainingJobs_list", + "description": "List training jobs.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "jobType", + "in": "query", + "required": false, + "description": "Filter by job type (e.g. 'Command').", + "schema": { + "$ref": "#/components/schemas/JobType" + }, + "explode": false + }, + { + "name": "tag", + "in": "query", + "required": false, + "description": "Filter jobs by tag in the format 'key=value' (e.g., 'framework=pytorch').", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "listViewType", + "in": "query", + "required": false, + "description": "Specifies which view type to apply when listing jobs.", + "schema": { + "$ref": "#/components/schemas/ListViewType" + }, + "explode": false + }, + { + "name": "properties", + "in": "query", + "required": false, + "description": "Comma-separated user property names and optionally values. Example: prop1,prop2=value2.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJob" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + }, + "post": { + "operationId": "TrainingJobs_create", + "description": "Create and execute a model training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry job creation.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Job" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Job" + } + } + }, + "description": "The training job to create." + } + } + }, + "/trainingJobs/{jobName}/artifacts": { + "get": { + "operationId": "TrainingJobArtifacts_listArtifacts", + "description": "List artifacts for the current view of a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/artifacts:content": { + "get": { + "operationId": "TrainingJobArtifacts_downloadArtifact", + "description": "Download training job artifact content.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/artifacts:contentInfo": { + "get": { + "operationId": "TrainingJobArtifacts_getArtifactContentInfo", + "description": "Get download information for a training job artifact.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/artifacts:metadata": { + "get": { + "operationId": "TrainingJobArtifacts_getArtifactMetadata", + "description": "Get metadata for a training job artifact.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/metrics": { + "get": { + "operationId": "TrainingJobMetrics_listMetrics", + "description": "List metrics emitted by the current view of a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetric" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/metrics/{metricName}": { + "get": { + "operationId": "TrainingJobMetrics_getMetric", + "description": "Get the full history for a training job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricPoint" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/metrics/{metricName}:aggregates": { + "get": { + "operationId": "TrainingJobMetrics_getMetricAggregates", + "description": "Get aggregate values for a training job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false + "type": "string" + } }, { - "name": "order", + "name": "startTimeUtc", "in": "query", "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "description": "Start of the metric time range.", "schema": { - "$ref": "#/components/schemas/PageOrder" + "type": "string", + "format": "date-time" }, "explode": false }, { - "name": "after", + "name": "endTimeUtc", "in": "query", "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "description": "End of the metric time range.", "schema": { - "type": "string" + "type": "string", + "format": "date-time" }, "explode": false }, { - "name": "before", + "name": "minStep", "in": "query", "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "description": "Minimum metric step to include.", "schema": { - "type": "string" + "type": "integer", + "format": "int64" }, "explode": false }, { - "name": "agent_name", + "name": "maxStep", "in": "query", "required": false, - "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", + "description": "Maximum metric step to include.", "schema": { - "type": "string" + "type": "integer", + "format": "int64" }, "explode": false }, { - "name": "agent_id", + "name": "limit", "in": "query", "required": false, - "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", + "description": "Maximum number of metric points to return.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" }, "explode": false }, { - "name": "conversation_id", + "name": "api-version", "in": "query", - "required": false, - "description": "Filter by conversation ID. If provided, only responses associated with the specified conversation will be returned.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, @@ -14919,33 +14863,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Response" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/PagedJobMetricAggregate" } } } @@ -14962,121 +14880,118 @@ } }, "tags": [ - "Responses" + "TrainingJobs" ] } }, - "/openai/v1/responses/compact": { - "post": { - "operationId": "compactResponseConversation", - "description": "Produces a compaction of a responses conversation.", - "parameters": [], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CompactResource" - } - } + "/trainingJobs/{jobName}/metrics/{metricName}:sample": { + "get": { + "operationId": "TrainingJobMetrics_getMetricSample", + "description": "Get one sampled value or window for a training job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CompactResponseMethodPublicBody" - } + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" } - } - } - } - }, - "/openai/v1/responses/{response_id}": { - "get": { - "operationId": "getResponse_getResponseStream", - "parameters": [ + }, { - "name": "response_id", + "name": "metricName", "in": "path", "required": true, + "description": "The metric name.", "schema": { "type": "string" } }, { - "name": "include[]", + "name": "startTimeUtc", "in": "query", "required": false, + "description": "Start of the metric time range.", "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "default": [] - } + "type": "string", + "format": "date-time" + }, + "explode": false }, { - "name": "stream", + "name": "endTimeUtc", "in": "query", "required": false, + "description": "End of the metric time range.", "schema": { - "type": "boolean", - "default": false + "type": "string", + "format": "date-time" }, "explode": false }, { - "name": "starting_after", + "name": "minStep", "in": "query", "required": false, + "description": "Minimum metric step to include.", "schema": { "type": "integer", - "format": "int32" + "format": "int64" }, "explode": false }, { - "name": "accept", - "in": "header", + "name": "maxStep", + "in": "query", "required": false, + "description": "Maximum metric step to include.", "schema": { - "type": "string", - "enum": [ - "text/event-stream" - ] - } + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], - "description": "Retrieves a model response with the given ID. Retrieves a model response with the given ID (streaming response).", "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.Response" - } - }, - "text/event-stream": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -15093,21 +15008,109 @@ } }, "tags": [ - "Responses" + "TrainingJobs" ] - }, - "delete": { - "operationId": "deleteResponse", - "description": "Deletes a model response.", + } + }, + "/trainingJobs/{jobName}/metrics/{metricName}:samples": { + "get": { + "operationId": "TrainingJobMetrics_getMetricSamples", + "description": "Get sampled values for a training job metric.", "parameters": [ { - "name": "response_id", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", "in": "path", "required": true, - "description": "The ID of the response to delete.", + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", "schema": { "type": "string" } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -15116,7 +15119,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteResponseResult" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -15133,23 +15136,45 @@ } }, "tags": [ - "Responses" + "TrainingJobs" ] } }, - "/openai/v1/responses/{response_id}/cancel": { - "post": { - "operationId": "cancelResponse", - "description": "Cancels a model response.", + "/trainingJobs/{jobName}/metrics:lastValues": { + "get": { + "operationId": "TrainingJobMetrics_getMetricLastValues", + "description": "Get the latest values for metrics emitted by the current view of a training job.", "parameters": [ { - "name": "response_id", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", "in": "path", "required": true, - "description": "The ID of the response to cancel.", + "description": "The training job name.", "schema": { "type": "string" } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -15158,7 +15183,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.Response" + "$ref": "#/components/schemas/PagedJobMetricLastValue" } } } @@ -15175,19 +15200,32 @@ } }, "tags": [ - "Responses" + "TrainingJobs" ] } }, - "/openai/v1/responses/{response_id}/input_items": { + "/trainingJobs/{jobName}/outputs": { "get": { - "operationId": "listInputItems", - "description": "Returns a list of input items for a given response.", + "operationId": "TrainingJobOutputs_listOutputs", + "description": "List outputs produced by a training job.", "parameters": [ { - "name": "response_id", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", "in": "path", "required": true, + "description": "The training job name.", "schema": { "type": "string" } @@ -15196,39 +15234,28 @@ "name": "limit", "in": "query", "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "description": "Maximum number of items to return.", "schema": { "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" + "format": "int32" }, "explode": false }, { - "name": "after", + "name": "skipToken", "in": "query", "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "description": "Continuation token returned by a previous list request.", "schema": { "type": "string" }, "explode": false }, { - "name": "before", + "name": "api-version", "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, @@ -15241,33 +15268,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ItemResource" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/PagedJobOutputReference" } } } @@ -15284,18 +15285,15 @@ } }, "tags": [ - "Responses" + "TrainingJobs" ] } }, - "/redTeams/runs": { + "/trainingJobs/{jobName}/outputs/{outputName}": { "get": { - "operationId": "RedTeams_list", - "description": "List a redteam by name.", + "operationId": "TrainingJobOutputs_getOutput", + "description": "Get one output produced by a training job.", "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, { "name": "Foundry-Features", "in": "header", @@ -15304,9 +15302,37 @@ "schema": { "type": "string", "enum": [ - "RedTeams=V1Preview" + "Jobs=V1Preview" ] } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "outputName", + "in": "path", + "required": true, + "description": "The output name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -15315,64 +15341,83 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedRedTeam" + "$ref": "#/components/schemas/JobOutputReference" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Redteams" + "TrainingJobs" ] } }, - "/redTeams/runs/{name}": { + "/trainingJobs/{jobName}/runs": { "get": { - "operationId": "RedTeams_get", - "description": "Get a redteam by name.", + "operationId": "TrainingJobRuns_listRuns", + "description": "List runs for a training job.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false }, { - "name": "name", - "in": "path", - "required": true, - "description": "Identifier of the red team run.", + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "Foundry-Features", - "in": "header", + "name": "api-version", + "in": "query", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The API version to use for this operation.", "schema": { - "type": "string", - "enum": [ - "RedTeams=V1Preview" - ] - } + "type": "string" + }, + "explode": false } ], "responses": { @@ -15381,40 +15426,31 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RedTeam" + "$ref": "#/components/schemas/PagedJobRun" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Redteams" + "TrainingJobs" ] } }, - "/redTeams/runs:run": { - "post": { - "operationId": "RedTeams_create", - "description": "Creates a redteam run.", + "/trainingJobs/{jobName}/runs/{runId}": { + "get": { + "operationId": "TrainingJobRuns_getRun", + "description": "Get one run for a training job.", "parameters": [ { "name": "Foundry-Features", @@ -15424,10 +15460,28 @@ "schema": { "type": "string", "enum": [ - "RedTeams=V1Preview" + "Jobs=V1Preview" ] } }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -15440,12 +15494,12 @@ } ], "responses": { - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", + "200": { + "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RedTeam" + "$ref": "#/components/schemas/JobRun" } } } @@ -15462,60 +15516,85 @@ } }, "tags": [ - "Redteams" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RedTeam" - } - } - }, - "description": "Redteam to be run" - } + "TrainingJobs" + ] } }, - "/schedules": { + "/trainingJobs/{jobName}/runs/{runId}/artifacts": { "get": { - "operationId": "Schedules_list", - "description": "List all schedules.", + "operationId": "TrainingJobRunArtifacts_listRunArtifacts", + "description": "List artifacts for a specific training job run.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } }, { - "name": "type", + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", "in": "query", "required": false, - "description": "Filter by the type of schedule.", + "description": "Maximum number of items to return.", "schema": { - "$ref": "#/components/schemas/ScheduleTaskType" + "type": "integer", + "format": "int32" }, "explode": false }, { - "name": "enabled", + "name": "skipToken", "in": "query", "required": false, - "description": "Filter by the enabled status.", + "description": "Continuation token returned by a previous list request.", "schema": { - "type": "boolean" + "type": "string" }, "explode": false }, { - "name": "Foundry-Features", - "in": "header", + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The API version to use for this operation.", "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } + "type": "string" + }, + "explode": false } ], "responses": { @@ -15524,121 +15603,165 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedSchedule" + "$ref": "#/components/schemas/PagedJobArtifact" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" + "TrainingJobs" ] } }, - "/schedules/{id}": { - "delete": { - "operationId": "Schedules_delete", - "description": "Delete a schedule.", + "/trainingJobs/{jobName}/runs/{runId}/artifacts:content": { + "get": { + "operationId": "TrainingJobRunArtifacts_downloadRunArtifact", + "description": "Download artifact content from a specific training job run.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } }, { - "name": "id", + "name": "jobName", "in": "path", "required": true, - "description": "Identifier of the schedule.", + "description": "The training job name.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", + "name": "runId", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The run identifier.", "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] + "type": "string" } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { - "204": { - "description": "There is no content to send for this request, but the headers may be useful." - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", + "200": { + "description": "The request has succeeded.", + "content": { + "application/octet-stream": { "schema": { - "type": "string" + "type": "string", + "format": "binary" } } - }, + } + }, + "default": { + "description": "An unexpected error response.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" + "TrainingJobs" ] - }, + } + }, + "/trainingJobs/{jobName}/runs/{runId}/artifacts:contentInfo": { "get": { - "operationId": "Schedules_get", - "description": "Get a schedule by id.", + "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfo", + "description": "Get download information for an artifact from a specific training job run.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } }, { - "name": "id", + "name": "jobName", "in": "path", "required": true, - "description": "Identifier of the schedule.", + "description": "The training job name.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", + "name": "runId", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The run identifier.", "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] + "type": "string" } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -15647,62 +15770,81 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Schedule" + "$ref": "#/components/schemas/JobArtifactContentInfo" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" + "TrainingJobs" ] - }, - "put": { - "operationId": "Schedules_createOrUpdate", - "description": "Create or update operation template.", + } + }, + "/trainingJobs/{jobName}/runs/{runId}/artifacts:metadata": { + "get": { + "operationId": "TrainingJobRunArtifacts_getRunArtifactMetadata", + "description": "Get metadata for an artifact from a specific training job run.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } }, { - "name": "id", + "name": "jobName", "in": "path", "required": true, - "description": "Identifier of the schedule.", + "description": "The training job name.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", + "name": "runId", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The run identifier.", "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] + "type": "string" } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -15711,105 +15853,92 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - } - }, - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" + "$ref": "#/components/schemas/JobArtifact" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - }, - "description": "The resource instance." - } + "TrainingJobs" + ] } }, - "/schedules/{id}/runs": { + "/trainingJobs/{jobName}/runs/{runId}/metrics": { "get": { - "operationId": "Schedules_listRuns", - "description": "List all schedule runs.", + "operationId": "TrainingJobRunMetrics_listRunMetrics", + "description": "List metrics emitted by a specific training job run.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } }, { - "name": "id", + "name": "jobName", "in": "path", "required": true, - "description": "Identifier of the schedule.", + "description": "The training job name.", "schema": { "type": "string" } }, { - "name": "type", + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", "in": "query", "required": false, - "description": "Filter by the type of schedule.", + "description": "Maximum number of items to return.", "schema": { - "$ref": "#/components/schemas/ScheduleTaskType" + "type": "integer", + "format": "int32" }, "explode": false }, { - "name": "enabled", + "name": "skipToken", "in": "query", "required": false, - "description": "Filter by the enabled status.", + "description": "Continuation token returned by a previous list request.", "schema": { - "type": "boolean" + "type": "string" }, "explode": false }, { - "name": "Foundry-Features", - "in": "header", + "name": "api-version", + "in": "query", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The API version to use for this operation.", "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } + "type": "string" + }, + "explode": false } ], "responses": { @@ -15818,70 +15947,125 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedScheduleRun" + "$ref": "#/components/schemas/PagedJobMetric" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" + "TrainingJobs" ] } }, - "/schedules/{schedule_id}/runs/{run_id}": { + "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}": { "get": { - "operationId": "Schedules_getRun", - "description": "Get a schedule run by id.", + "operationId": "TrainingJobRunMetrics_getRunMetric", + "description": "Get the full history for a metric from a specific training job run.", "parameters": [ { - "name": "schedule_id", - "in": "path", - "required": true, - "description": "The unique identifier of the schedule.", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int64" + }, + "explode": false }, { - "name": "run_id", - "in": "path", - "required": true, - "description": "The unique identifier of the schedule run.", + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int64" + }, + "explode": false }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } + "type": "integer", + "format": "int32" + }, + "explode": false }, { "name": "api-version", @@ -15900,7 +16084,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ScheduleRun" + "$ref": "#/components/schemas/PagedJobMetricPoint" } } } @@ -15917,14 +16101,14 @@ } }, "tags": [ - "Schedules" + "TrainingJobs" ] } }, - "/skills": { - "post": { - "operationId": "Skills_createSkill", - "description": "Creates a skill.", + "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:aggregates": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetricAggregates", + "description": "Get aggregate metric values from a specific training job run.", "parameters": [ { "name": "Foundry-Features", @@ -15934,146 +16118,91 @@ "schema": { "type": "string", "enum": [ - "Skills=V1Preview" + "Jobs=V1Preview" ] } }, { - "name": "api-version", - "in": "query", + "name": "jobName", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The training job name.", "schema": { "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillObject" - } - } } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" } - } - }, - "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 63, - "description": "The unique name of the skill." - }, - "description": { - "type": "string", - "maxLength": 1024, - "description": "A human-readable description of the skill." - }, - "instructions": { - "type": "string", - "maxLength": 102400, - "description": "Instructions that define the behavior of the skill." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of key-value pairs associated with the skill." - } - }, - "required": [ - "name" - ] - } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - }, - "get": { - "operationId": "Skills_listSkills", - "description": "Returns the list of all skills.", - "parameters": [ + }, { - "name": "limit", + "name": "startTimeUtc", "in": "query", "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "description": "Start of the metric time range.", "schema": { - "type": "integer", - "format": "int32", - "default": 20 + "type": "string", + "format": "date-time" }, "explode": false }, { - "name": "order", + "name": "endTimeUtc", "in": "query", "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "description": "End of the metric time range.", "schema": { - "$ref": "#/components/schemas/PageOrder" + "type": "string", + "format": "date-time" }, "explode": false }, { - "name": "after", + "name": "minStep", "in": "query", "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "description": "Minimum metric step to include.", "schema": { - "type": "string" + "type": "integer", + "format": "int64" }, "explode": false }, { - "name": "before", + "name": "maxStep", "in": "query", "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "description": "Maximum metric step to include.", "schema": { - "type": "string" + "type": "integer", + "format": "int64" }, "explode": false }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } + "type": "integer", + "format": "int32" + }, + "explode": false }, { "name": "api-version", @@ -16092,33 +16221,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SkillObject" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/PagedJobMetricAggregate" } } } @@ -16135,29 +16238,15 @@ } }, "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } + "TrainingJobs" + ] } }, - "/skills/{skill_name}": { + "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:sample": { "get": { - "operationId": "Skills_getSkill", - "description": "Retrieves a skill.", + "operationId": "TrainingJobRunMetrics_getRunMetricSample", + "description": "Get one sampled value or window from a specific training job run.", "parameters": [ - { - "name": "skill_name", - "in": "path", - "required": true, - "description": "The unique name of the skill.", - "schema": { - "type": "string" - } - }, { "name": "Foundry-Features", "in": "header", @@ -16166,77 +16255,92 @@ "schema": { "type": "string", "enum": [ - "Skills=V1Preview" + "Jobs=V1Preview" ] } }, { - "name": "api-version", - "in": "query", + "name": "jobName", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The training job name.", "schema": { "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillObject" - } - } } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - }, - "post": { - "operationId": "Skills_updateSkill", - "description": "Updates an existing skill.", - "parameters": [ { - "name": "skill_name", + "name": "runId", "in": "path", "required": true, - "description": "The unique name of the skill.", + "description": "The run identifier.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", + "name": "metricName", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The metric name.", "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] + "type": "string" } }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -16254,7 +16358,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillObject" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -16271,56 +16375,15 @@ } }, "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 1024, - "description": "A human-readable description of the skill." - }, - "instructions": { - "type": "string", - "maxLength": 102400, - "description": "Instructions that define the behavior of the skill." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of key-value pairs associated with the skill." - } - } - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - }, - "delete": { - "operationId": "Skills_deleteSkill", - "description": "Deletes a skill.", + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:samples": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetricSamples", + "description": "Get sampled metric values from a specific training job run.", "parameters": [ - { - "name": "skill_name", - "in": "path", - "required": true, - "description": "The unique name of the skill.", - "schema": { - "type": "string" - } - }, { "name": "Foundry-Features", "in": "header", @@ -16329,78 +16392,91 @@ "schema": { "type": "string", "enum": [ - "Skills=V1Preview" + "Jobs=V1Preview" ] } }, { - "name": "api-version", - "in": "query", + "name": "jobName", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The training job name.", "schema": { "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteSkillResponse" - } - } } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" } - } - }, - "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - } - }, - "/skills/{skill_name}:download": { - "get": { - "operationId": "Skills_downloadSkill", - "description": "Downloads a skill package.", - "parameters": [ + }, { - "name": "skill_name", + "name": "metricName", "in": "path", "required": true, - "description": "The unique name of the skill.", + "description": "The metric name.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } + "type": "integer", + "format": "int32" + }, + "explode": false }, { "name": "api-version", @@ -16415,12 +16491,11 @@ ], "responses": { "200": { - "description": "The response body for downloading a skill package.", + "description": "The request has succeeded.", "content": { - "application/gzip": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -16437,19 +16512,14 @@ } }, "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } + "TrainingJobs" + ] } }, - "/skills:import": { - "post": { - "operationId": "Skills_createSkillFromPackage", - "description": "Creates a skill from a GZip package.", + "/trainingJobs/{jobName}/runs/{runId}/metrics:lastValues": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetricLastValues", + "description": "Get latest metric values for a specific training job run.", "parameters": [ { "name": "Foundry-Features", @@ -16459,10 +16529,28 @@ "schema": { "type": "string", "enum": [ - "Skills=V1Preview" + "Jobs=V1Preview" ] } }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -16480,7 +16568,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillObject" + "$ref": "#/components/schemas/PagedJobMetricLastValue" } } } @@ -16497,31 +16585,14 @@ } }, "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/gzip": { - "schema": { - "type": "string", - "format": "binary" - } - } - }, - "description": "The GZip package used to create the skill." - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } + "TrainingJobs" + ] } }, - "/toolsets": { - "post": { - "operationId": "createToolset", - "description": "Create a toolset.", + "/trainingJobs/{jobName}/runs/{runId}/outputs": { + "get": { + "operationId": "TrainingJobRunOutputs_listRunOutputs", + "description": "List outputs produced by a specific training job run.", "parameters": [ { "name": "Foundry-Features", @@ -16531,10 +16602,49 @@ "schema": { "type": "string", "enum": [ - "Toolsets=V1Preview" + "Jobs=V1Preview" ] } }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -16552,7 +16662,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolsetObject" + "$ref": "#/components/schemas/PagedJobOutputReference" } } } @@ -16569,110 +16679,52 @@ } }, "tags": [ - "Toolsets" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the toolset." - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the toolset." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the toolset." - }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" - }, - "description": "The list of tools to include in the toolset." - } - }, - "required": [ - "name", - "tools" - ] - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - }, + "TrainingJobs" + ] + } + }, + "/trainingJobs/{jobName}/runs/{runId}/outputs/{outputName}": { "get": { - "operationId": "listToolsets", - "description": "List all toolsets.", + "operationId": "TrainingJobRunOutputs_getRunOutput", + "description": "Get one output produced by a specific training job run.", "parameters": [ { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } }, { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "Foundry-Features", - "in": "header", + "name": "outputName", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The output name.", "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] + "type": "string" } }, { @@ -16692,33 +16744,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ToolsetObject" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/JobOutputReference" } } } @@ -16735,25 +16761,23 @@ } }, "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } + "TrainingJobs" + ] } }, - "/toolsets/{tool_set_name}": { - "post": { - "operationId": "updateToolset", - "description": "Update a toolset.", + "/trainingJobs/{name}": { + "get": { + "operationId": "TrainingJobs_get", + "description": "Get a training job by name.", "parameters": [ { - "name": "tool_set_name", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", "in": "path", "required": true, - "description": "The name of the toolset to update.", + "description": "The name of the training job. This is case-sensitive.", "schema": { "type": "string" } @@ -16766,19 +16790,9 @@ "schema": { "type": "string", "enum": [ - "Toolsets=V1Preview" + "Jobs=V1Preview" ] } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { @@ -16787,74 +16801,47 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolsetObject" + "$ref": "#/components/schemas/Job" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Toolsets" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the toolset." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the toolset." - }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" - }, - "description": "The list of tools to include in the toolset." - } - }, - "required": [ - "tools" - ] - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } + "TrainingJobs" + ] }, - "get": { - "operationId": "getToolset", - "description": "Retrieve a toolset.", + "delete": { + "operationId": "TrainingJobs_beginDelete", + "description": "Delete a training job by name. Returns 202 Accepted with a Location header to poll for completion, or 204 if the job does not exist.", "parameters": [ { - "name": "tool_set_name", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", "in": "path", "required": true, - "description": "The name of the toolset to retrieve.", + "description": "The name of the training job. This is case-sensitive.", "schema": { "type": "string" } @@ -16867,61 +16854,73 @@ "schema": { "type": "string", "enum": [ - "Toolsets=V1Preview" + "Jobs=V1Preview" ] } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { + "202": { + "description": "Response returned when a job delete operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the status of the delete operation.", "schema": { - "$ref": "#/components/schemas/ToolsetObject" + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" } } } }, + "204": { + "description": "There is no content to send for this request, but the headers may be useful." + }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - }, - "delete": { - "operationId": "deleteToolset", - "description": "Delete a toolset.", + "TrainingJobs" + ] + } + }, + "/trainingJobs/{name}:cancel": { + "post": { + "operationId": "TrainingJobs_beginCancel", + "description": "Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with a Location header to poll for completion.", "parameters": [ { - "name": "tool_set_name", + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", "in": "path", "required": true, - "description": "The name of the toolset to delete.", + "description": "The name of the training job. This is case-sensitive.", "schema": { "type": "string" } @@ -16934,51 +16933,58 @@ "schema": { "type": "string", "enum": [ - "Toolsets=V1Preview" + "Jobs=V1Preview" ] } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { + "description": "The request has succeeded." + }, + "202": { + "description": "Response returned when a job cancel operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the status of the cancel operation.", "schema": { - "$ref": "#/components/schemas/DeleteToolsetResponse" + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } + "TrainingJobs" + ] } } }, @@ -18471,27 +18477,6 @@ ], "description": "Agentic identity credential definition" }, - "AllNodes": { - "type": "object", - "required": [ - "nodesValueType" - ], - "properties": { - "nodesValueType": { - "type": "string", - "enum": [ - "All" - ], - "description": "Type of the Nodes value." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/NodeCollection" - } - ], - "description": "All nodes means the service will be running on all of the nodes of the job." - }, "ApiErrorResponse": { "type": "object", "required": [ @@ -20791,14 +20776,6 @@ ], "description": "Command Job limit." }, - "services": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/JobService" - }, - "description": "List of job services.", - "readOnly": true - }, "queueSettings": { "allOf": [ { @@ -20811,10 +20788,6 @@ "type": "string", "description": "user-assigned managed identity" }, - "isArchived": { - "type": "boolean", - "description": "Is the asset archived?" - }, "status": { "type": "string", "description": "Status of the job.", @@ -25062,7 +25035,7 @@ "properties": { "name": { "type": "string", - "description": "The name of the Job. This is case-sensitive.", + "description": "The name of the training job. This is case-sensitive.", "readOnly": true }, "id": { @@ -25093,7 +25066,7 @@ "readOnly": true } }, - "description": "Job resource." + "description": "Training job resource." }, "JobArtifact": { "type": "object", @@ -25132,16 +25105,6 @@ "format": "date-time", "description": "Time the artifact was last updated.", "readOnly": true - }, - "origin": { - "type": "string", - "description": "Service origin of the artifact.", - "readOnly": true - }, - "container": { - "type": "string", - "description": "Diagnostic storage container identifier resolved by the service.", - "readOnly": true } }, "description": "Metadata for an artifact produced by or attached to a job." @@ -25192,154 +25155,6 @@ ], "description": "Type of a job artifact." }, - "JobAttempt": { - "type": "object", - "required": [ - "id", - "jobName" - ], - "properties": { - "id": { - "type": "string", - "description": "The attempt identifier.", - "readOnly": true - }, - "jobName": { - "type": "string", - "description": "The job name this attempt belongs to.", - "readOnly": true - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/JobAttemptStatus" - } - ], - "description": "The attempt status.", - "readOnly": true - }, - "statusReason": { - "type": "string", - "description": "Additional status reason.", - "readOnly": true - }, - "startTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Time the attempt started.", - "readOnly": true - }, - "endTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Time the attempt ended.", - "readOnly": true - }, - "lastStartTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Most recent time the attempt started running.", - "readOnly": true - }, - "computeDuration": { - "type": "string", - "format": "duration", - "description": "Total compute duration consumed by the attempt.", - "readOnly": true - }, - "queueingInfo": { - "type": "object", - "additionalProperties": {}, - "description": "Queueing details associated with the attempt.", - "readOnly": true - }, - "computeDetails": { - "type": "object", - "additionalProperties": {}, - "description": "Compute details associated with the attempt.", - "readOnly": true - }, - "error": { - "allOf": [ - { - "$ref": "#/components/schemas/JobAttemptError" - } - ], - "description": "Terminal error for the attempt, if any.", - "readOnly": true - }, - "warnings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobAttemptWarning" - }, - "description": "Warnings emitted for the attempt.", - "readOnly": true - }, - "isCurrent": { - "type": "boolean", - "description": "Whether this attempt is the current attempt for the job.", - "readOnly": true - } - }, - "description": "One execution attempt of a job." - }, - "JobAttemptError": { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "Machine-readable error code." - }, - "message": { - "type": "string", - "description": "Human-readable error message." - }, - "details": { - "type": "object", - "additionalProperties": {}, - "description": "Additional error details." - } - }, - "description": "Error emitted during a job attempt." - }, - "JobAttemptStatus": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "Queued", - "Running", - "Completed", - "Failed", - "Canceled" - ] - } - ], - "description": "Status of a job execution attempt." - }, - "JobAttemptWarning": { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "Machine-readable warning code." - }, - "message": { - "type": "string", - "description": "Human-readable warning message." - }, - "details": { - "type": "object", - "additionalProperties": {}, - "description": "Additional warning details." - } - }, - "description": "Warning emitted during a job attempt." - }, "JobMetric": { "type": "object", "required": [ @@ -25369,7 +25184,7 @@ "readOnly": true } }, - "description": "Metadata for a metric emitted by a job or attempt." + "description": "Metadata for a metric emitted by a job or run." }, "JobMetricAggregate": { "type": "object", @@ -25598,49 +25413,153 @@ }, "description": "Compute Resource configuration for the job." }, - "JobService": { + "JobRun": { "type": "object", + "required": [ + "id", + "jobName" + ], "properties": { - "jobServiceType": { + "id": { "type": "string", - "description": "Endpoint type." + "description": "The run identifier.", + "readOnly": true }, - "port": { - "type": "integer", - "format": "int32", - "description": "Port for endpoint." + "jobName": { + "type": "string", + "description": "The job name this run belongs to.", + "readOnly": true }, - "endpoint": { + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/JobRunStatus" + } + ], + "description": "The run status.", + "readOnly": true + }, + "statusReason": { "type": "string", - "description": "Url for endpoint." + "description": "Additional status reason.", + "readOnly": true }, - "properties": { + "startTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the run started.", + "readOnly": true + }, + "endTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the run ended.", + "readOnly": true + }, + "lastStartTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Most recent time the run started running.", + "readOnly": true + }, + "computeDuration": { + "type": "string", + "format": "duration", + "description": "Total compute duration consumed by the run.", + "readOnly": true + }, + "queueingInfo": { "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional properties to set on the endpoint." + "additionalProperties": {}, + "description": "Queueing details associated with the run.", + "readOnly": true + }, + "computeDetails": { + "type": "object", + "additionalProperties": {}, + "description": "Compute details associated with the run.", + "readOnly": true }, - "nodes": { + "error": { "allOf": [ { - "$ref": "#/components/schemas/AllNodes" + "$ref": "#/components/schemas/JobRunError" } ], - "description": "Nodes that user would like to start the service on. If Nodes is not set or set to null, the service will only be started on leader node." + "description": "Terminal error for the run, if any.", + "readOnly": true }, - "status": { - "type": "string", - "description": "Status of endpoint.", + "warnings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobRunWarning" + }, + "description": "Warnings emitted for the run.", "readOnly": true }, - "errorMessage": { - "type": "string", - "description": "Any error in the service.", + "isCurrent": { + "type": "boolean", + "description": "Whether this run is the current run for the job.", "readOnly": true } }, - "description": "Job endpoint definition." + "description": "One execution run of a training job." + }, + "JobRunError": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable error code." + }, + "message": { + "type": "string", + "description": "Human-readable error message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional error details." + } + }, + "description": "Error emitted during a job run." + }, + "JobRunStatus": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Queued", + "Running", + "Completed", + "Failed", + "Canceled" + ] + } + ], + "description": "Status of a job execution run." + }, + "JobRunWarning": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable warning code." + }, + "message": { + "type": "string", + "description": "Human-readable warning message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional warning details." + } + }, + "description": "Warning emitted during a job run." }, "JobType": { "anyOf": [ @@ -26782,23 +26701,6 @@ ], "description": "Credentials that do not require authentication" }, - "NodeCollection": { - "type": "object", - "required": [ - "nodesValueType" - ], - "properties": { - "nodesValueType": { - "type": "string", - "description": "Type of the Nodes value." - } - }, - "discriminator": { - "propertyName": "nodesValueType", - "mapping": {} - }, - "description": "Nodes that user would like to start the service on." - }, "OAuthConsentRequestOutputItem": { "type": "object", "required": [ @@ -42058,7 +41960,7 @@ }, "agent_session_id": { "type": "string", - "description": "The session identifier for this response. Currently only relevant for hosted agents.\nAlways returned for hosted agents — either the caller-provided value, the auto-derived value,\nor an auto-generated UUID. Use for session-scoped operations and to maintain sandbox\naffinity in follow-up calls." + "description": "The session identifier for this response. Currently only relevant for hosted agents.\nAlways returned for hosted agents ΓÇö either the caller-provided value, the auto-derived value,\nor an auto-generated UUID. Use for session-scoped operations and to maintain sandbox\naffinity in follow-up calls." }, "agent_reference": { "type": "object", @@ -46918,27 +46820,6 @@ }, "description": "Paged collection of JobArtifact items" }, - "PagedJobAttempt": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobAttempt" - }, - "description": "The JobAttempt items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobAttempt items" - }, "PagedJobMetric": { "type": "object", "required": [ @@ -47044,6 +46925,27 @@ }, "description": "Paged collection of JobOutputReference items" }, + "PagedJobRun": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobRun" + }, + "description": "The JobRun items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobRun items" + }, "PagedManagedAgentIdentityBlueprint": { "type": "object", "required": [ diff --git a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp index e4914301df09..22e80f6a7193 100644 --- a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp +++ b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp @@ -76,89 +76,99 @@ interface Toolsets {} @@clientLocation(Azure.AI.Projects.Toolsets.listToolsets, Toolsets); @@clientLocation(Azure.AI.Projects.Toolsets.deleteToolset, Toolsets); -interface Jobs {} -interface JobAttempts {} -interface JobArtifacts {} -interface JobAttemptArtifacts {} -interface JobMetrics {} -interface JobAttemptMetrics {} -interface JobOutputs {} -interface JobAttemptOutputs {} -interface Models {} +namespace Model { + interface TrainingJobs {} +} -@@clientLocation(Azure.AI.Projects.Jobs.createTrainingJob, Models); -@@clientLocation(Azure.AI.Projects.Jobs.list, Jobs); -@@clientLocation(Azure.AI.Projects.Jobs.get, Jobs); -@@clientLocation(Azure.AI.Projects.Jobs.beginDelete, Jobs); -@@clientLocation(Azure.AI.Projects.Jobs.beginCancel, Jobs); +@@clientLocation(Azure.AI.Projects.TrainingJobs.create, Model.TrainingJobs); +@@clientLocation(Azure.AI.Projects.TrainingJobs.list, Model.TrainingJobs); +@@clientLocation(Azure.AI.Projects.TrainingJobs.get, Model.TrainingJobs); +@@clientLocation(Azure.AI.Projects.TrainingJobs.beginDelete, + Model.TrainingJobs +); +@@clientLocation(Azure.AI.Projects.TrainingJobs.beginCancel, + Model.TrainingJobs +); -@@clientLocation(Azure.AI.Projects.JobAttempts.listJobAttempts, JobAttempts); -@@clientLocation(Azure.AI.Projects.JobAttempts.getJobAttempt, JobAttempts); +@@clientLocation(Azure.AI.Projects.TrainingJobRuns.listRuns, + Model.TrainingJobs +); +@@clientLocation(Azure.AI.Projects.TrainingJobRuns.getRun, Model.TrainingJobs); -@@clientLocation(Azure.AI.Projects.JobArtifacts.listJobArtifacts, JobArtifacts); -@@clientLocation(Azure.AI.Projects.JobArtifacts.getJobArtifactMetadata, - JobArtifacts +@@clientLocation(Azure.AI.Projects.TrainingJobArtifacts.listArtifacts, + Model.TrainingJobs +); +@@clientLocation(Azure.AI.Projects.TrainingJobArtifacts.getArtifactMetadata, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobArtifacts.getJobArtifactContentInfo, - JobArtifacts +@@clientLocation(Azure.AI.Projects.TrainingJobArtifacts.getArtifactContentInfo, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobArtifacts.downloadJobArtifact, - JobArtifacts +@@clientLocation(Azure.AI.Projects.TrainingJobArtifacts.downloadArtifact, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobAttemptArtifacts.listJobAttemptArtifacts, - JobAttemptArtifacts +@@clientLocation(Azure.AI.Projects.TrainingJobRunArtifacts.listRunArtifacts, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobAttemptArtifacts.getJobAttemptArtifactMetadata, - JobAttemptArtifacts +@@clientLocation(Azure.AI.Projects.TrainingJobRunArtifacts.getRunArtifactMetadata, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobAttemptArtifacts.getJobAttemptArtifactContentInfo, - JobAttemptArtifacts +@@clientLocation(Azure.AI.Projects.TrainingJobRunArtifacts.getRunArtifactContentInfo, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobAttemptArtifacts.downloadJobAttemptArtifact, - JobAttemptArtifacts +@@clientLocation(Azure.AI.Projects.TrainingJobRunArtifacts.downloadRunArtifact, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobMetrics.listJobMetrics, JobMetrics); -@@clientLocation(Azure.AI.Projects.JobMetrics.getJobMetricLastValues, - JobMetrics +@@clientLocation(Azure.AI.Projects.TrainingJobMetrics.listMetrics, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobMetrics.getJobMetric, JobMetrics); -@@clientLocation(Azure.AI.Projects.JobMetrics.getJobMetricAggregates, - JobMetrics +@@clientLocation(Azure.AI.Projects.TrainingJobMetrics.getMetricLastValues, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobMetrics.getJobMetricSamples, - JobMetrics +@@clientLocation(Azure.AI.Projects.TrainingJobMetrics.getMetric, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobMetrics.getJobMetricSample, - JobMetrics +@@clientLocation(Azure.AI.Projects.TrainingJobMetrics.getMetricAggregates, + Model.TrainingJobs +); +@@clientLocation(Azure.AI.Projects.TrainingJobMetrics.getMetricSamples, + Model.TrainingJobs +); +@@clientLocation(Azure.AI.Projects.TrainingJobMetrics.getMetricSample, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobAttemptMetrics.listJobAttemptMetrics, - JobAttemptMetrics +@@clientLocation(Azure.AI.Projects.TrainingJobRunMetrics.listRunMetrics, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobAttemptMetrics.getJobAttemptMetricLastValues, - JobAttemptMetrics +@@clientLocation(Azure.AI.Projects.TrainingJobRunMetrics.getRunMetricLastValues, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobAttemptMetrics.getJobAttemptMetric, - JobAttemptMetrics +@@clientLocation(Azure.AI.Projects.TrainingJobRunMetrics.getRunMetric, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobAttemptMetrics.getJobAttemptMetricAggregates, - JobAttemptMetrics +@@clientLocation(Azure.AI.Projects.TrainingJobRunMetrics.getRunMetricAggregates, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobAttemptMetrics.getJobAttemptMetricSamples, - JobAttemptMetrics +@@clientLocation(Azure.AI.Projects.TrainingJobRunMetrics.getRunMetricSamples, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobAttemptMetrics.getJobAttemptMetricSample, - JobAttemptMetrics +@@clientLocation(Azure.AI.Projects.TrainingJobRunMetrics.getRunMetricSample, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobOutputs.listJobOutputs, JobOutputs); -@@clientLocation(Azure.AI.Projects.JobOutputs.getJobOutput, JobOutputs); +@@clientLocation(Azure.AI.Projects.TrainingJobOutputs.listOutputs, + Model.TrainingJobs +); +@@clientLocation(Azure.AI.Projects.TrainingJobOutputs.getOutput, + Model.TrainingJobs +); -@@clientLocation(Azure.AI.Projects.JobAttemptOutputs.listJobAttemptOutputs, - JobAttemptOutputs +@@clientLocation(Azure.AI.Projects.TrainingJobRunOutputs.listRunOutputs, + Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.JobAttemptOutputs.getJobAttemptOutput, - JobAttemptOutputs +@@clientLocation(Azure.AI.Projects.TrainingJobRunOutputs.getRunOutput, + Model.TrainingJobs ); diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp index 7696e37f1061..f477c3592a7a 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp @@ -287,28 +287,21 @@ model CommandJob extends JobProperties { @doc("Command Job limit.") limits?: CommandJobLimits; - @doc("List of job services.") - @visibility(Lifecycle.Read) - services?: Record; - @doc("Queue settings for the job.") queueSettings?: QueueSettings; @doc("user-assigned managed identity") userAssignedIdentityId?: string; - @doc("Is the asset archived?") - isArchived?: boolean; - @doc("Status of the job.") @visibility(Lifecycle.Read) status?: string; } -@doc("Job resource.") -@Rest.resource("jobs") +@doc("Training job resource.") +@Rest.resource("trainingJobs") model Job { - @doc("The name of the Job. This is case-sensitive.") + @doc("The name of the training job. This is case-sensitive.") @key("name") @visibility(Lifecycle.Read) name: string; @@ -369,28 +362,28 @@ union ListViewType { All: "All", } -@doc("Status of a job execution attempt.") -union JobAttemptStatus { +@doc("Status of a job execution run.") +union JobRunStatus { string, - @doc("The attempt is queued.") + @doc("The run is queued.") Queued: "Queued", - @doc("The attempt is running.") + @doc("The run is running.") Running: "Running", - @doc("The attempt completed successfully.") + @doc("The run completed successfully.") Completed: "Completed", - @doc("The attempt failed.") + @doc("The run failed.") Failed: "Failed", - @doc("The attempt was canceled.") + @doc("The run was canceled.") Canceled: "Canceled", } -@doc("Warning emitted during a job attempt.") -model JobAttemptWarning { +@doc("Warning emitted during a job run.") +model JobRunWarning { @doc("Machine-readable warning code.") code?: string; @@ -401,8 +394,8 @@ model JobAttemptWarning { details?: Record; } -@doc("Error emitted during a job attempt.") -model JobAttemptError { +@doc("Error emitted during a job run.") +model JobRunError { @doc("Machine-readable error code.") code?: string; @@ -413,57 +406,57 @@ model JobAttemptError { details?: Record; } -@doc("One execution attempt of a job.") -model JobAttempt { - @doc("The attempt identifier.") +@doc("One execution run of a training job.") +model JobRun { + @doc("The run identifier.") @visibility(Lifecycle.Read) id: string; - @doc("The job name this attempt belongs to.") + @doc("The job name this run belongs to.") @visibility(Lifecycle.Read) jobName: string; - @doc("The attempt status.") + @doc("The run status.") @visibility(Lifecycle.Read) - status?: JobAttemptStatus; + status?: JobRunStatus; @doc("Additional status reason.") @visibility(Lifecycle.Read) statusReason?: string; - @doc("Time the attempt started.") + @doc("Time the run started.") @visibility(Lifecycle.Read) startTimeUtc?: utcDateTime; - @doc("Time the attempt ended.") + @doc("Time the run ended.") @visibility(Lifecycle.Read) endTimeUtc?: utcDateTime; - @doc("Most recent time the attempt started running.") + @doc("Most recent time the run started running.") @visibility(Lifecycle.Read) lastStartTimeUtc?: utcDateTime; - @doc("Total compute duration consumed by the attempt.") + @doc("Total compute duration consumed by the run.") @visibility(Lifecycle.Read) computeDuration?: duration; - @doc("Queueing details associated with the attempt.") + @doc("Queueing details associated with the run.") @visibility(Lifecycle.Read) queueingInfo?: Record; - @doc("Compute details associated with the attempt.") + @doc("Compute details associated with the run.") @visibility(Lifecycle.Read) computeDetails?: Record; - @doc("Terminal error for the attempt, if any.") + @doc("Terminal error for the run, if any.") @visibility(Lifecycle.Read) - error?: JobAttemptError; + error?: JobRunError; - @doc("Warnings emitted for the attempt.") + @doc("Warnings emitted for the run.") @visibility(Lifecycle.Read) - warnings?: JobAttemptWarning[]; + warnings?: JobRunWarning[]; - @doc("Whether this attempt is the current attempt for the job.") + @doc("Whether this run is the current run for the job.") @visibility(Lifecycle.Read) isCurrent?: boolean; } @@ -500,14 +493,6 @@ model JobArtifact { @doc("Time the artifact was last updated.") @visibility(Lifecycle.Read) updatedTimeUtc?: utcDateTime; - - @doc("Service origin of the artifact.") - @visibility(Lifecycle.Read) - origin?: string; - - @doc("Diagnostic storage container identifier resolved by the service.") - @visibility(Lifecycle.Read) - container?: string; } @doc("Content access information for a job artifact.") @@ -543,7 +528,7 @@ union JobMetricType { Image: "Image", } -@doc("Metadata for a metric emitted by a job or attempt.") +@doc("Metadata for a metric emitted by a job or run.") model JobMetric { @doc("Metric name.") @visibility(Lifecycle.Read) @@ -655,30 +640,39 @@ model JobOutputReference { alias JobChildListQueryParameters = { @doc("Maximum number of items to return.") - @query limit?: int32; + @query + limit?: int32; @doc("Continuation token returned by a previous list request.") - @query @continuationToken skipToken?: string; + @query + @continuationToken + skipToken?: string; }; alias JobArtifactListQueryParameters = JobChildListQueryParameters & { @doc("Artifact path prefix to list.") - @query pathPrefix?: string; + @query + pathPrefix?: string; }; alias JobMetricQueryParameters = { @doc("Start of the metric time range.") - @query startTimeUtc?: utcDateTime; + @query + startTimeUtc?: utcDateTime; @doc("End of the metric time range.") - @query endTimeUtc?: utcDateTime; + @query + endTimeUtc?: utcDateTime; @doc("Minimum metric step to include.") - @query minStep?: int64; + @query + minStep?: int64; @doc("Maximum metric step to include.") - @query maxStep?: int64; + @query + maxStep?: int64; @doc("Maximum number of metric points to return.") - @query limit?: int32; + @query + limit?: int32; }; diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp index d66b9f1175dc..f00ec204614f 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp @@ -29,10 +29,10 @@ alias JobsFilterQueryParams = { alias JobOperations = FoundryAzureOperations<{}>; -@tag("Jobs") -interface Jobs { +@tag("TrainingJobs") +interface TrainingJobs { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "We need explicit definition for header support" - @doc("List Jobs.") + @doc("List training jobs.") @Rest.listsResource(Job) list is Azure.Core.Foundations.ResourceList< Job, @@ -41,7 +41,7 @@ interface Jobs { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "We need explicit definition for header support" - @doc("Get a Job by name.") + @doc("Get a training job by name.") @get get is Azure.Core.Foundations.ResourceOperation< Job, @@ -52,17 +52,17 @@ interface Jobs { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Jobs use Operation-Id based idempotent submission." - @doc("Create and execute a model training Job.") + @doc("Create and execute a model training job.") @post - @route("/jobs") - createTrainingJob is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs") + create is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("Idempotency key used to safely retry job creation.") @header("Operation-Id") operationId?: string; - @doc("The job to create.") + @doc("The training job to create.") @bodyRoot job: Job; }, @@ -71,7 +71,7 @@ interface Jobs { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "LRO delete returns 202 with Location header for polling, or 204 when job not found" #suppress "@azure-tools/typespec-azure-core/no-response-body" "Delete LRO returns 202 with Location header, 204 with no body" - @doc("Delete a Job by name. Returns 202 Accepted with a Location header to poll for completion, or 204 if the job does not exist.") + @doc("Delete a training job by name. Returns 202 Accepted with a Location header to poll for completion, or 204 if the job does not exist.") @delete beginDelete is Azure.Core.Foundations.ResourceOperation< Job, @@ -83,7 +83,7 @@ interface Jobs { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "LRO cancel returns 200 synchronously or 202 with Location header for async polling" #suppress "@azure-tools/typespec-azure-core/no-response-body" "Cancel LRO returns 200 or 202 with Location header, no body" - @doc("Cancel a Job by name. Returns 200 if cancelled immediately, or 202 Accepted with a Location header to poll for completion.") + @doc("Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with a Location header to poll for completion.") @post @Rest.action("cancel") @actionSeparator(":") @@ -94,53 +94,57 @@ interface Jobs { }, Http.OkResponse | JobCancelAcceptedResponse >; -} // interface Jobs +} // interface TrainingJobs -@tag("Jobs") -interface JobAttempts { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job attempts are projected from job execution history." - @doc("List execution attempts for a job.") +@tag("TrainingJobs") +interface TrainingJobRuns { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job runs are projected from job execution history." + @doc("List runs for a training job.") @get - @route("/jobs/{jobName}/attempts") - listJobAttempts is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/runs") + listRuns is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; ...JobChildListQueryParameters; }, - Azure.Core.Page + Azure.Core.Page >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job attempts are projected from job execution history." - @doc("Get one execution attempt for a job.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job runs are projected from job execution history." + @doc("Get one run for a training job.") @get - @route("/jobs/{jobName}/attempts/{attemptId}") - getJobAttempt is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/runs/{runId}") + getRun is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; - @doc("The attempt identifier.") - @path attemptId: string; + @doc("The run identifier.") + @path + runId: string; }, - JobAttempt + JobRun >; } -@tag("Jobs") -interface JobArtifacts { +@tag("TrainingJobs") +interface TrainingJobArtifacts { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." - @doc("List artifacts for the current view of a job.") + @doc("List artifacts for the current view of a training job.") @get - @route("/jobs/{jobName}/artifacts") - listJobArtifacts is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/artifacts") + listArtifacts is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; ...JobArtifactListQueryParameters; }, @@ -148,145 +152,163 @@ interface JobArtifacts { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." - @doc("Get metadata for a job artifact.") + @doc("Get metadata for a training job artifact.") @get - @route("/jobs/{jobName}/artifacts/{artifactPath}:metadata") - getJobArtifactMetadata is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/artifacts:metadata") + getArtifactMetadata is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; @doc("The artifact path.") - @path artifactPath: string; + @query + path: string; }, JobArtifact >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." - @doc("Get download information for a job artifact.") + @doc("Get download information for a training job artifact.") @get - @route("/jobs/{jobName}/artifacts/{artifactPath}:contentInfo") - getJobArtifactContentInfo is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/artifacts:contentInfo") + getArtifactContentInfo is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; @doc("The artifact path.") - @path artifactPath: string; + @query + path: string; }, JobArtifactContentInfo >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." #suppress "@azure-tools/typespec-azure-core/byos" "Job artifact content is produced by the job and streamed back to the caller." - @doc("Download job artifact content.") + @doc("Download training job artifact content.") @get - @route("/jobs/{jobName}/artifacts/{artifactPath}:content") - downloadJobArtifact is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/artifacts:content") + downloadArtifact is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; @doc("The artifact path.") - @path artifactPath: string; + @query + path: string; }, bytes >; } -@tag("Jobs") -interface JobAttemptArtifacts { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." - @doc("List artifacts for a specific job attempt.") +@tag("TrainingJobs") +interface TrainingJobRunArtifacts { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run artifacts are projected from the run data container." + @doc("List artifacts for a specific training job run.") @get - @route("/jobs/{jobName}/attempts/{attemptId}/artifacts") - listJobAttemptArtifacts is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/runs/{runId}/artifacts") + listRunArtifacts is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; - @doc("The attempt identifier.") - @path attemptId: string; + @doc("The run identifier.") + @path + runId: string; ...JobArtifactListQueryParameters; }, Azure.Core.Page >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." - @doc("Get metadata for an artifact from a specific job attempt.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run artifacts are projected from the run data container." + @doc("Get metadata for an artifact from a specific training job run.") @get - @route("/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:metadata") - getJobAttemptArtifactMetadata is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/runs/{runId}/artifacts:metadata") + getRunArtifactMetadata is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; - @doc("The attempt identifier.") - @path attemptId: string; + @doc("The run identifier.") + @path + runId: string; @doc("The artifact path.") - @path artifactPath: string; + @query + path: string; }, JobArtifact >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." - @doc("Get download information for an artifact from a specific job attempt.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run artifacts are projected from the run data container." + @doc("Get download information for an artifact from a specific training job run.") @get - @route("/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:contentInfo") - getJobAttemptArtifactContentInfo is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/runs/{runId}/artifacts:contentInfo") + getRunArtifactContentInfo is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; - @doc("The attempt identifier.") - @path attemptId: string; + @doc("The run identifier.") + @path + runId: string; @doc("The artifact path.") - @path artifactPath: string; + @query + path: string; }, JobArtifactContentInfo >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run artifacts are projected from the run data container." #suppress "@azure-tools/typespec-azure-core/byos" "Job artifact content is produced by the job and streamed back to the caller." - @doc("Download artifact content from a specific job attempt.") + @doc("Download artifact content from a specific training job run.") @get - @route("/jobs/{jobName}/attempts/{attemptId}/artifacts/{artifactPath}:content") - downloadJobAttemptArtifact is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/runs/{runId}/artifacts:content") + downloadRunArtifact is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; - @doc("The attempt identifier.") - @path attemptId: string; + @doc("The run identifier.") + @path + runId: string; @doc("The artifact path.") - @path artifactPath: string; + @query + path: string; }, bytes >; } -@tag("Jobs") -interface JobMetrics { +@tag("TrainingJobs") +interface TrainingJobMetrics { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("List metrics emitted by the current view of a job.") + @doc("List metrics emitted by the current view of a training job.") @get - @route("/jobs/{jobName}/metrics") - listJobMetrics is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/metrics") + listMetrics is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; ...JobChildListQueryParameters; }, @@ -294,30 +316,33 @@ interface JobMetrics { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("Get the latest values for metrics emitted by the current view of a job.") + @doc("Get the latest values for metrics emitted by the current view of a training job.") @get - @route("/jobs/{jobName}/metrics:lastValues") - getJobMetricLastValues is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/metrics:lastValues") + getMetricLastValues is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; }, Azure.Core.Page >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("Get the full history for a job metric.") + @doc("Get the full history for a training job metric.") @get - @route("/jobs/{jobName}/metrics/{metricName}") - getJobMetric is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/metrics/{metricName}") + getMetric is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; @doc("The metric name.") - @path metricName: string; + @path + metricName: string; ...JobMetricQueryParameters; }, @@ -325,17 +350,19 @@ interface JobMetrics { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("Get aggregate values for a job metric.") + @doc("Get aggregate values for a training job metric.") @get - @route("/jobs/{jobName}/metrics/{metricName}:aggregates") - getJobMetricAggregates is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/metrics/{metricName}:aggregates") + getMetricAggregates is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; @doc("The metric name.") - @path metricName: string; + @path + metricName: string; ...JobMetricQueryParameters; }, @@ -343,17 +370,19 @@ interface JobMetrics { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("Get sampled values for a job metric.") + @doc("Get sampled values for a training job metric.") @get - @route("/jobs/{jobName}/metrics/{metricName}:samples") - getJobMetricSamples is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/metrics/{metricName}:samples") + getMetricSamples is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; @doc("The metric name.") - @path metricName: string; + @path + metricName: string; ...JobMetricQueryParameters; }, @@ -361,17 +390,19 @@ interface JobMetrics { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("Get one sampled value or window for a job metric.") + @doc("Get one sampled value or window for a training job metric.") @get - @route("/jobs/{jobName}/metrics/{metricName}:sample") - getJobMetricSample is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/metrics/{metricName}:sample") + getMetricSample is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; @doc("The metric name.") - @path metricName: string; + @path + metricName: string; ...JobMetricQueryParameters; }, @@ -379,120 +410,136 @@ interface JobMetrics { >; } -@tag("Jobs") -interface JobAttemptMetrics { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." - @doc("List metrics emitted by a specific job attempt.") +@tag("TrainingJobs") +interface TrainingJobRunMetrics { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." + @doc("List metrics emitted by a specific training job run.") @get - @route("/jobs/{jobName}/attempts/{attemptId}/metrics") - listJobAttemptMetrics is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/runs/{runId}/metrics") + listRunMetrics is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; - @doc("The attempt identifier.") - @path attemptId: string; + @doc("The run identifier.") + @path + runId: string; ...JobChildListQueryParameters; }, Azure.Core.Page >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." - @doc("Get latest metric values for a specific job attempt.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." + @doc("Get latest metric values for a specific training job run.") @get - @route("/jobs/{jobName}/attempts/{attemptId}/metrics:lastValues") - getJobAttemptMetricLastValues is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/runs/{runId}/metrics:lastValues") + getRunMetricLastValues is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; - @doc("The attempt identifier.") - @path attemptId: string; + @doc("The run identifier.") + @path + runId: string; }, Azure.Core.Page >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." - @doc("Get the full history for a metric from a specific job attempt.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." + @doc("Get the full history for a metric from a specific training job run.") @get - @route("/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}") - getJobAttemptMetric is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}") + getRunMetric is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; - @doc("The attempt identifier.") - @path attemptId: string; + @doc("The run identifier.") + @path + runId: string; @doc("The metric name.") - @path metricName: string; + @path + metricName: string; ...JobMetricQueryParameters; }, Azure.Core.Page >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." - @doc("Get aggregate metric values from a specific job attempt.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." + @doc("Get aggregate metric values from a specific training job run.") @get - @route("/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates") - getJobAttemptMetricAggregates is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:aggregates") + getRunMetricAggregates is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; - @doc("The attempt identifier.") - @path attemptId: string; + @doc("The run identifier.") + @path + runId: string; @doc("The metric name.") - @path metricName: string; + @path + metricName: string; ...JobMetricQueryParameters; }, Azure.Core.Page >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." - @doc("Get sampled metric values from a specific job attempt.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." + @doc("Get sampled metric values from a specific training job run.") @get - @route("/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples") - getJobAttemptMetricSamples is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:samples") + getRunMetricSamples is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; - @doc("The attempt identifier.") - @path attemptId: string; + @doc("The run identifier.") + @path + runId: string; @doc("The metric name.") - @path metricName: string; + @path + metricName: string; ...JobMetricQueryParameters; }, JobMetricSample >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." - @doc("Get one sampled value or window from a specific job attempt.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." + @doc("Get one sampled value or window from a specific training job run.") @get - @route("/jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample") - getJobAttemptMetricSample is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:sample") + getRunMetricSample is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; - @doc("The attempt identifier.") - @path attemptId: string; + @doc("The run identifier.") + @path + runId: string; @doc("The metric name.") - @path metricName: string; + @path + metricName: string; ...JobMetricQueryParameters; }, @@ -500,17 +547,18 @@ interface JobAttemptMetrics { >; } -@tag("Jobs") -interface JobOutputs { +@tag("TrainingJobs") +interface TrainingJobOutputs { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job outputs are projected from job outputs and asset relationships." - @doc("List outputs produced by a job.") + @doc("List outputs produced by a training job.") @get - @route("/jobs/{jobName}/outputs") - listJobOutputs is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/outputs") + listOutputs is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; ...JobChildListQueryParameters; }, @@ -518,57 +566,64 @@ interface JobOutputs { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job outputs are projected from job outputs and asset relationships." - @doc("Get one output produced by a job.") + @doc("Get one output produced by a training job.") @get - @route("/jobs/{jobName}/outputs/{outputName}") - getJobOutput is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/outputs/{outputName}") + getOutput is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; @doc("The output name.") - @path outputName: string; + @path + outputName: string; }, JobOutputReference >; } -@tag("Jobs") -interface JobAttemptOutputs { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt outputs are projected from attempt output state and asset relationships." - @doc("List outputs produced by a specific job attempt.") +@tag("TrainingJobs") +interface TrainingJobRunOutputs { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run outputs are projected from run output state and asset relationships." + @doc("List outputs produced by a specific training job run.") @get - @route("/jobs/{jobName}/attempts/{attemptId}/outputs") - listJobAttemptOutputs is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/runs/{runId}/outputs") + listRunOutputs is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; - @doc("The attempt identifier.") - @path attemptId: string; + @doc("The run identifier.") + @path + runId: string; ...JobChildListQueryParameters; }, Azure.Core.Page >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt outputs are projected from attempt output state and asset relationships." - @doc("Get one output produced by a specific job attempt.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run outputs are projected from run output state and asset relationships." + @doc("Get one output produced by a specific training job run.") @get - @route("/jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}") - getJobAttemptOutput is FoundryDataPlaneRequiredPreviewOperation< + @route("/trainingJobs/{jobName}/runs/{runId}/outputs/{outputName}") + getRunOutput is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { - @doc("The job name.") - @path jobName: string; + @doc("The training job name.") + @path + jobName: string; - @doc("The attempt identifier.") - @path attemptId: string; + @doc("The run identifier.") + @path + runId: string; @doc("The output name.") - @path outputName: string; + @path + outputName: string; }, JobOutputReference >; From bf5259c75914819fd3c8cc0dc8098f53d496d452 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Mon, 4 May 2026 19:42:37 -0700 Subject: [PATCH 03/37] feat(foundry): model job run compute details Add a typed computeDetails schema for training job run attempts so SDKs expose resolved placement fields such as VM size, instance count, GPU count, region, and backend-specific properties. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot (github-copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../v1/microsoft-foundry-openapi3.json | 48 ++++++++++++++++++- .../microsoft-foundry-openapi3.json | 48 ++++++++++++++++++- .../data-plane/Foundry/src/jobs/models.tsp | 29 ++++++++++- 3 files changed, 120 insertions(+), 5 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 03b6b9c5d24d..be335b6b38e1 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -21051,8 +21051,11 @@ "readOnly": true }, "computeDetails": { - "type": "object", - "additionalProperties": {}, + "allOf": [ + { + "$ref": "#/components/schemas/JobRunComputeDetails" + } + ], "description": "Compute details associated with the run.", "readOnly": true }, @@ -21081,6 +21084,47 @@ }, "description": "One execution run of a training job." }, + "JobRunComputeDetails": { + "type": "object", + "properties": { + "vmSize": { + "type": "string", + "description": "Virtual machine size used for this run attempt.", + "readOnly": true + }, + "instanceType": { + "type": "string", + "description": "Instance type used for this run attempt.", + "readOnly": true + }, + "instanceCount": { + "type": "integer", + "format": "int32", + "description": "Number of instances allocated to this run attempt.", + "readOnly": true + }, + "gpuCount": { + "type": "integer", + "format": "int32", + "description": "Number of GPUs allocated to this run attempt.", + "readOnly": true + }, + "region": { + "type": "string", + "description": "Region where this run attempt was placed.", + "readOnly": true + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional backend-specific compute placement properties.", + "readOnly": true + } + }, + "description": "Compute placement details for a job run attempt." + }, "JobRunError": { "type": "object", "properties": { diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 216bdfea165d..40eeb1da0488 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -25475,8 +25475,11 @@ "readOnly": true }, "computeDetails": { - "type": "object", - "additionalProperties": {}, + "allOf": [ + { + "$ref": "#/components/schemas/JobRunComputeDetails" + } + ], "description": "Compute details associated with the run.", "readOnly": true }, @@ -25505,6 +25508,47 @@ }, "description": "One execution run of a training job." }, + "JobRunComputeDetails": { + "type": "object", + "properties": { + "vmSize": { + "type": "string", + "description": "Virtual machine size used for this run attempt.", + "readOnly": true + }, + "instanceType": { + "type": "string", + "description": "Instance type used for this run attempt.", + "readOnly": true + }, + "instanceCount": { + "type": "integer", + "format": "int32", + "description": "Number of instances allocated to this run attempt.", + "readOnly": true + }, + "gpuCount": { + "type": "integer", + "format": "int32", + "description": "Number of GPUs allocated to this run attempt.", + "readOnly": true + }, + "region": { + "type": "string", + "description": "Region where this run attempt was placed.", + "readOnly": true + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional backend-specific compute placement properties.", + "readOnly": true + } + }, + "description": "Compute placement details for a job run attempt." + }, "JobRunError": { "type": "object", "properties": { diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp index f477c3592a7a..91c80dbbcf57 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp @@ -406,6 +406,33 @@ model JobRunError { details?: Record; } +@doc("Compute placement details for a job run attempt.") +model JobRunComputeDetails { + @doc("Virtual machine size used for this run attempt.") + @visibility(Lifecycle.Read) + vmSize?: string; + + @doc("Instance type used for this run attempt.") + @visibility(Lifecycle.Read) + instanceType?: string; + + @doc("Number of instances allocated to this run attempt.") + @visibility(Lifecycle.Read) + instanceCount?: int32; + + @doc("Number of GPUs allocated to this run attempt.") + @visibility(Lifecycle.Read) + gpuCount?: int32; + + @doc("Region where this run attempt was placed.") + @visibility(Lifecycle.Read) + region?: string; + + @doc("Additional backend-specific compute placement properties.") + @visibility(Lifecycle.Read) + properties?: Record; +} + @doc("One execution run of a training job.") model JobRun { @doc("The run identifier.") @@ -446,7 +473,7 @@ model JobRun { @doc("Compute details associated with the run.") @visibility(Lifecycle.Read) - computeDetails?: Record; + computeDetails?: JobRunComputeDetails; @doc("Terminal error for the run, if any.") @visibility(Lifecycle.Read) From 9618895a6a4459225680086def1be831559ed161 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Mon, 4 May 2026 20:12:45 -0700 Subject: [PATCH 04/37] chore(foundry): update generated openapi output Commit the generated virtual-public-preview OpenAPI output as currently produced in the PR branch. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot (github-copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../virtual-public-preview/microsoft-foundry-openapi3.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 40eeb1da0488..245dee3e872a 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -49766,4 +49766,4 @@ } } ] -} +} \ No newline at end of file From ef45f0952cefd7ca64ce9ca01034910d21d55a09 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Mon, 4 May 2026 20:38:31 -0700 Subject: [PATCH 05/37] feat(foundry): model training job recipes Add the Foundry training job recipe payload to the TypeSpec and expose the data-plane operation polling routes used by MFE/APIM. Refresh the generated OpenAPI and create examples so SDKs see the declarative training shape. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot (github-copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../TrainingJobs_Create_MaximumSet_Gen.json | 165 +++-- .../TrainingJobs_Create_MinimumSet_Gen.json | 22 +- .../v1/microsoft-foundry-openapi3.json | 661 ++++++++++++++++- .../microsoft-foundry-openapi3.json | 663 +++++++++++++++++- .../data-plane/Foundry/src/jobs/models.tsp | 356 +++++++++- .../data-plane/Foundry/src/jobs/routes.tsp | 35 +- 6 files changed, 1828 insertions(+), 74 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json index d33f6035a429..ba4f6b04b9a8 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json @@ -6,25 +6,68 @@ "Operation-Id": "create-my-training-job-01", "Foundry-Features": "Jobs=V1Preview", "job": { - "name": "my_training_job_01", "properties": { "jobType": "Command", - "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", - "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", "displayName": "My Training Job", - "description": "A sample command job for training", + "description": "A sample declarative training job", "tags": { - "framework": "pytorch" + "framework": "trl", + "algorithm": "grpo" }, "properties": { "experimentName": "my-experiment" }, - "codeId": "azureai:my-training-code:1", - "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster", + "codeId": "azureai://accounts/my-account/projects/my-project/data/my-training-code/versions/1", + "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "training": { + "algorithm": "Grpo", + "framework": "Trl", + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1", + "eval": "azureai://accounts/my-account/projects/my-project/data/eval-dataset/versions/1", + "columns": { + "prompt": "prompt", + "chosen": "chosen", + "rejected": "rejected", + "reference": "reference", + "messages": "messages" + }, + "dataFormat": { + "chatTemplate": "Chatml" + } + }, + "reward": { + "inline_function": { + "def": "def score(samples, **kwargs):\n return [1.0 for _ in samples]", + "runtime": { + "pip": [ + "numpy>=1.26" + ] + } + } + }, + "lora": { + "rank": 16, + "alpha": 32, + "dropout": 0.05, + "targetModules": "auto", + "quantize": true + }, + "rollout": { + "engine": "Vllm", + "tensorParallelSize": 2, + "gpuMemoryUtilization": 0.9 + }, + "eval": { + "benchmark": "Gsm8k", + "everyNSteps": 100 + } + }, "inputs": { - "training_data": { + "extra_context": { "jobInputType": "uri_folder", - "uri": "azureai://datastores/mystore/paths/data/train", + "uri": "azureai://datastores/mystore/paths/data/context", "mode": "ReadOnlyMount" }, "learning_rate": { @@ -34,47 +77,33 @@ }, "outputs": { "model": { - "jobOutputType": "uri_folder", + "jobOutputType": "safetensors_model", "mode": "ReadWriteMount", "assetName": "my-trained-model", "assetVersion": "1", "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", - "baseModelId": "azureai:qwen-base-model:1", + "baseModelId": "azureai://registries/azureml/models/qwen-base/versions/1", "description": "Trained model output" } }, "environmentVariables": { "AZUREML_DATASET_FILE": "/mnt/data/train.csv" }, - "distribution": { - "distributionType": "PyTorch", - "processCountPerInstance": 4 - }, "resources": { "instanceCount": 2, "instanceType": "Standard_NC6s_v3", "shmSize": "2g", "dockerArgs": "--privileged" }, + "gpuCount": 4, "limits": { "jobLimitsType": "Command", "timeout": "PT2H30M" }, - "services": { - "Studio": { - "jobServiceType": "Studio", - "port": 8080, - "endpoint": "https://studio.example.com" - }, - "Tracking": { - "jobServiceType": "Tracking" - } - }, "queueSettings": { "jobTier": "Standard" }, - "userAssignedIdentityId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", - "isArchived": false + "userAssignedIdentityId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity" } } }, @@ -86,22 +115,66 @@ "type": "Microsoft.MachineLearningServices/workspaces/trainingJobs", "properties": { "jobType": "Command", - "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", - "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", "displayName": "My Training Job", - "description": "A sample command job for training", + "description": "A sample declarative training job", "tags": { - "framework": "pytorch" + "framework": "trl", + "algorithm": "grpo" }, "properties": { "experimentName": "my-experiment" }, - "codeId": "azureai:my-training-code:1", - "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster", + "codeId": "azureai://accounts/my-account/projects/my-project/data/my-training-code/versions/1", + "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "training": { + "algorithm": "Grpo", + "framework": "Trl", + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1", + "eval": "azureai://accounts/my-account/projects/my-project/data/eval-dataset/versions/1", + "columns": { + "prompt": "prompt", + "chosen": "chosen", + "rejected": "rejected", + "reference": "reference", + "messages": "messages" + }, + "dataFormat": { + "chatTemplate": "Chatml" + } + }, + "reward": { + "inline_function": { + "def": "def score(samples, **kwargs):\n return [1.0 for _ in samples]", + "runtime": { + "pip": [ + "numpy>=1.26" + ] + } + } + }, + "lora": { + "rank": 16, + "alpha": 32, + "dropout": 0.05, + "targetModules": "auto", + "quantize": true + }, + "rollout": { + "engine": "Vllm", + "tensorParallelSize": 2, + "gpuMemoryUtilization": 0.9 + }, + "eval": { + "benchmark": "Gsm8k", + "everyNSteps": 100 + } + }, "inputs": { - "training_data": { + "extra_context": { "jobInputType": "uri_folder", - "uri": "azureai://datastores/mystore/paths/data/train", + "uri": "azureai://datastores/mystore/paths/data/context", "mode": "ReadOnlyMount" }, "learning_rate": { @@ -111,48 +184,34 @@ }, "outputs": { "model": { - "jobOutputType": "uri_folder", + "jobOutputType": "safetensors_model", "mode": "ReadWriteMount", "assetName": "my-trained-model", "assetVersion": "1", "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", - "baseModelId": "azureai:qwen-base-model:1", + "baseModelId": "azureai://registries/azureml/models/qwen-base/versions/1", "description": "Trained model output" } }, "environmentVariables": { "AZUREML_DATASET_FILE": "/mnt/data/train.csv" }, - "distribution": { - "distributionType": "PyTorch", - "processCountPerInstance": 4 - }, "resources": { "instanceCount": 2, "instanceType": "Standard_NC6s_v3", "shmSize": "2g", "dockerArgs": "--privileged" }, + "gpuCount": 4, "limits": { "jobLimitsType": "Command", "timeout": "PT2H30M" }, - "services": { - "Studio": { - "jobServiceType": "Studio", - "port": 8080, - "endpoint": "https://studio.example.com" - }, - "Tracking": { - "jobServiceType": "Tracking" - } - }, "queueSettings": { "jobTier": "Standard" }, "userAssignedIdentityId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", - "status": "NotStarted", - "isArchived": false + "status": "NotStarted" }, "systemData": { "createdAt": "2020-01-01T12:34:56.999Z", diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json index 6b460ff85b5e..a2fc654f4e02 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json @@ -8,9 +8,14 @@ "job": { "properties": { "jobType": "Command", - "command": "python train.py", - "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", - "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster" + "training": { + "algorithm": "Sft", + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1" + } + }, + "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster" } } }, @@ -20,9 +25,14 @@ "name": "my_training_job_01", "properties": { "jobType": "Command", - "command": "python train.py", - "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", - "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster" + "training": { + "algorithm": "Sft", + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1" + } + }, + "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster" } } } diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index be335b6b38e1..784c4719938e 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -11507,6 +11507,146 @@ } } }, + "/trainingJobs/operations/{operationId}/result": { + "get": { + "operationId": "TrainingJobOperations_getOperationResult", + "description": "Poll the result of an asynchronous training job operation.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "operationId", + "in": "path", + "required": true, + "description": "The operation identifier returned by a training job create, cancel, or delete request.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOperationResource" + } + } + } + }, + "202": { + "description": "Response returned when a training job operation is still in progress.", + "headers": { + "Location": { + "required": false, + "description": "URL to poll for the operation result.", + "schema": { + "type": "string" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/trainingJobs/operations/{operationId}/status": { + "get": { + "operationId": "TrainingJobOperations_getOperationStatus", + "description": "Poll the status of an asynchronous training job operation.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "operationId", + "in": "path", + "required": true, + "description": "The operation identifier returned by a training job create, cancel, or delete request.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOperationResource" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, "/trainingJobs/{jobName}/artifacts": { "get": { "operationId": "TrainingJobArtifacts_listArtifacts", @@ -16854,6 +16994,24 @@ ] } }, + "ChatTemplate": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Chatml", + "llama-3", + "Zephyr", + "Gemma", + "phi-3" + ] + } + ], + "description": "Chat template used to format conversational training data." + }, "ClusterInsightResult": { "type": "object", "required": [ @@ -16952,8 +17110,6 @@ "type": "object", "required": [ "jobType", - "command", - "environmentImageReference", "computeId" ], "properties": { @@ -16966,11 +17122,19 @@ }, "command": { "type": "string", - "description": "The command to execute on startup of the job." + "description": "The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified." }, "environmentImageReference": { "type": "string", - "description": "ACR path of environment." + "description": "ACR path or Azure ML environment reference. Required when training is not specified." + }, + "training": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution." }, "displayName": { "type": "string", @@ -17031,6 +17195,11 @@ ], "description": "Compute Resource configuration for the job." }, + "gpuCount": { + "type": "integer", + "format": "int32", + "description": "Number of GPUs requested by the training job." + }, "distribution": { "allOf": [ { @@ -20885,6 +21054,104 @@ ], "description": "The kind of metric emitted by a job." }, + "JobOperationError": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable error code." + }, + "message": { + "type": "string", + "description": "Human-readable error message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional error information." + } + }, + "description": "Error details for an asynchronous training job operation." + }, + "JobOperationResource": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "id": { + "type": "string", + "description": "Operation resource ID.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Operation name.", + "readOnly": true + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/JobOperationStatus" + } + ], + "description": "Operation status.", + "readOnly": true + }, + "properties": { + "type": "object", + "additionalProperties": {}, + "description": "Operation result properties.", + "readOnly": true + }, + "startTime": { + "type": "string", + "format": "date-time", + "description": "Operation start time.", + "readOnly": true + }, + "endTime": { + "type": "string", + "format": "date-time", + "description": "Operation end time.", + "readOnly": true + }, + "percentComplete": { + "type": "number", + "format": "double", + "description": "Operation completion percentage from 0 to 100.", + "readOnly": true + }, + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/JobOperationError" + } + ], + "description": "Operation error information.", + "readOnly": true + } + }, + "description": "Asynchronous training job operation resource." + }, + "JobOperationStatus": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "InProgress", + "Deleting", + "Succeeded", + "Failed", + "Canceled" + ] + } + ], + "description": "Status of an asynchronous training job operation." + }, "JobOutputReference": { "type": "object", "required": [ @@ -44153,6 +44420,392 @@ ], "description": "Represents a data source for evaluation runs that operate over Agent traces stored in Application Insights." }, + "TrainingAlgorithm": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Sft", + "Dpo", + "Kto", + "Orpo", + "Cpo", + "SimPo", + "Grpo", + "Ppo", + "Rloo", + "ReinforcePp", + "RewardModel" + ] + } + ], + "description": "Training algorithm used by a declarative training job." + }, + "TrainingColumnMapping": { + "type": "object", + "properties": { + "prompt": { + "type": "string", + "description": "Column containing prompts." + }, + "chosen": { + "type": "string", + "description": "Column containing chosen responses for preference training." + }, + "rejected": { + "type": "string", + "description": "Column containing rejected responses for preference training." + }, + "reference": { + "type": "string", + "description": "Column containing reference answers or reward context." + }, + "messages": { + "type": "string", + "description": "Column containing chat messages." + } + }, + "description": "Mapping from logical training fields to columns in the dataset." + }, + "TrainingConfiguration": { + "type": "object", + "required": [ + "algorithm", + "model", + "dataset" + ], + "properties": { + "algorithm": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingAlgorithm" + } + ], + "description": "Training algorithm." + }, + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework. If omitted, the service selects a compatible framework." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "reward": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Reward signal configuration." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "description": "Declarative training recipe. When specified, command must be omitted and environmentImageReference is optional." + }, + "TrainingDataFormatConfiguration": { + "type": "object", + "properties": { + "chatTemplate": { + "allOf": [ + { + "$ref": "#/components/schemas/ChatTemplate" + } + ], + "description": "Built-in chat template to apply to the dataset." + }, + "chatTemplatePath": { + "type": "string", + "description": "Path to a custom chat template relative to the job's code directory." + } + }, + "description": "Formatting options for conversational training data." + }, + "TrainingDatasetConfiguration": { + "type": "object", + "required": [ + "train" + ], + "properties": { + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingColumnMapping" + } + ], + "description": "Mapping from training fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "description": "Dataset configuration for a declarative training job." + }, + "TrainingEntryPointReference": { + "type": "object", + "required": [ + "entryPoint" + ], + "properties": { + "entryPoint": { + "type": "string", + "description": "Path to the Python callable in module/file.py:function format." + } + }, + "description": "Reference to a Python callable relative to the job's code directory." + }, + "TrainingEvalBenchmark": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Gsm8k", + "Mmlu", + "Humaneval", + "Mbpp", + "Arc", + "Hellaswag" + ] + } + ], + "description": "Built-in evaluation benchmark." + }, + "TrainingEvalConfiguration": { + "type": "object", + "properties": { + "benchmark": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalBenchmark" + } + ], + "description": "Named built-in benchmark. Mutually exclusive with dataset." + }, + "dataset": { + "type": "string", + "description": "Custom evaluation dataset asset reference. Mutually exclusive with benchmark." + }, + "everyNSteps": { + "type": "integer", + "format": "int32", + "description": "Evaluation frequency in training steps. Omit for end-of-training only." + } + }, + "description": "Evaluation configuration for a declarative training job." + }, + "TrainingFramework": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Trl", + "Verl", + "OpenRlhf", + "NemoRl", + "Slime", + "TorchForge" + ] + } + ], + "description": "Training framework used to lower a declarative training job into an execution command." + }, + "TrainingInlineFunctionConfiguration": { + "type": "object", + "required": [ + "def" + ], + "properties": { + "def": { + "type": "string", + "description": "Python function definition." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingInlineFunctionRuntime" + } + ], + "description": "Runtime dependencies for the inline function." + } + }, + "description": "Inline Python function definition for custom training logic." + }, + "TrainingInlineFunctionRuntime": { + "type": "object", + "properties": { + "pip": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Pip packages to install before invoking the inline function." + } + }, + "description": "Python runtime dependencies for an inline function." + }, + "TrainingLoraConfiguration": { + "type": "object", + "required": [ + "rank" + ], + "properties": { + "rank": { + "type": "integer", + "format": "int32", + "description": "Low-rank dimension." + }, + "alpha": { + "type": "integer", + "format": "int32", + "description": "LoRA scaling factor." + }, + "dropout": { + "type": "number", + "format": "double", + "description": "Dropout applied to adapter inputs.", + "default": 0.05 + }, + "targetModules": { + "type": "string", + "description": "Linear layers that receive adapters. Use 'auto' to let the framework choose defaults.", + "default": "auto" + }, + "quantize": { + "type": "boolean", + "description": "Whether to enable QLoRA 4-bit base weight loading.", + "default": false + } + }, + "description": "LoRA adapter configuration for parameter-efficient fine tuning." + }, + "TrainingRewardConfiguration": { + "type": "object", + "properties": { + "model": { + "type": "string", + "description": "Reward model asset reference." + }, + "function": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEntryPointReference" + } + ], + "description": "Python callable used to compute reward scores." + }, + "inline_function": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingInlineFunctionConfiguration" + } + ], + "description": "Inline Python function used to compute reward scores." + } + }, + "description": "Reward signal configuration for reinforcement or reward model training." + }, + "TrainingRolloutConfiguration": { + "type": "object", + "required": [ + "engine" + ], + "properties": { + "engine": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutEngine" + } + ], + "description": "Rollout inference engine." + }, + "tensorParallelSize": { + "type": "integer", + "format": "int32", + "description": "Tensor parallel size used by the rollout engine.", + "default": 1 + }, + "gpuMemoryUtilization": { + "type": "number", + "format": "double", + "description": "GPU memory utilization target for the rollout engine, between 0.0 and 1.0." + } + }, + "description": "Rollout generation configuration for online reinforcement learning." + }, + "TrainingRolloutEngine": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Vllm", + "Sglang", + "Hf", + "MegatronInference" + ] + } + ], + "description": "Inference engine used for rollout generation during online reinforcement learning." + }, "TreatmentEffectType": { "anyOf": [ { diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 245dee3e872a..2da61d85f20a 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -14225,6 +14225,146 @@ } } }, + "/trainingJobs/operations/{operationId}/result": { + "get": { + "operationId": "TrainingJobOperations_getOperationResult", + "description": "Poll the result of an asynchronous training job operation.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "operationId", + "in": "path", + "required": true, + "description": "The operation identifier returned by a training job create, cancel, or delete request.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOperationResource" + } + } + } + }, + "202": { + "description": "Response returned when a training job operation is still in progress.", + "headers": { + "Location": { + "required": false, + "description": "URL to poll for the operation result.", + "schema": { + "type": "string" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/trainingJobs/operations/{operationId}/status": { + "get": { + "operationId": "TrainingJobOperations_getOperationStatus", + "description": "Poll the status of an asynchronous training job operation.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "operationId", + "in": "path", + "required": true, + "description": "The operation identifier returned by a training job create, cancel, or delete request.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOperationResource" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, "/trainingJobs/{jobName}/artifacts": { "get": { "operationId": "TrainingJobArtifacts_listArtifacts", @@ -20583,6 +20723,24 @@ ] } }, + "ChatTemplate": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Chatml", + "llama-3", + "Zephyr", + "Gemma", + "phi-3" + ] + } + ], + "description": "Chat template used to format conversational training data." + }, "ClusterInsightResult": { "type": "object", "required": [ @@ -20681,8 +20839,6 @@ "type": "object", "required": [ "jobType", - "command", - "environmentImageReference", "computeId" ], "properties": { @@ -20695,11 +20851,19 @@ }, "command": { "type": "string", - "description": "The command to execute on startup of the job." + "description": "The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified." }, "environmentImageReference": { "type": "string", - "description": "ACR path of environment." + "description": "ACR path or Azure ML environment reference. Required when training is not specified." + }, + "training": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution." }, "displayName": { "type": "string", @@ -20760,6 +20924,11 @@ ], "description": "Compute Resource configuration for the job." }, + "gpuCount": { + "type": "integer", + "format": "int32", + "description": "Number of GPUs requested by the training job." + }, "distribution": { "allOf": [ { @@ -25309,6 +25478,104 @@ ], "description": "The kind of metric emitted by a job." }, + "JobOperationError": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable error code." + }, + "message": { + "type": "string", + "description": "Human-readable error message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional error information." + } + }, + "description": "Error details for an asynchronous training job operation." + }, + "JobOperationResource": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "id": { + "type": "string", + "description": "Operation resource ID.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Operation name.", + "readOnly": true + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/JobOperationStatus" + } + ], + "description": "Operation status.", + "readOnly": true + }, + "properties": { + "type": "object", + "additionalProperties": {}, + "description": "Operation result properties.", + "readOnly": true + }, + "startTime": { + "type": "string", + "format": "date-time", + "description": "Operation start time.", + "readOnly": true + }, + "endTime": { + "type": "string", + "format": "date-time", + "description": "Operation end time.", + "readOnly": true + }, + "percentComplete": { + "type": "number", + "format": "double", + "description": "Operation completion percentage from 0 to 100.", + "readOnly": true + }, + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/JobOperationError" + } + ], + "description": "Operation error information.", + "readOnly": true + } + }, + "description": "Asynchronous training job operation resource." + }, + "JobOperationStatus": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "InProgress", + "Deleting", + "Succeeded", + "Failed", + "Canceled" + ] + } + ], + "description": "Status of an asynchronous training job operation." + }, "JobOutputReference": { "type": "object", "required": [ @@ -49142,6 +49409,392 @@ ], "description": "Represents a data source for evaluation runs that operate over Agent traces stored in Application Insights." }, + "TrainingAlgorithm": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Sft", + "Dpo", + "Kto", + "Orpo", + "Cpo", + "SimPo", + "Grpo", + "Ppo", + "Rloo", + "ReinforcePp", + "RewardModel" + ] + } + ], + "description": "Training algorithm used by a declarative training job." + }, + "TrainingColumnMapping": { + "type": "object", + "properties": { + "prompt": { + "type": "string", + "description": "Column containing prompts." + }, + "chosen": { + "type": "string", + "description": "Column containing chosen responses for preference training." + }, + "rejected": { + "type": "string", + "description": "Column containing rejected responses for preference training." + }, + "reference": { + "type": "string", + "description": "Column containing reference answers or reward context." + }, + "messages": { + "type": "string", + "description": "Column containing chat messages." + } + }, + "description": "Mapping from logical training fields to columns in the dataset." + }, + "TrainingConfiguration": { + "type": "object", + "required": [ + "algorithm", + "model", + "dataset" + ], + "properties": { + "algorithm": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingAlgorithm" + } + ], + "description": "Training algorithm." + }, + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework. If omitted, the service selects a compatible framework." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "reward": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Reward signal configuration." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "description": "Declarative training recipe. When specified, command must be omitted and environmentImageReference is optional." + }, + "TrainingDataFormatConfiguration": { + "type": "object", + "properties": { + "chatTemplate": { + "allOf": [ + { + "$ref": "#/components/schemas/ChatTemplate" + } + ], + "description": "Built-in chat template to apply to the dataset." + }, + "chatTemplatePath": { + "type": "string", + "description": "Path to a custom chat template relative to the job's code directory." + } + }, + "description": "Formatting options for conversational training data." + }, + "TrainingDatasetConfiguration": { + "type": "object", + "required": [ + "train" + ], + "properties": { + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingColumnMapping" + } + ], + "description": "Mapping from training fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "description": "Dataset configuration for a declarative training job." + }, + "TrainingEntryPointReference": { + "type": "object", + "required": [ + "entryPoint" + ], + "properties": { + "entryPoint": { + "type": "string", + "description": "Path to the Python callable in module/file.py:function format." + } + }, + "description": "Reference to a Python callable relative to the job's code directory." + }, + "TrainingEvalBenchmark": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Gsm8k", + "Mmlu", + "Humaneval", + "Mbpp", + "Arc", + "Hellaswag" + ] + } + ], + "description": "Built-in evaluation benchmark." + }, + "TrainingEvalConfiguration": { + "type": "object", + "properties": { + "benchmark": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalBenchmark" + } + ], + "description": "Named built-in benchmark. Mutually exclusive with dataset." + }, + "dataset": { + "type": "string", + "description": "Custom evaluation dataset asset reference. Mutually exclusive with benchmark." + }, + "everyNSteps": { + "type": "integer", + "format": "int32", + "description": "Evaluation frequency in training steps. Omit for end-of-training only." + } + }, + "description": "Evaluation configuration for a declarative training job." + }, + "TrainingFramework": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Trl", + "Verl", + "OpenRlhf", + "NemoRl", + "Slime", + "TorchForge" + ] + } + ], + "description": "Training framework used to lower a declarative training job into an execution command." + }, + "TrainingInlineFunctionConfiguration": { + "type": "object", + "required": [ + "def" + ], + "properties": { + "def": { + "type": "string", + "description": "Python function definition." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingInlineFunctionRuntime" + } + ], + "description": "Runtime dependencies for the inline function." + } + }, + "description": "Inline Python function definition for custom training logic." + }, + "TrainingInlineFunctionRuntime": { + "type": "object", + "properties": { + "pip": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Pip packages to install before invoking the inline function." + } + }, + "description": "Python runtime dependencies for an inline function." + }, + "TrainingLoraConfiguration": { + "type": "object", + "required": [ + "rank" + ], + "properties": { + "rank": { + "type": "integer", + "format": "int32", + "description": "Low-rank dimension." + }, + "alpha": { + "type": "integer", + "format": "int32", + "description": "LoRA scaling factor." + }, + "dropout": { + "type": "number", + "format": "double", + "description": "Dropout applied to adapter inputs.", + "default": 0.05 + }, + "targetModules": { + "type": "string", + "description": "Linear layers that receive adapters. Use 'auto' to let the framework choose defaults.", + "default": "auto" + }, + "quantize": { + "type": "boolean", + "description": "Whether to enable QLoRA 4-bit base weight loading.", + "default": false + } + }, + "description": "LoRA adapter configuration for parameter-efficient fine tuning." + }, + "TrainingRewardConfiguration": { + "type": "object", + "properties": { + "model": { + "type": "string", + "description": "Reward model asset reference." + }, + "function": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEntryPointReference" + } + ], + "description": "Python callable used to compute reward scores." + }, + "inline_function": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingInlineFunctionConfiguration" + } + ], + "description": "Inline Python function used to compute reward scores." + } + }, + "description": "Reward signal configuration for reinforcement or reward model training." + }, + "TrainingRolloutConfiguration": { + "type": "object", + "required": [ + "engine" + ], + "properties": { + "engine": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutEngine" + } + ], + "description": "Rollout inference engine." + }, + "tensorParallelSize": { + "type": "integer", + "format": "int32", + "description": "Tensor parallel size used by the rollout engine.", + "default": 1 + }, + "gpuMemoryUtilization": { + "type": "number", + "format": "double", + "description": "GPU memory utilization target for the rollout engine, between 0.0 and 1.0." + } + }, + "description": "Rollout generation configuration for online reinforcement learning." + }, + "TrainingRolloutEngine": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Vllm", + "Sglang", + "Hf", + "MegatronInference" + ] + } + ], + "description": "Inference engine used for rollout generation during online reinforcement learning." + }, "TreatmentEffectType": { "anyOf": [ { @@ -49766,4 +50419,4 @@ } } ] -} \ No newline at end of file +} diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp index 91c80dbbcf57..b38cdba271b2 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp @@ -195,6 +195,272 @@ model QueueSettings { jobTier?: string; } +@doc("Training algorithm used by a declarative training job.") +union TrainingAlgorithm { + string, + + @doc("Supervised fine tuning.") + Sft: "Sft", + + @doc("Direct preference optimization.") + Dpo: "Dpo", + + @doc("Kahneman-Tversky optimization.") + Kto: "Kto", + + @doc("Odds ratio preference optimization.") + Orpo: "Orpo", + + @doc("Contrastive preference optimization.") + Cpo: "Cpo", + + @doc("Simple preference optimization.") + SimPo: "SimPo", + + @doc("Group relative policy optimization.") + Grpo: "Grpo", + + @doc("Proximal policy optimization.") + Ppo: "Ppo", + + @doc("REINFORCE leave-one-out.") + Rloo: "Rloo", + + @doc("REINFORCE++.") + ReinforcePp: "ReinforcePp", + + @doc("Reward model training.") + RewardModel: "RewardModel", +} + +@doc("Training framework used to lower a declarative training job into an execution command.") +union TrainingFramework { + string, + + @doc("TRL framework.") + Trl: "Trl", + + @doc("VERL framework.") + Verl: "Verl", + + @doc("OpenRLHF framework.") + OpenRlhf: "OpenRlhf", + + @doc("NeMo RL framework.") + NemoRl: "NemoRl", + + @doc("Slime framework.") + Slime: "Slime", + + @doc("TorchForge framework.") + TorchForge: "TorchForge", +} + +@doc("Chat template used to format conversational training data.") +union ChatTemplate { + string, + + @doc("ChatML template.") + Chatml: "Chatml", + + @doc("Llama 3 chat template.") + Llama3: "llama-3", + + @doc("Zephyr chat template.") + Zephyr: "Zephyr", + + @doc("Gemma chat template.") + Gemma: "Gemma", + + @doc("Phi 3 chat template.") + Phi3: "phi-3", +} + +@doc("Mapping from logical training fields to columns in the dataset.") +model TrainingColumnMapping { + @doc("Column containing prompts.") + prompt?: string; + + @doc("Column containing chosen responses for preference training.") + chosen?: string; + + @doc("Column containing rejected responses for preference training.") + rejected?: string; + + @doc("Column containing reference answers or reward context.") + reference?: string; + + @doc("Column containing chat messages.") + messages?: string; +} + +@doc("Formatting options for conversational training data.") +model TrainingDataFormatConfiguration { + @doc("Built-in chat template to apply to the dataset.") + chatTemplate?: ChatTemplate; + + @doc("Path to a custom chat template relative to the job's code directory.") + chatTemplatePath?: string; +} + +@doc("Dataset configuration for a declarative training job.") +model TrainingDatasetConfiguration { + @doc("Training dataset asset reference.") + train: string; + + @doc("Optional evaluation dataset asset reference.") + eval?: string; + + @doc("Mapping from training fields to dataset columns.") + columns?: TrainingColumnMapping; + + @doc("Conversational data formatting options.") + dataFormat?: TrainingDataFormatConfiguration; +} + +@doc("Reference to a Python callable relative to the job's code directory.") +model TrainingEntryPointReference { + @doc("Path to the Python callable in module/file.py:function format.") + entryPoint: string; +} + +@doc("Python runtime dependencies for an inline function.") +model TrainingInlineFunctionRuntime { + @doc("Pip packages to install before invoking the inline function.") + pip?: string[]; +} + +@doc("Inline Python function definition for custom training logic.") +model TrainingInlineFunctionConfiguration { + @doc("Python function definition.") + def: string; + + @doc("Runtime dependencies for the inline function.") + runtime?: TrainingInlineFunctionRuntime; +} + +@doc("Reward signal configuration for reinforcement or reward model training.") +model TrainingRewardConfiguration { + @doc("Reward model asset reference.") + `model`?: string; + + @doc("Python callable used to compute reward scores.") + function?: TrainingEntryPointReference; + + @doc("Inline Python function used to compute reward scores.") + @encodedName("application/json", "inline_function") + inlineFunction?: TrainingInlineFunctionConfiguration; +} + +@doc("LoRA adapter configuration for parameter-efficient fine tuning.") +model TrainingLoraConfiguration { + @doc("Low-rank dimension.") + rank: int32; + + @doc("LoRA scaling factor.") + alpha?: int32; + + @doc("Dropout applied to adapter inputs.") + dropout?: float64 = 0.05; + + @doc("Linear layers that receive adapters. Use 'auto' to let the framework choose defaults.") + targetModules?: string = "auto"; + + @doc("Whether to enable QLoRA 4-bit base weight loading.") + quantize?: boolean = false; +} + +@doc("Inference engine used for rollout generation during online reinforcement learning.") +union TrainingRolloutEngine { + string, + + @doc("vLLM inference engine.") + Vllm: "Vllm", + + @doc("SGLang inference engine.") + Sglang: "Sglang", + + @doc("Hugging Face generate-based inference.") + Hf: "Hf", + + @doc("Megatron-Core native inference.") + MegatronInference: "MegatronInference", +} + +@doc("Rollout generation configuration for online reinforcement learning.") +model TrainingRolloutConfiguration { + @doc("Rollout inference engine.") + engine: TrainingRolloutEngine; + + @doc("Tensor parallel size used by the rollout engine.") + tensorParallelSize?: int32 = 1; + + @doc("GPU memory utilization target for the rollout engine, between 0.0 and 1.0.") + gpuMemoryUtilization?: float64; +} + +@doc("Built-in evaluation benchmark.") +union TrainingEvalBenchmark { + string, + + @doc("Grade School Math 8K benchmark.") + Gsm8k: "Gsm8k", + + @doc("Massive Multitask Language Understanding benchmark.") + Mmlu: "Mmlu", + + @doc("Human-written code generation benchmark.") + Humaneval: "Humaneval", + + @doc("Mostly Basic Python Programs benchmark.") + Mbpp: "Mbpp", + + @doc("AI2 Reasoning Challenge benchmark.") + Arc: "Arc", + + @doc("HellaSwag commonsense inference benchmark.") + Hellaswag: "Hellaswag", +} + +@doc("Evaluation configuration for a declarative training job.") +model TrainingEvalConfiguration { + @doc("Named built-in benchmark. Mutually exclusive with dataset.") + benchmark?: TrainingEvalBenchmark; + + @doc("Custom evaluation dataset asset reference. Mutually exclusive with benchmark.") + dataset?: string; + + @doc("Evaluation frequency in training steps. Omit for end-of-training only.") + everyNSteps?: int32; +} + +@doc("Declarative training recipe. When specified, command must be omitted and environmentImageReference is optional.") +model TrainingConfiguration { + @doc("Training algorithm.") + algorithm: TrainingAlgorithm; + + @doc("Training framework. If omitted, the service selects a compatible framework.") + framework?: TrainingFramework; + + @doc("Base model asset reference.") + `model`: string; + + @doc("Training and optional evaluation datasets.") + dataset: TrainingDatasetConfiguration; + + @doc("Reward signal configuration.") + reward?: TrainingRewardConfiguration; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Rollout generation configuration.") + rollout?: TrainingRolloutConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; +} + @doc("Metadata pertaining to creation and last modification of the resource.") model SystemData { @doc("The identity that created the resource.") @@ -243,11 +509,14 @@ model CommandJob extends JobProperties { @doc("Job type.") jobType: "Command"; - @doc("The command to execute on startup of the job.") - command: string; + @doc("The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified.") + command?: string; + + @doc("ACR path or Azure ML environment reference. Required when training is not specified.") + environmentImageReference?: string; - @doc("ACR path of environment.") - environmentImageReference: string; + @doc("Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution.") + training?: TrainingConfiguration; @doc("Display name of job.") displayName?: string; @@ -281,6 +550,9 @@ model CommandJob extends JobProperties { @doc("Compute Resource configuration for the job.") resources?: JobResourceConfiguration; + @doc("Number of GPUs requested by the training job.") + gpuCount?: int32; + @doc("Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null.") distribution?: DistributionConfiguration; @@ -348,6 +620,82 @@ model JobCancelAcceptedResponse { retryAfter?: int32; } +@doc("Status of an asynchronous training job operation.") +union JobOperationStatus { + string, + + @doc("Operation is being processed.") + InProgress: "InProgress", + + @doc("Operation is deleting resources.") + Deleting: "Deleting", + + @doc("Operation completed successfully.") + Succeeded: "Succeeded", + + @doc("Operation failed.") + Failed: "Failed", + + @doc("Operation was canceled.") + Canceled: "Canceled", +} + +@doc("Error details for an asynchronous training job operation.") +model JobOperationError { + @doc("Machine-readable error code.") + code?: string; + + @doc("Human-readable error message.") + message?: string; + + @doc("Additional error information.") + details?: Record; +} + +@doc("Asynchronous training job operation resource.") +model JobOperationResource { + @doc("Operation resource ID.") + @visibility(Lifecycle.Read) + id?: string; + + @doc("Operation name.") + @visibility(Lifecycle.Read) + name?: string; + + @doc("Operation status.") + @visibility(Lifecycle.Read) + status: JobOperationStatus; + + @doc("Operation result properties.") + @visibility(Lifecycle.Read) + properties?: Record; + + @doc("Operation start time.") + @visibility(Lifecycle.Read) + startTime?: utcDateTime; + + @doc("Operation end time.") + @visibility(Lifecycle.Read) + endTime?: utcDateTime; + + @doc("Operation completion percentage from 0 to 100.") + @visibility(Lifecycle.Read) + percentComplete?: float64; + + @doc("Operation error information.") + @visibility(Lifecycle.Read) + error?: JobOperationError; +} + +@doc("Response returned when a training job operation is still in progress.") +model JobOperationAcceptedResponse { + @statusCode statusCode: 202; + + @doc("URL to poll for the operation result.") + @header("Location") + location?: string; +} + @doc("Specifies which jobs to include in a list result based on their lifecycle state.") union ListViewType { string, diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp index f00ec204614f..21931886e393 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp @@ -27,8 +27,6 @@ alias JobsFilterQueryParams = { properties?: string; }; -alias JobOperations = FoundryAzureOperations<{}>; - @tag("TrainingJobs") interface TrainingJobs { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "We need explicit definition for header support" @@ -96,6 +94,39 @@ interface TrainingJobs { >; } // interface TrainingJobs +@tag("TrainingJobs") +interface TrainingJobOperations { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Foundry job operations are exposed as data-plane polling routes under trainingJobs." + #suppress "@azure-tools/typespec-azure-core/no-response-body" "The operation result route can return 202/200 with no body or a terminal operation resource." + @doc("Poll the result of an asynchronous training job operation.") + @get + @route("/trainingJobs/operations/{operationId}/result") + getOperationResult is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The operation identifier returned by a training job create, cancel, or delete request.") + @path + operationId: string; + }, + JobOperationResource | JobOperationAcceptedResponse | Http.OkResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Foundry job operations are exposed as data-plane polling routes under trainingJobs." + #suppress "@azure-tools/typespec-azure-core/no-response-body" "The operation status route can return 200 with no body or an operation resource." + @doc("Poll the status of an asynchronous training job operation.") + @get + @route("/trainingJobs/operations/{operationId}/status") + getOperationStatus is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The operation identifier returned by a training job create, cancel, or delete request.") + @path + operationId: string; + }, + JobOperationResource | Http.OkResponse + >; +} + @tag("TrainingJobs") interface TrainingJobRuns { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job runs are projected from job execution history." From 471d10ab943ecdec24e27cc87932fd3551a390bf Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Tue, 5 May 2026 00:55:21 -0700 Subject: [PATCH 06/37] fix(foundry): model job lro status polling Add Operation-Location headers to training job delete, cancel, and accepted operation polling responses so generated SDK pollers can follow the status route while Location remains the result route. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../v1/microsoft-foundry-openapi3.json | 25 +++++++++++++++++-- .../microsoft-foundry-openapi3.json | 25 +++++++++++++++++-- .../data-plane/Foundry/src/jobs/models.tsp | 16 ++++++++++-- .../data-plane/Foundry/src/jobs/routes.tsp | 8 +++--- 4 files changed, 64 insertions(+), 10 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 784c4719938e..d8441c9056d2 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -11564,6 +11564,13 @@ "schema": { "type": "string" } + }, + "Operation-Location": { + "required": false, + "description": "URL to poll for the operation status.", + "schema": { + "type": "string" + } } } }, @@ -14254,7 +14261,7 @@ }, "delete": { "operationId": "TrainingJobs_beginDelete", - "description": "Delete a training job by name. Returns 202 Accepted with a Location header to poll for completion, or 204 if the job does not exist.", + "description": "Delete a training job by name. Returns 202 Accepted with Location and Operation-Location headers to poll for completion, or 204 if the job does not exist.", "parameters": [ { "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" @@ -14287,6 +14294,13 @@ "headers": { "Location": { "required": true, + "description": "URL to poll for the final result of the delete operation.", + "schema": { + "type": "string" + } + }, + "Operation-Location": { + "required": false, "description": "URL to poll for the status of the delete operation.", "schema": { "type": "string" @@ -14333,7 +14347,7 @@ "/trainingJobs/{name}:cancel": { "post": { "operationId": "TrainingJobs_beginCancel", - "description": "Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with a Location header to poll for completion.", + "description": "Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with Location and Operation-Location headers to poll for completion.", "parameters": [ { "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" @@ -14369,6 +14383,13 @@ "headers": { "Location": { "required": true, + "description": "URL to poll for the final result of the cancel operation.", + "schema": { + "type": "string" + } + }, + "Operation-Location": { + "required": false, "description": "URL to poll for the status of the cancel operation.", "schema": { "type": "string" diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 2da61d85f20a..ad7dc2ea4e09 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -14282,6 +14282,13 @@ "schema": { "type": "string" } + }, + "Operation-Location": { + "required": false, + "description": "URL to poll for the operation status.", + "schema": { + "type": "string" + } } } }, @@ -16972,7 +16979,7 @@ }, "delete": { "operationId": "TrainingJobs_beginDelete", - "description": "Delete a training job by name. Returns 202 Accepted with a Location header to poll for completion, or 204 if the job does not exist.", + "description": "Delete a training job by name. Returns 202 Accepted with Location and Operation-Location headers to poll for completion, or 204 if the job does not exist.", "parameters": [ { "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" @@ -17005,6 +17012,13 @@ "headers": { "Location": { "required": true, + "description": "URL to poll for the final result of the delete operation.", + "schema": { + "type": "string" + } + }, + "Operation-Location": { + "required": false, "description": "URL to poll for the status of the delete operation.", "schema": { "type": "string" @@ -17051,7 +17065,7 @@ "/trainingJobs/{name}:cancel": { "post": { "operationId": "TrainingJobs_beginCancel", - "description": "Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with a Location header to poll for completion.", + "description": "Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with Location and Operation-Location headers to poll for completion.", "parameters": [ { "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" @@ -17087,6 +17101,13 @@ "headers": { "Location": { "required": true, + "description": "URL to poll for the final result of the cancel operation.", + "schema": { + "type": "string" + } + }, + "Operation-Location": { + "required": false, "description": "URL to poll for the status of the cancel operation.", "schema": { "type": "string" diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp index b38cdba271b2..bc2098c26630 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp @@ -598,10 +598,14 @@ model Job { model JobDeleteAcceptedResponse { @statusCode statusCode: 202; - @doc("URL to poll for the status of the delete operation.") + @doc("URL to poll for the final result of the delete operation.") @header("Location") location: string; + @doc("URL to poll for the status of the delete operation.") + @header("Operation-Location") + operationLocation?: string; + @doc("Suggested delay in seconds before polling.") @header("Retry-After") retryAfter?: int32; @@ -611,10 +615,14 @@ model JobDeleteAcceptedResponse { model JobCancelAcceptedResponse { @statusCode statusCode: 202; - @doc("URL to poll for the status of the cancel operation.") + @doc("URL to poll for the final result of the cancel operation.") @header("Location") location: string; + @doc("URL to poll for the status of the cancel operation.") + @header("Operation-Location") + operationLocation?: string; + @doc("Suggested delay in seconds before polling.") @header("Retry-After") retryAfter?: int32; @@ -694,6 +702,10 @@ model JobOperationAcceptedResponse { @doc("URL to poll for the operation result.") @header("Location") location?: string; + + @doc("URL to poll for the operation status.") + @header("Operation-Location") + operationLocation?: string; } @doc("Specifies which jobs to include in a list result based on their lifecycle state.") diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp index 21931886e393..cc588ddcc06c 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp @@ -67,9 +67,9 @@ interface TrainingJobs { ResourceCreatedResponse >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "LRO delete returns 202 with Location header for polling, or 204 when job not found" + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "LRO delete returns 202 with Location and Operation-Location headers for polling, or 204 when job not found" #suppress "@azure-tools/typespec-azure-core/no-response-body" "Delete LRO returns 202 with Location header, 204 with no body" - @doc("Delete a training job by name. Returns 202 Accepted with a Location header to poll for completion, or 204 if the job does not exist.") + @doc("Delete a training job by name. Returns 202 Accepted with Location and Operation-Location headers to poll for completion, or 204 if the job does not exist.") @delete beginDelete is Azure.Core.Foundations.ResourceOperation< Job, @@ -79,9 +79,9 @@ interface TrainingJobs { JobDeleteAcceptedResponse | Http.NoContentResponse >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "LRO cancel returns 200 synchronously or 202 with Location header for async polling" + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "LRO cancel returns 200 synchronously or 202 with Location and Operation-Location headers for async polling" #suppress "@azure-tools/typespec-azure-core/no-response-body" "Cancel LRO returns 200 or 202 with Location header, no body" - @doc("Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with a Location header to poll for completion.") + @doc("Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with Location and Operation-Location headers to poll for completion.") @post @Rest.action("cancel") @actionSeparator(":") From 205c1c16982ea62599bd1d081217d0050400a146 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Tue, 5 May 2026 01:35:07 -0700 Subject: [PATCH 07/37] feat(typespec): add training job services route Model training job service endpoints as a jobs preview operation with an optional nodeId query parameter. Regenerate the v1 and virtual-public-preview OpenAPI outputs for the new services response shape. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../v1/microsoft-foundry-openapi3.json | 133 ++++++++++++++++++ .../microsoft-foundry-openapi3.json | 133 ++++++++++++++++++ .../data-plane/Foundry/src/jobs/models.tsp | 40 ++++++ .../data-plane/Foundry/src/jobs/routes.tsp | 16 +++ 4 files changed, 322 insertions(+) diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index d8441c9056d2..a8be8b42c011 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -14194,6 +14194,81 @@ ] } }, + "/trainingJobs/{jobName}/services": { + "get": { + "operationId": "TrainingJobs_showServices", + "description": "List service endpoints for the current view of a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "nodeId", + "in": "query", + "required": false, + "description": "Node identifier whose service endpoints should be returned. If omitted, leader-node services are returned.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrainingJobServiceCollection" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, "/trainingJobs/{name}": { "get": { "operationId": "TrainingJobs_get", @@ -44721,6 +44796,64 @@ }, "description": "Python runtime dependencies for an inline function." }, + "TrainingJobService": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Service type.", + "readOnly": true + }, + "port": { + "type": "integer", + "format": "int32", + "description": "Service port.", + "readOnly": true + }, + "status": { + "type": "string", + "description": "Service status.", + "readOnly": true + }, + "error": { + "type": "object", + "additionalProperties": {}, + "description": "Terminal error for the service, if any.", + "readOnly": true + }, + "endpoint": { + "type": "string", + "description": "Service endpoint URI.", + "readOnly": true + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional service properties.", + "readOnly": true + } + }, + "description": "Service endpoint details for a training job." + }, + "TrainingJobServiceCollection": { + "type": "object", + "required": [ + "services" + ], + "properties": { + "services": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TrainingJobService" + }, + "description": "Services keyed by service name.", + "readOnly": true + } + }, + "description": "Services exposed by a training job." + }, "TrainingLoraConfiguration": { "type": "object", "required": [ diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index ad7dc2ea4e09..0542cc02e29e 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -16912,6 +16912,81 @@ ] } }, + "/trainingJobs/{jobName}/services": { + "get": { + "operationId": "TrainingJobs_showServices", + "description": "List service endpoints for the current view of a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "nodeId", + "in": "query", + "required": false, + "description": "Node identifier whose service endpoints should be returned. If omitted, leader-node services are returned.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrainingJobServiceCollection" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, "/trainingJobs/{name}": { "get": { "operationId": "TrainingJobs_get", @@ -49710,6 +49785,64 @@ }, "description": "Python runtime dependencies for an inline function." }, + "TrainingJobService": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Service type.", + "readOnly": true + }, + "port": { + "type": "integer", + "format": "int32", + "description": "Service port.", + "readOnly": true + }, + "status": { + "type": "string", + "description": "Service status.", + "readOnly": true + }, + "error": { + "type": "object", + "additionalProperties": {}, + "description": "Terminal error for the service, if any.", + "readOnly": true + }, + "endpoint": { + "type": "string", + "description": "Service endpoint URI.", + "readOnly": true + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional service properties.", + "readOnly": true + } + }, + "description": "Service endpoint details for a training job." + }, + "TrainingJobServiceCollection": { + "type": "object", + "required": [ + "services" + ], + "properties": { + "services": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TrainingJobService" + }, + "description": "Services keyed by service name.", + "readOnly": true + } + }, + "description": "Services exposed by a training job." + }, "TrainingLoraConfiguration": { "type": "object", "required": [ diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp index bc2098c26630..58208a16715f 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp @@ -766,6 +766,40 @@ model JobRunError { details?: Record; } +@doc("Service endpoint details for a training job.") +model TrainingJobService { + @doc("Service type.") + @visibility(Lifecycle.Read) + type?: string; + + @doc("Service port.") + @visibility(Lifecycle.Read) + port?: int32; + + @doc("Service status.") + @visibility(Lifecycle.Read) + status?: string; + + @doc("Terminal error for the service, if any.") + @visibility(Lifecycle.Read) + error?: Record; + + @doc("Service endpoint URI.") + @visibility(Lifecycle.Read) + endpoint?: string; + + @doc("Additional service properties.") + @visibility(Lifecycle.Read) + properties?: Record; +} + +@doc("Services exposed by a training job.") +model TrainingJobServiceCollection { + @doc("Services keyed by service name.") + @visibility(Lifecycle.Read) + services: Record; +} + @doc("Compute placement details for a job run attempt.") model JobRunComputeDetails { @doc("Virtual machine size used for this run attempt.") @@ -1042,6 +1076,12 @@ alias JobArtifactListQueryParameters = JobChildListQueryParameters & { pathPrefix?: string; }; +alias JobServicesQueryParameters = { + @doc("Node identifier whose service endpoints should be returned. If omitted, leader-node services are returned.") + @query + nodeId?: int32; +}; + alias JobMetricQueryParameters = { @doc("Start of the metric time range.") @query diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp index cc588ddcc06c..5f82791f59fc 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp @@ -49,6 +49,22 @@ interface TrainingJobs { Azure.Core.Foundations.ResourceOkResponse >; + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job services are projected from run history service instances." + @doc("List service endpoints for the current view of a training job.") + @get + @route("/trainingJobs/{jobName}/services") + showServices is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The training job name.") + @path + jobName: string; + + ...JobServicesQueryParameters; + }, + TrainingJobServiceCollection + >; + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Jobs use Operation-Id based idempotent submission." @doc("Create and execute a model training job.") @post From 746ff22a27378a2627c4c253c6c3c47c8117ea7d Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Tue, 5 May 2026 02:05:22 -0700 Subject: [PATCH 08/37] feat(typespec): add training job artifact prefix info Add SDK-visible trainingJobs prefix content-info operations and regenerate Foundry OpenAPI output for default artifact downloads. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../v1/microsoft-foundry-openapi3.json | 198 +++++++++++++++++ .../microsoft-foundry-openapi3.json | 200 +++++++++++++++++- .../data-plane/Foundry/src/jobs/models.tsp | 11 + .../data-plane/Foundry/src/jobs/routes.tsp | 36 ++++ 4 files changed, 444 insertions(+), 1 deletion(-) diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index a8be8b42c011..25fbef846dbe 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -11898,6 +11898,90 @@ ] } }, + "/trainingJobs/{jobName}/artifacts:contentInfoByPrefix": { + "get": { + "operationId": "TrainingJobArtifacts_getArtifactContentInfoByPrefix", + "description": "List download information for training job artifacts under a path prefix.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, "/trainingJobs/{jobName}/artifacts:metadata": { "get": { "operationId": "TrainingJobArtifacts_getArtifactMetadata", @@ -13220,6 +13304,99 @@ ] } }, + "/trainingJobs/{jobName}/runs/{runId}/artifacts:contentInfoByPrefix": { + "get": { + "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfoByPrefix", + "description": "List download information for artifacts under a path prefix from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, "/trainingJobs/{jobName}/runs/{runId}/artifacts:metadata": { "get": { "operationId": "TrainingJobRunArtifacts_getRunArtifactMetadata", @@ -42586,6 +42763,27 @@ }, "description": "Paged collection of JobArtifact items" }, + "PagedJobArtifactContentInfo": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobArtifactContentInfo" + }, + "description": "The JobArtifactContentInfo items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobArtifactContentInfo items" + }, "PagedJobMetric": { "type": "object", "required": [ diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 0542cc02e29e..68496d0e9a2a 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -14616,6 +14616,90 @@ ] } }, + "/trainingJobs/{jobName}/artifacts:contentInfoByPrefix": { + "get": { + "operationId": "TrainingJobArtifacts_getArtifactContentInfoByPrefix", + "description": "List download information for training job artifacts under a path prefix.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, "/trainingJobs/{jobName}/artifacts:metadata": { "get": { "operationId": "TrainingJobArtifacts_getArtifactMetadata", @@ -15938,6 +16022,99 @@ ] } }, + "/trainingJobs/{jobName}/runs/{runId}/artifacts:contentInfoByPrefix": { + "get": { + "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfoByPrefix", + "description": "List download information for artifacts under a path prefix from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, "/trainingJobs/{jobName}/runs/{runId}/artifacts:metadata": { "get": { "operationId": "TrainingJobRunArtifacts_getRunArtifactMetadata", @@ -42367,7 +42544,7 @@ }, "agent_session_id": { "type": "string", - "description": "The session identifier for this response. Currently only relevant for hosted agents.\nAlways returned for hosted agents ΓÇö either the caller-provided value, the auto-derived value,\nor an auto-generated UUID. Use for session-scoped operations and to maintain sandbox\naffinity in follow-up calls." + "description": "The session identifier for this response. Currently only relevant for hosted agents.\nAlways returned for hosted agents — either the caller-provided value, the auto-derived value,\nor an auto-generated UUID. Use for session-scoped operations and to maintain sandbox\naffinity in follow-up calls." }, "agent_reference": { "type": "object", @@ -47227,6 +47404,27 @@ }, "description": "Paged collection of JobArtifact items" }, + "PagedJobArtifactContentInfo": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobArtifactContentInfo" + }, + "description": "The JobArtifactContentInfo items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobArtifactContentInfo items" + }, "PagedJobMetric": { "type": "object", "required": [ diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp index 58208a16715f..b436f8a065f6 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp @@ -1076,6 +1076,17 @@ alias JobArtifactListQueryParameters = JobChildListQueryParameters & { pathPrefix?: string; }; +alias JobArtifactContentInfoByPrefixQueryParameters = { + @doc("Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.") + @query + pathPrefix?: string; + + @doc("Continuation token returned by a previous list request.") + @query + @continuationToken + skipToken?: string; +}; + alias JobServicesQueryParameters = { @doc("Node identifier whose service endpoints should be returned. If omitted, leader-node services are returned.") @query diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp index 5f82791f59fc..4dbff21bcbf9 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp @@ -234,6 +234,22 @@ interface TrainingJobArtifacts { JobArtifactContentInfo >; + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." + @doc("List download information for training job artifacts under a path prefix.") + @get + @route("/trainingJobs/{jobName}/artifacts:contentInfoByPrefix") + getArtifactContentInfoByPrefix is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The training job name.") + @path + jobName: string; + + ...JobArtifactContentInfoByPrefixQueryParameters; + }, + Azure.Core.Page + >; + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." #suppress "@azure-tools/typespec-azure-core/byos" "Job artifact content is produced by the job and streamed back to the caller." @doc("Download training job artifact content.") @@ -320,6 +336,26 @@ interface TrainingJobRunArtifacts { JobArtifactContentInfo >; + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run artifacts are projected from the run data container." + @doc("List download information for artifacts under a path prefix from a specific training job run.") + @get + @route("/trainingJobs/{jobName}/runs/{runId}/artifacts:contentInfoByPrefix") + getRunArtifactContentInfoByPrefix is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The training job name.") + @path + jobName: string; + + @doc("The run identifier.") + @path + runId: string; + + ...JobArtifactContentInfoByPrefixQueryParameters; + }, + Azure.Core.Page + >; + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run artifacts are projected from the run data container." #suppress "@azure-tools/typespec-azure-core/byos" "Job artifact content is produced by the job and streamed back to the caller." @doc("Download artifact content from a specific training job run.") From b76ec8f324afeeb67025e3ce8fb045f587ee30e6 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Tue, 5 May 2026 03:05:42 -0700 Subject: [PATCH 09/37] fix(typespec): correct training jobs create contract Use a create-specific job body model and remove unsupported child-list paging parameters from the new trainingJobs surface. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../v1/microsoft-foundry-openapi3.json | 77 ++++++------------- .../microsoft-foundry-openapi3.json | 77 ++++++------------- .../data-plane/Foundry/src/jobs/models.tsp | 22 +++++- .../data-plane/Foundry/src/jobs/routes.tsp | 10 +-- 4 files changed, 70 insertions(+), 116 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 25fbef846dbe..c40f778fbea3 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -11499,7 +11499,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/JobCreate" } } }, @@ -12743,27 +12743,6 @@ "type": "string" } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -12901,17 +12880,6 @@ "type": "string" } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, { "name": "skipToken", "in": "query", @@ -14230,27 +14198,6 @@ "type": "string" } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -21173,6 +21120,28 @@ ], "description": "Type of a job artifact." }, + "JobCreate": { + "type": "object", + "required": [ + "name", + "properties" + ], + "properties": { + "name": { + "type": "string", + "description": "The name of the training job. This is case-sensitive." + }, + "properties": { + "allOf": [ + { + "$ref": "#/components/schemas/JobProperties" + } + ], + "description": "Properties of the job." + } + }, + "description": "Request body for creating a training job." + }, "JobMetric": { "type": "object", "required": [ diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 68496d0e9a2a..ec41d586df90 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -14217,7 +14217,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/JobCreate" } } }, @@ -15461,27 +15461,6 @@ "type": "string" } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -15619,17 +15598,6 @@ "type": "string" } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, { "name": "skipToken", "in": "query", @@ -16948,27 +16916,6 @@ "type": "string" } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -25597,6 +25544,28 @@ ], "description": "Type of a job artifact." }, + "JobCreate": { + "type": "object", + "required": [ + "name", + "properties" + ], + "properties": { + "name": { + "type": "string", + "description": "The name of the training job. This is case-sensitive." + }, + "properties": { + "allOf": [ + { + "$ref": "#/components/schemas/JobProperties" + } + ], + "description": "Properties of the job." + } + }, + "description": "Request body for creating a training job." + }, "JobMetric": { "type": "object", "required": [ diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp index b436f8a065f6..d762c7a1bbe8 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp @@ -594,6 +594,15 @@ model Job { systemData?: SystemData; } +@doc("Request body for creating a training job.") +model JobCreate { + @doc("The name of the training job. This is case-sensitive.") + name: string; + + @doc("Properties of the job.") + properties: JobProperties; +} + @doc("Response returned when a job delete operation is accepted asynchronously.") model JobDeleteAcceptedResponse { @statusCode statusCode: 202; @@ -1059,7 +1068,7 @@ model JobOutputReference { description?: string; } -alias JobChildListQueryParameters = { +alias JobPagedListQueryParameters = { @doc("Maximum number of items to return.") @query limit?: int32; @@ -1070,12 +1079,21 @@ alias JobChildListQueryParameters = { skipToken?: string; }; -alias JobArtifactListQueryParameters = JobChildListQueryParameters & { +alias JobContinuationListQueryParameters = { + @doc("Continuation token returned by a previous list request.") + @query + @continuationToken + skipToken?: string; +}; + +alias JobArtifactListQueryParameters = JobPagedListQueryParameters & { @doc("Artifact path prefix to list.") @query pathPrefix?: string; }; +alias JobMetricListQueryParameters = JobPagedListQueryParameters; + alias JobArtifactContentInfoByPrefixQueryParameters = { @doc("Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.") @query diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp index 4dbff21bcbf9..8479b703df42 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp @@ -78,7 +78,7 @@ interface TrainingJobs { @doc("The training job to create.") @bodyRoot - job: Job; + job: JobCreate; }, ResourceCreatedResponse >; @@ -156,7 +156,7 @@ interface TrainingJobRuns { @path jobName: string; - ...JobChildListQueryParameters; + ...JobContinuationListQueryParameters; }, Azure.Core.Page >; @@ -393,7 +393,7 @@ interface TrainingJobMetrics { @path jobName: string; - ...JobChildListQueryParameters; + ...JobMetricListQueryParameters; }, Azure.Core.Page >; @@ -510,7 +510,7 @@ interface TrainingJobRunMetrics { @path runId: string; - ...JobChildListQueryParameters; + ...JobMetricListQueryParameters; }, Azure.Core.Page >; @@ -643,7 +643,6 @@ interface TrainingJobOutputs { @path jobName: string; - ...JobChildListQueryParameters; }, Azure.Core.Page >; @@ -684,7 +683,6 @@ interface TrainingJobRunOutputs { @path runId: string; - ...JobChildListQueryParameters; }, Azure.Core.Page >; From dd744be98c6873f1cdd8a21f2574325b8593769c Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Tue, 5 May 2026 03:24:35 -0700 Subject: [PATCH 10/37] fix(typespec): unblock foundry jobs validation Keep generated OpenAPI JSON out of this PR's swagger validation path, add local Foundry readmes for Avocado, and suppress the existing Foundry TypeSpec validation integration gap. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ai-foundry/data-plane/Foundry/client.tsp | 20 +- .../v1/microsoft-foundry-openapi3.json | 16587 +++-------- .../microsoft-foundry-openapi3.json | 22947 ++++++---------- .../Foundry/{README.md => readme.md} | 2 + .../data-plane/Foundry/src/common/readme.md | 5 + .../data-plane/Foundry/src/jobs/models.tsp | 2 + .../data-plane/Foundry/src/jobs/readme.md | 5 + .../data-plane/Foundry/src/mlflow/readme.md | 5 + .../data-plane/Foundry/suppressions.yaml | 13 + 9 files changed, 12242 insertions(+), 27344 deletions(-) rename specification/ai-foundry/data-plane/Foundry/{README.md => readme.md} (96%) create mode 100644 specification/ai-foundry/data-plane/Foundry/src/common/readme.md create mode 100644 specification/ai-foundry/data-plane/Foundry/src/jobs/readme.md create mode 100644 specification/ai-foundry/data-plane/Foundry/src/mlflow/readme.md diff --git a/specification/ai-foundry/data-plane/Foundry/client.tsp b/specification/ai-foundry/data-plane/Foundry/client.tsp index 074490f4e278..c0528751330c 100644 --- a/specification/ai-foundry/data-plane/Foundry/client.tsp +++ b/specification/ai-foundry/data-plane/Foundry/client.tsp @@ -43,7 +43,7 @@ using Azure.AI.Projects; @@clientNamespace(OpenAI, "azure.ai.projects", "python"); // -------------------------------------------------------------------------------- -// Agents subΓÇÉclient +// Agents sub-client // -------------------------------------------------------------------------------- // Use short form method names @@ -141,7 +141,7 @@ using Azure.AI.Projects; @@clientName(MemoryStoreObject, "MemoryStore", "javascript"); // -------------------------------------------------------------------------------- -// Responses subΓÇÉclient +// Responses sub-client // -------------------------------------------------------------------------------- // Allow assigning a `dict[str, Any]` object directly to the "schema" property of TextResponseFormatJsonSchema @@ -157,7 +157,7 @@ using Azure.AI.Projects; ); // -------------------------------------------------------------------------------- -// Evaluators subΓÇÉclient +// Evaluators sub-client // -------------------------------------------------------------------------------- @@clientName(Evaluators.listLatestVersions, "list"); @@clientName(Evaluators.startPendingUpload, "pendingUpload"); @@ -167,13 +167,13 @@ using Azure.AI.Projects; @@alternateType(EvaluatorVersion.modified_at, utcDateTime, "python"); // -------------------------------------------------------------------------------- -// Insights subΓÇÉclient +// Insights sub-client // -------------------------------------------------------------------------------- @@clientName(Azure.AI.Projects.Insight.id, "insight_id"); @@clientName(InsightsGetParams.id, "insight_id"); // -------------------------------------------------------------------------------- -// Datasets subΓÇÉclient +// Datasets sub-client // -------------------------------------------------------------------------------- // Shorter method names for SDK datasets operations @@ -188,7 +188,7 @@ using Azure.AI.Projects; @@clientName(SasCredential, "BlobReferenceSasCredential"); // Not to be confused with class "SASCredentials" // -------------------------------------------------------------------------------- -// Indexes subΓÇÉclient +// Indexes sub-client // -------------------------------------------------------------------------------- // Shorter method names for SDK Index operations @@ -198,7 +198,7 @@ using Azure.AI.Projects; @@clientName(Indexes.createOrUpdateVersion, "createOrUpdate"); // -------------------------------------------------------------------------------- -// Schedules subΓÇÉclient +// Schedules sub-client // -------------------------------------------------------------------------------- @@clientName(SchedulesCreateOrUpdateParams.resource, "schedule"); @@ -213,7 +213,7 @@ using Azure.AI.Projects; @@alternateType(ScheduleRun.triggerTime, utcDateTime, "python"); // -------------------------------------------------------------------------------- -// Toolsets subΓÇÉclient +// Toolsets sub-client // -------------------------------------------------------------------------------- @@clientName(Toolsets.createToolset, "create"); @@ -223,7 +223,7 @@ using Azure.AI.Projects; @@clientName(Toolsets.deleteToolset, "delete"); // -------------------------------------------------------------------------------- -// Connections subΓÇÉclient +// Connections sub-client // -------------------------------------------------------------------------------- // Make these two internal, since all SDKs hand-write a single public method with boolean "includeCredentials" @@ -232,7 +232,7 @@ using Azure.AI.Projects; @@access(Connections.getWithCredentials, Access.internal); // -------------------------------------------------------------------------------- -// Deployment subΓÇÉclient +// Deployment sub-client // -------------------------------------------------------------------------------- // Less generic names diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index c40f778fbea3..89e65ee5b7d7 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -5,24 +5,6 @@ "version": "v1" }, "tags": [ - { - "name": "MLflow Experiments" - }, - { - "name": "MLflow Runs" - }, - { - "name": "MLflow Metrics" - }, - { - "name": "MLflow Artifacts" - }, - { - "name": "MLflow Registered Models" - }, - { - "name": "MLflow Model Versions" - }, { "name": "Agents" }, @@ -76,9 +58,6 @@ }, { "name": "Toolsets" - }, - { - "name": "TrainingJobs" } ], "paths": { @@ -4432,155 +4411,18 @@ } } }, - "/mlflow/api/2.0/mlflow/artifacts/list": { - "get": { - "operationId": "Artifacts_list", - "description": "List MLflow artifacts.", - "parameters": [ - { - "name": "run_id", - "in": "query", - "required": false, - "description": "MLflow run identifier.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "run_uuid", - "in": "query", - "required": false, - "description": "MLflow run UUID.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "path", - "in": "query", - "required": false, - "description": "Artifact path to list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Artifacts" - ] - } - }, - "/mlflow/api/2.0/mlflow/experiments/create": { - "post": { - "operationId": "Experiments_create", - "description": "Create an MLflow experiment.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Experiments" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/experiments/delete": { + "/openai/v1/conversations": { "post": { - "operationId": "Experiments_delete", - "description": "Delete an MLflow experiment.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], + "operationId": "createConversation", + "description": "Create a conversation.", + "parameters": [], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -4597,113 +4439,80 @@ } }, "tags": [ - "MLflow Experiments" + "Conversations" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/OpenAI.CreateConversationBody" } } } } - } - }, - "/mlflow/api/2.0/mlflow/experiments/get": { + }, "get": { - "operationId": "Experiments_get", - "description": "Get an MLflow experiment by ID.", + "operationId": "listConversations", + "description": "Returns the list of all conversations.", "parameters": [ { - "name": "experiment_id", + "name": "limit", "in": "query", "required": false, - "description": "MLflow experiment identifier.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "experiment_name", + "name": "order", "in": "query", "required": false, - "description": "MLflow experiment name.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "string" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, { - "name": "api-version", + "name": "after", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { "type": "string" }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Experiments" - ] - } - }, - "/mlflow/api/2.0/mlflow/experiments/get-by-name": { - "get": { - "operationId": "Experiments_getByName", - "description": "Get an MLflow experiment by name.", - "parameters": [ { - "name": "experiment_id", + "name": "before", "in": "query", "required": false, - "description": "MLflow experiment identifier.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, "explode": false }, { - "name": "experiment_name", + "name": "agent_name", "in": "query", "required": false, - "description": "MLflow experiment name.", + "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", "schema": { "type": "string" }, "explode": false }, { - "name": "api-version", + "name": "agent_id", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", "schema": { "type": "string" }, @@ -4716,7 +4525,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ConversationResource" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -4733,24 +4568,23 @@ } }, "tags": [ - "MLflow Experiments" + "Conversations" ] } }, - "/mlflow/api/2.0/mlflow/experiments/restore": { + "/openai/v1/conversations/{conversation_id}": { "post": { - "operationId": "Experiments_restore", - "description": "Restore a deleted MLflow experiment.", + "operationId": "updateConversation", + "description": "Update a conversation.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation to update.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -4759,7 +4593,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -4776,34 +4610,31 @@ } }, "tags": [ - "MLflow Experiments" + "Conversations" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/OpenAI.UpdateConversationBody" } } } } - } - }, - "/mlflow/api/2.0/mlflow/experiments/search": { - "post": { - "operationId": "Experiments_search", - "description": "Search MLflow experiments.", + }, + "get": { + "operationId": "getConversation", + "description": "Retrieves a conversation.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -4812,7 +4643,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -4829,34 +4660,21 @@ } }, "tags": [ - "MLflow Experiments" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/experiments/set-experiment-tag": { - "post": { - "operationId": "Experiments_setTag", - "description": "Set an MLflow experiment tag.", + "Conversations" + ] + }, + "delete": { + "operationId": "deleteConversation", + "description": "Deletes a conversation.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -4865,7 +4683,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.DeletedConversationResource" } } } @@ -4882,32 +4700,34 @@ } }, "tags": [ - "MLflow Experiments" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Conversations" + ] } }, - "/mlflow/api/2.0/mlflow/experiments/update": { + "/openai/v1/conversations/{conversation_id}/items": { "post": { - "operationId": "Experiments_update", - "description": "Update MLflow experiment metadata.", + "operationId": "createConversationItems", + "description": "Create items in a conversation with the given ID.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation on which the item needs to be created.", "schema": { "type": "string" + } + }, + { + "name": "include", + "in": "query", + "required": false, + "description": "Additional fields to include in the response.\nSee the `include` parameter for listing Conversation items for more information.", + "schema": { + "type": "array", + "items": { + "type": "string" + } }, "explode": false } @@ -4918,7 +4738,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationItemList" } } } @@ -4935,83 +4755,94 @@ } }, "tags": [ - "MLflow Experiments" + "Conversations" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Item" + }, + "maxItems": 20, + "description": "The items to add to the conversation. You may add up to 20 items at a time." + } + }, + "required": [ + "items" + ] } } } } - } - }, - "/mlflow/api/2.0/mlflow/metrics/get-history": { + }, "get": { - "operationId": "Metrics_getHistory", - "description": "Get MLflow metric history.", + "operationId": "listConversationItems", + "description": "List all items for a conversation with the given ID.", "parameters": [ { - "name": "run_id", - "in": "query", - "required": false, - "description": "MLflow run identifier.", + "name": "conversation_id", + "in": "path", + "required": true, + "description": "The id of the conversation on which the items needs to be listed.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "run_uuid", + "name": "limit", "in": "query", "required": false, - "description": "MLflow run UUID.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "metric_key", + "name": "order", "in": "query", "required": false, - "description": "Metric key.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "string" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, { - "name": "max_results", + "name": "after", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, { - "name": "page_token", + "name": "before", "in": "query", "required": false, - "description": "Token used to retrieve the next page of metric points.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, "explode": false }, { - "name": "api-version", + "name": "item_type", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Filter by item type. If provided, only items of the specified type will be returned.", "schema": { - "type": "string" + "$ref": "#/components/schemas/OpenAI.ItemType" }, "explode": false } @@ -5022,7 +4853,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.OutputItem" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -5039,24 +4896,32 @@ } }, "tags": [ - "MLflow Metrics" + "Conversations" ] } }, - "/mlflow/api/2.0/mlflow/model-versions/create": { - "post": { - "operationId": "ModelVersions_create", - "description": "Create an MLflow model version.", + "/openai/v1/conversations/{conversation_id}/items/{item_id}": { + "get": { + "operationId": "getConversationItem", + "description": "Get a single item from a conversation with the given IDs.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the conversation that contains the item.", "schema": { "type": "string" - }, - "explode": false + } + }, + { + "name": "item_id", + "in": "path", + "required": true, + "description": "The id of the conversation item to retrieve.", + "schema": { + "type": "string" + } } ], "responses": { @@ -5065,7 +4930,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.OutputItem" } } } @@ -5082,54 +4947,30 @@ } }, "tags": [ - "MLflow Model Versions" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/model-versions/delete": { + "Conversations" + ] + }, "delete": { - "operationId": "ModelVersions_delete", - "description": "Delete an MLflow model version.", + "operationId": "deleteConversationItem", + "description": "Delete an item from a conversation with the given IDs.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "version", - "in": "query", - "required": false, - "description": "Model version.", + "name": "conversation_id", + "in": "path", + "required": true, + "description": "The id of the conversation on which the item needs to be deleted from.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", - "in": "query", + "name": "item_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation item to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -5138,7 +4979,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -5155,171 +4996,70 @@ } }, "tags": [ - "MLflow Model Versions" + "Conversations" ] } }, - "/mlflow/api/2.0/mlflow/model-versions/delete-tag": { - "delete": { - "operationId": "ModelVersions_deleteTag", - "description": "Delete an MLflow model-version tag.", + "/openai/v1/evals": { + "get": { + "operationId": "Evals_listEvals", + "summary": "List all evaluations", + "description": "List evaluations for a project.", "parameters": [ { - "name": "name", + "name": "after", "in": "query", "required": false, - "description": "Registered model name.", + "description": "Identifier for the last run from the previous pagination request.", "schema": { "type": "string" }, "explode": false }, { - "name": "version", + "name": "limit", "in": "query", "required": false, - "description": "Model version.", + "description": "Number of runs to retrieve.", "schema": { - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 }, "explode": false }, { - "name": "api-version", + "name": "order", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Model Versions" - ] - } - }, - "/mlflow/api/2.0/mlflow/model-versions/get": { - "get": { - "operationId": "ModelVersions_get", - "description": "Get an MLflow model version.", - "parameters": [ - { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" }, "explode": false }, { - "name": "version", + "name": "order_by", "in": "query", "required": false, - "description": "Model version.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "description": "Evals can be ordered by creation time or last updated time.\nUse `created_at` for creation time or `updated_at` for last updated time.", "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } + "type": "string", + "enum": [ + "created_at", + "updated_at" + ], + "default": "created_at" } } - }, - "tags": [ - "MLflow Model Versions" - ] - } - }, - "/mlflow/api/2.0/mlflow/model-versions/get-download-uri": { - "get": { - "operationId": "ModelVersions_getDownloadUri", - "description": "Get an MLflow model version download URI.", - "parameters": [ - { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "version", - "in": "query", - "required": false, - "description": "Model version.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } ], "responses": { "200": { @@ -5327,7 +5067,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Eval" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -5344,33 +5110,21 @@ } }, "tags": [ - "MLflow Model Versions" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/model-versions/get-storage-location-uri": { + }, "post": { - "operationId": "ModelVersions_getStorageLocationUri", - "description": "Get an MLflow model version storage location URI.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], + "operationId": "Evals_createEval", + "summary": "Create evaluation", + "description": "Create the structure of an evaluation that can be used to test a model's performance.\nAn evaluation is a set of testing criteria and the config for a data source, which dictates the schema of the data used in the evaluation. After creating an evaluation, you can run it on different models and model parameters. We support several types of graders and datasources.\nFor more information, see the [Evals guide](https://platform.openai.com/docs/guides/evals).", + "parameters": [], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/Eval" } } } @@ -5387,55 +5141,34 @@ } }, "tags": [ - "MLflow Model Versions" + "Evals" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/CreateEvalRequest" } } } } } }, - "/mlflow/api/2.0/mlflow/model-versions/search": { - "get": { - "operationId": "ModelVersions_search", - "description": "Search MLflow model versions.", + "/openai/v1/evals/{eval_id}": { + "delete": { + "operationId": "Evals_deleteEval", + "summary": "Delete an evaluation", + "description": "Delete an evaluation.", "parameters": [ { - "name": "max_results", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "page_token", - "in": "query", - "required": false, - "description": "Token used to retrieve the next page of results.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -5444,7 +5177,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/DeleteEvalResponse" } } } @@ -5461,24 +5194,22 @@ } }, "tags": [ - "MLflow Model Versions" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/model-versions/set-tag": { - "post": { - "operationId": "ModelVersions_setTag", - "description": "Set an MLflow model-version tag.", + }, + "get": { + "operationId": "Evals_getEval", + "summary": "Get an evaluation", + "description": "Get an evaluation by ID.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -5487,7 +5218,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/Eval" } } } @@ -5504,34 +5235,22 @@ } }, "tags": [ - "MLflow Model Versions" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/model-versions/transition-stage": { + "Evals" + ] + }, "post": { - "operationId": "ModelVersions_transitionStage", - "description": "Transition an MLflow model version stage.", + "operationId": "Evals_updateEval", + "summary": "Update an evaluation", + "description": "Update certain properties of an evaluation.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to update.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -5540,7 +5259,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/Eval" } } } @@ -5557,34 +5276,91 @@ } }, "tags": [ - "MLflow Model Versions" + "Evals" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/UpdateEvalParametersBody" } } } } } }, - "/mlflow/api/2.0/mlflow/model-versions/update": { - "patch": { - "operationId": "ModelVersions_update", - "description": "Update an MLflow model version.", + "/openai/v1/evals/{eval_id}/runs": { + "get": { + "operationId": "Evals_listRuns", + "summary": "Get a list of runs for an evaluation", + "description": "Get a list of runs for an evaluation.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to retrieve runs for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last run from the previous pagination request.", "schema": { "type": "string" }, "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of runs to retrieve.", + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" + }, + "explode": false + }, + { + "name": "status", + "in": "query", + "required": false, + "description": "Filter runs by status. One of `queued` | `in_progress` | `failed` | `completed` | `canceled`.", + "schema": { + "type": "string", + "enum": [ + "queued", + "in_progress", + "completed", + "canceled", + "failed" + ] + }, + "explode": false } ], "responses": { @@ -5593,7 +5369,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRun" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -5610,34 +5412,21 @@ } }, "tags": [ - "MLflow Model Versions" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/registered-models/create": { + "Evals" + ] + }, "post": { - "operationId": "RegisteredModels_create", - "description": "Create an MLflow registered model.", + "operationId": "Evals_createEvalRun", + "summary": "Create evaluation run", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to create a run for.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -5646,7 +5435,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRun" } } } @@ -5663,44 +5452,43 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/CreateEvalRunRequest" } } } } } }, - "/mlflow/api/2.0/mlflow/registered-models/delete": { + "/openai/v1/evals/{eval_id}/runs/{run_id}": { "delete": { - "operationId": "RegisteredModels_delete", - "description": "Delete an MLflow registered model.", + "operationId": "Evals_deleteEvalRun", + "summary": "Delete evaluation run", + "description": "Delete an eval run.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation to delete the run from.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", - "in": "query", + "name": "run_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the run to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -5709,7 +5497,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/DeleteEvalRunResponse" } } } @@ -5726,34 +5514,31 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/delete-tag": { - "delete": { - "operationId": "RegisteredModels_deleteTag", - "description": "Delete an MLflow registered-model tag.", + }, + "get": { + "operationId": "Evals_getEvalRun", + "summary": "Get an evaluation run", + "description": "Get an evaluation run by ID.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation to retrieve runs for.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", - "in": "query", + "name": "run_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the run to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -5762,7 +5547,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRun" } } } @@ -5779,34 +5564,31 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/get": { - "get": { - "operationId": "RegisteredModels_get", - "description": "Get an MLflow registered model.", + }, + "post": { + "operationId": "Evals_cancelEvalRun", + "summary": "Cancel evaluation run", + "description": "Cancel an ongoing evaluation run.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation whose run you want to cancel.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", - "in": "query", + "name": "run_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the run to cancel.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -5815,7 +5597,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRun" } } } @@ -5832,141 +5614,85 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] } }, - "/mlflow/api/2.0/mlflow/registered-models/get-latest-versions": { + "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items": { "get": { - "operationId": "RegisteredModels_getLatestVersions", - "description": "Get latest versions for an MLflow registered model.", + "operationId": "Evals_getEvalRunOutputItems", + "summary": "Get evaluation run output items", + "description": "Get a list of output items for an evaluation run.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", + "name": "eval_id", + "in": "path", + "required": true, "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", - "in": "query", + "name": "run_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the run to retrieve output items for.", "schema": { "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Registered Models" - ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/list": { - "get": { - "operationId": "RegisteredModels_list", - "description": "List MLflow registered models.", - "parameters": [ { - "name": "max_results", + "name": "after", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "Identifier for the last run from the previous pagination request.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, { - "name": "page_token", + "name": "limit", "in": "query", "required": false, - "description": "Token used to retrieve the next page of results.", + "description": "Number of runs to retrieve.", "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Registered Models" - ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/rename": { - "post": { - "operationId": "RegisteredModels_rename", - "description": "Rename an MLflow registered model.", - "parameters": [ { - "name": "api-version", + "name": "order", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" }, "explode": false + }, + { + "name": "status", + "in": "query", + "required": false, + "description": "Filter output items by status. Use `failed` to filter by failed output\nitems or `pass` to filter by passed output items.", + "schema": { + "type": "string", + "enum": [ + "fail", + "pass" + ] + } } ], "responses": { @@ -5975,7 +5701,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRunOutputItem" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -5992,55 +5744,42 @@ } }, "tags": [ - "MLflow Registered Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Evals" + ] } }, - "/mlflow/api/2.0/mlflow/registered-models/search": { + "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}": { "get": { - "operationId": "RegisteredModels_search", - "description": "Search MLflow registered models.", + "operationId": "Evals_getEvalRunOutputItem", + "summary": "Get an output item of an evaluation run", + "description": "Get an evaluation run output item by ID.", "parameters": [ { - "name": "max_results", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation to retrieve runs for.", "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false + "type": "string" + } }, { - "name": "page_token", - "in": "query", - "required": false, - "description": "Token used to retrieve the next page of results.", + "name": "run_id", + "in": "path", + "required": true, + "description": "The ID of the run to retrieve.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", - "in": "query", + "name": "output_item_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the output item to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -6049,7 +5788,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRunOutputItem" } } } @@ -6066,14 +5805,14 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] } }, - "/mlflow/api/2.0/mlflow/registered-models/set-tag": { + "/openai/v1/fine_tuning/jobs": { "post": { - "operationId": "RegisteredModels_setTag", - "description": "Set an MLflow registered-model tag.", + "operationId": "createFineTuningJob", + "description": "Creates a fine-tuning job which begins the process of creating a new model from a given dataset.\n\nResponse includes details of the enqueued job including job status and the name of the fine-tuned models once complete.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", "parameters": [ { "name": "api-version", @@ -6092,7 +5831,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -6109,78 +5848,45 @@ } }, "tags": [ - "MLflow Registered Models" + "Fine-Tuning" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/OpenAI.CreateFineTuningJobRequest" } } } } - } - }, - "/mlflow/api/2.0/mlflow/registered-models/update": { - "patch": { - "operationId": "RegisteredModels_update", - "description": "Update an MLflow registered model.", + }, + "get": { + "operationId": "listPaginatedFineTuningJobs", + "description": "List your organization's fine-tuning jobs", "parameters": [ { - "name": "api-version", + "name": "after", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Identifier for the last job from the previous pagination request.", "schema": { "type": "string" }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Registered Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/create": { - "post": { - "operationId": "Runs_create", - "description": "Create an MLflow run.", - "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of fine-tuning jobs to retrieve.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -6198,7 +5904,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ListPaginatedFineTuningJobsResponse" } } } @@ -6215,25 +5921,24 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/delete": { - "post": { - "operationId": "Runs_delete", - "description": "Delete an MLflow run.", + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}": { + "get": { + "operationId": "retrieveFineTuningJob", + "description": "Get info about a fine-tuning job.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -6251,7 +5956,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -6268,25 +5973,24 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/delete-tag": { + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel": { "post": { - "operationId": "Runs_deleteTag", - "description": "Delete an MLflow run tag.", + "operationId": "cancelFineTuningJob", + "description": "Immediately cancel a fine-tune job.", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to cancel.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -6304,7 +6008,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -6321,42 +6025,43 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/get": { + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints": { "get": { - "operationId": "Runs_get", - "description": "Get an MLflow run.", + "operationId": "listFineTuningJobCheckpoints", + "description": "List checkpoints for a fine-tuning job.", "parameters": [ { - "name": "run_id", + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to get checkpoints for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", "in": "query", "required": false, - "description": "MLflow run identifier.", + "description": "Identifier for the last checkpoint ID from the previous pagination request.", "schema": { "type": "string" }, "explode": false }, { - "name": "run_uuid", + "name": "limit", "in": "query", "required": false, - "description": "MLflow run UUID.", + "description": "Number of checkpoints to retrieve.", "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 10 }, "explode": false }, @@ -6377,7 +6082,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ListFineTuningJobCheckpointsResponse" } } } @@ -6394,121 +6099,46 @@ } }, "tags": [ - "MLflow Runs" + "Fine-Tuning" ] } }, - "/mlflow/api/2.0/mlflow/runs/log-batch": { - "post": { - "operationId": "Runs_logBatch", - "description": "Log a batch of metrics, parameters, and tags to an MLflow run.", + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events": { + "get": { + "operationId": "listFineTuningJobEvents", + "description": "Get fine-grained status updates for a fine-tuning job.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "fine_tuning_job_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the fine-tuning job to get events for.", "schema": { "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/log-inputs": { - "post": { - "operationId": "Runs_logInputs", - "description": "Log MLflow run input relationships.", - "parameters": [ { - "name": "api-version", + "name": "after", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Identifier for the last event from the previous pagination request.", "schema": { "type": "string" }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/log-metric": { - "post": { - "operationId": "Runs_logMetric", - "description": "Log one metric to an MLflow run.", - "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of events to retrieve.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -6526,7 +6156,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ListFineTuningJobEventsResponse" } } } @@ -6543,25 +6173,24 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/log-model": { + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause": { "post": { - "operationId": "Runs_logModel", - "description": "Log MLflow model metadata.", + "operationId": "pauseFineTuningJob", + "description": "Pause a running fine-tune job.", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to pause.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -6579,7 +6208,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -6596,25 +6225,24 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/log-parameter": { + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume": { "post": { - "operationId": "Runs_logParameter", - "description": "Log one parameter to an MLflow run.", + "operationId": "resumeFineTuningJob", + "description": "Resume a paused fine-tune job.", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to resume.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -6632,7 +6260,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -6649,43 +6277,27 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/restore": { + "/openai/v1/responses": { "post": { - "operationId": "Runs_restore", - "description": "Restore a deleted MLflow run.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], + "operationId": "createResponse_createResponseStream", + "parameters": [], + "description": "Creates a model response. Creates a model response (streaming response).", "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.Response" + } + }, + "text/event-stream": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" } } } @@ -6702,2330 +6314,254 @@ } }, "tags": [ - "MLflow Runs" + "Responses" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/search": { - "post": { - "operationId": "Runs_search", - "description": "Search MLflow runs.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/set-tag": { - "post": { - "operationId": "Runs_setTag", - "description": "Set an MLflow run tag.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/update": { - "post": { - "operationId": "Runs_update", - "description": "Update MLflow run metadata or status.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/openai/v1/conversations": { - "post": { - "operationId": "createConversation", - "description": "Create a conversation.", - "parameters": [], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateConversationBody" - } - } - } - } - }, - "get": { - "operationId": "listConversations", - "description": "Returns the list of all conversations.", - "parameters": [ - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "agent_name", - "in": "query", - "required": false, - "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "agent_id", - "in": "query", - "required": false, - "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" + "anyOf": [ + { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." + "top_logprobs": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "temperature": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "top_p": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "user": { + "type": "string", + "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", + "deprecated": true + }, + "safety_identifier": { + "type": "string", + "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." + }, + "prompt_cache_key": { + "type": "string", + "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." + }, + "service_tier": { + "$ref": "#/components/schemas/OpenAI.ServiceTier" + }, + "prompt_cache_retention": { + "type": "string", + "enum": [ + "in-memory", + "24h" + ], + "nullable": true + }, + "previous_response_id": { + "type": "string", + "nullable": true + }, + "model": { + "type": "string", + "description": "The model deployment to use for the creation of this response." + }, + "reasoning": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Reasoning" + } + ], + "nullable": true + }, + "background": { + "type": "boolean", + "nullable": true + }, + "max_output_tokens": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "max_tool_calls": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "text": { + "$ref": "#/components/schemas/OpenAI.ResponseTextParam" + }, + "tools": { + "$ref": "#/components/schemas/OpenAI.ToolsArray" + }, + "tool_choice": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" + }, + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" + } + ] + }, + "prompt": { + "$ref": "#/components/schemas/OpenAI.Prompt" + }, + "truncation": { + "type": "string", + "enum": [ + "auto", + "disabled" + ], + "nullable": true, + "default": "disabled" + }, + "input": { + "$ref": "#/components/schemas/OpenAI.InputParam" + }, + "include": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "nullable": true + }, + "parallel_tool_calls": { + "type": "boolean", + "nullable": true, + "default": true + }, + "store": { + "type": "boolean", + "nullable": true, + "default": true + }, + "instructions": { + "type": "string", + "nullable": true + }, + "stream": { + "type": "boolean", + "nullable": true + }, + "stream_options": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" + } + ], + "nullable": true + }, + "conversation": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ConversationParam" + } + ], + "nullable": true + }, + "context_management": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ContextManagementParam" + }, + "nullable": true, + "description": "Context management configuration for this request." + }, + "agent_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "The agent to use for generating the response." + }, + "structured_inputs": { + "type": "object", + "additionalProperties": {}, + "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." + } } }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ] - } - }, - "/openai/v1/conversations/{conversation_id}": { - "post": { - "operationId": "updateConversation", - "description": "Update a conversation.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation to update.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.UpdateConversationBody" - } - } - } - } - }, - "get": { - "operationId": "getConversation", - "description": "Retrieves a conversation.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation to retrieve.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ] - }, - "delete": { - "operationId": "deleteConversation", - "description": "Deletes a conversation.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation to delete.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.DeletedConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ] - } - }, - "/openai/v1/conversations/{conversation_id}/items": { - "post": { - "operationId": "createConversationItems", - "description": "Create items in a conversation with the given ID.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation on which the item needs to be created.", - "schema": { - "type": "string" - } - }, - { - "name": "include", - "in": "query", - "required": false, - "description": "Additional fields to include in the response.\nSee the `include` parameter for listing Conversation items for more information.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationItemList" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Item" - }, - "maxItems": 20, - "description": "The items to add to the conversation. You may add up to 20 items at a time." - } - }, - "required": [ - "items" - ] - } - } - } - } - }, - "get": { - "operationId": "listConversationItems", - "description": "List all items for a conversation with the given ID.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation on which the items needs to be listed.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "item_type", - "in": "query", - "required": false, - "description": "Filter by item type. If provided, only items of the specified type will be returned.", - "schema": { - "$ref": "#/components/schemas/OpenAI.ItemType" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.OutputItem" + { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ] - } - }, - "/openai/v1/conversations/{conversation_id}/items/{item_id}": { - "get": { - "operationId": "getConversationItem", - "description": "Get a single item from a conversation with the given IDs.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The ID of the conversation that contains the item.", - "schema": { - "type": "string" - } - }, - { - "name": "item_id", - "in": "path", - "required": true, - "description": "The id of the conversation item to retrieve.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.OutputItem" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ] - }, - "delete": { - "operationId": "deleteConversationItem", - "description": "Delete an item from a conversation with the given IDs.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation on which the item needs to be deleted from.", - "schema": { - "type": "string" - } - }, - { - "name": "item_id", - "in": "path", - "required": true, - "description": "The id of the conversation item to delete.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ] - } - }, - "/openai/v1/evals": { - "get": { - "operationId": "Evals_listEvals", - "summary": "List all evaluations", - "description": "List evaluations for a project.", - "parameters": [ - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last run from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of runs to retrieve.", - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", - "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" - }, - "explode": false - }, - { - "name": "order_by", - "in": "query", - "required": false, - "description": "Evals can be ordered by creation time or last updated time.\nUse `created_at` for creation time or `updated_at` for last updated time.", - "schema": { - "type": "string", - "enum": [ - "created_at", - "updated_at" - ], - "default": "created_at" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Eval" + "top_logprobs": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - }, - "post": { - "operationId": "Evals_createEval", - "summary": "Create evaluation", - "description": "Create the structure of an evaluation that can be used to test a model's performance.\nAn evaluation is a set of testing criteria and the config for a data source, which dictates the schema of the data used in the evaluation. After creating an evaluation, you can run it on different models and model parameters. We support several types of graders and datasources.\nFor more information, see the [Evals guide](https://platform.openai.com/docs/guides/evals).", - "parameters": [], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Eval" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateEvalRequest" - } - } - } - } - } - }, - "/openai/v1/evals/{eval_id}": { - "delete": { - "operationId": "Evals_deleteEval", - "summary": "Delete an evaluation", - "description": "Delete an evaluation.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to delete.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteEvalResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - }, - "get": { - "operationId": "Evals_getEval", - "summary": "Get an evaluation", - "description": "Get an evaluation by ID.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to retrieve.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Eval" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - }, - "post": { - "operationId": "Evals_updateEval", - "summary": "Update an evaluation", - "description": "Update certain properties of an evaluation.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to update.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Eval" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateEvalParametersBody" - } - } - } - } - } - }, - "/openai/v1/evals/{eval_id}/runs": { - "get": { - "operationId": "Evals_listRuns", - "summary": "Get a list of runs for an evaluation", - "description": "Get a list of runs for an evaluation.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to retrieve runs for.", - "schema": { - "type": "string" - } - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last run from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of runs to retrieve.", - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", - "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" - }, - "explode": false - }, - { - "name": "status", - "in": "query", - "required": false, - "description": "Filter runs by status. One of `queued` | `in_progress` | `failed` | `completed` | `canceled`.", - "schema": { - "type": "string", - "enum": [ - "queued", - "in_progress", - "completed", - "canceled", - "failed" - ] - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRun" + "temperature": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - }, - "post": { - "operationId": "Evals_createEvalRun", - "summary": "Create evaluation run", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to create a run for.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EvalRun" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateEvalRunRequest" - } - } - } - } - } - }, - "/openai/v1/evals/{eval_id}/runs/{run_id}": { - "delete": { - "operationId": "Evals_deleteEvalRun", - "summary": "Delete evaluation run", - "description": "Delete an eval run.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to delete the run from.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", - "required": true, - "description": "The ID of the run to delete.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteEvalRunResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - }, - "get": { - "operationId": "Evals_getEvalRun", - "summary": "Get an evaluation run", - "description": "Get an evaluation run by ID.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to retrieve runs for.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", - "required": true, - "description": "The ID of the run to retrieve.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EvalRun" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - }, - "post": { - "operationId": "Evals_cancelEvalRun", - "summary": "Cancel evaluation run", - "description": "Cancel an ongoing evaluation run.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation whose run you want to cancel.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", - "required": true, - "description": "The ID of the run to cancel.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EvalRun" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - } - }, - "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items": { - "get": { - "operationId": "Evals_getEvalRunOutputItems", - "summary": "Get evaluation run output items", - "description": "Get a list of output items for an evaluation run.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", - "required": true, - "description": "The ID of the run to retrieve output items for.", - "schema": { - "type": "string" - } - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last run from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of runs to retrieve.", - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", - "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" - }, - "explode": false - }, - { - "name": "status", - "in": "query", - "required": false, - "description": "Filter output items by status. Use `failed` to filter by failed output\nitems or `pass` to filter by passed output items.", - "schema": { - "type": "string", - "enum": [ - "fail", - "pass" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRunOutputItem" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - } - }, - "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}": { - "get": { - "operationId": "Evals_getEvalRunOutputItem", - "summary": "Get an output item of an evaluation run", - "description": "Get an evaluation run output item by ID.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to retrieve runs for.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", - "required": true, - "description": "The ID of the run to retrieve.", - "schema": { - "type": "string" - } - }, - { - "name": "output_item_id", - "in": "path", - "required": true, - "description": "The ID of the output item to retrieve.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EvalRunOutputItem" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - } - }, - "/openai/v1/fine_tuning/jobs": { - "post": { - "operationId": "createFineTuningJob", - "description": "Creates a fine-tuning job which begins the process of creating a new model from a given dataset.\n\nResponse includes details of the enqueued job including job status and the name of the fine-tuned models once complete.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateFineTuningJobRequest" - } - } - } - } - }, - "get": { - "operationId": "listPaginatedFineTuningJobs", - "description": "List your organization's fine-tuning jobs", - "parameters": [ - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last job from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of fine-tuning jobs to retrieve.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ListPaginatedFineTuningJobsResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}": { - "get": { - "operationId": "retrieveFineTuningJob", - "description": "Get info about a fine-tuning job.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", - "parameters": [ - { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel": { - "post": { - "operationId": "cancelFineTuningJob", - "description": "Immediately cancel a fine-tune job.", - "parameters": [ - { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to cancel.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints": { - "get": { - "operationId": "listFineTuningJobCheckpoints", - "description": "List checkpoints for a fine-tuning job.", - "parameters": [ - { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to get checkpoints for.", - "schema": { - "type": "string" - } - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last checkpoint ID from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of checkpoints to retrieve.", - "schema": { - "type": "integer", - "format": "int32", - "default": 10 - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ListFineTuningJobCheckpointsResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events": { - "get": { - "operationId": "listFineTuningJobEvents", - "description": "Get fine-grained status updates for a fine-tuning job.", - "parameters": [ - { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to get events for.", - "schema": { - "type": "string" - } - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last event from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of events to retrieve.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ListFineTuningJobEventsResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause": { - "post": { - "operationId": "pauseFineTuningJob", - "description": "Pause a running fine-tune job.", - "parameters": [ - { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to pause.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume": { - "post": { - "operationId": "resumeFineTuningJob", - "description": "Resume a paused fine-tune job.", - "parameters": [ - { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to resume.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/responses": { - "post": { - "operationId": "createResponse_createResponseStream", - "parameters": [], - "description": "Creates a model response. Creates a model response (streaming response).", - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.Response" - } - }, - "text/event-stream": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "anyOf": [ - { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "top_logprobs": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "temperature": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "top_p": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "user": { - "type": "string", - "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", - "deprecated": true - }, - "safety_identifier": { - "type": "string", - "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." - }, - "prompt_cache_key": { - "type": "string", - "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." - }, - "service_tier": { - "$ref": "#/components/schemas/OpenAI.ServiceTier" - }, - "prompt_cache_retention": { - "type": "string", - "enum": [ - "in-memory", - "24h" - ], - "nullable": true - }, - "previous_response_id": { - "type": "string", - "nullable": true - }, - "model": { - "type": "string", - "description": "The model deployment to use for the creation of this response." - }, - "reasoning": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Reasoning" - } - ], - "nullable": true - }, - "background": { - "type": "boolean", - "nullable": true - }, - "max_output_tokens": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "max_tool_calls": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "text": { - "$ref": "#/components/schemas/OpenAI.ResponseTextParam" - }, - "tools": { - "$ref": "#/components/schemas/OpenAI.ToolsArray" - }, - "tool_choice": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" - }, - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" - } - ] - }, - "prompt": { - "$ref": "#/components/schemas/OpenAI.Prompt" - }, - "truncation": { - "type": "string", - "enum": [ - "auto", - "disabled" - ], - "nullable": true, - "default": "disabled" - }, - "input": { - "$ref": "#/components/schemas/OpenAI.InputParam" - }, - "include": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "nullable": true - }, - "parallel_tool_calls": { - "type": "boolean", - "nullable": true, - "default": true - }, - "store": { - "type": "boolean", - "nullable": true, - "default": true - }, - "instructions": { - "type": "string", - "nullable": true - }, - "stream": { - "type": "boolean", - "nullable": true - }, - "stream_options": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" - } - ], - "nullable": true - }, - "conversation": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ConversationParam" - } - ], - "nullable": true - }, - "context_management": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ContextManagementParam" - }, - "nullable": true, - "description": "Context management configuration for this request." - }, - "agent_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "The agent to use for generating the response." - }, - "structured_inputs": { - "type": "object", - "additionalProperties": {}, - "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." - } - } - }, - { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "top_logprobs": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "temperature": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "top_p": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 + "top_p": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 }, "user": { "type": "string", @@ -9132,3110 +6668,137 @@ "type": "boolean", "nullable": true, "default": true - }, - "store": { - "type": "boolean", - "nullable": true, - "default": true - }, - "instructions": { - "type": "string", - "nullable": true - }, - "stream": { - "type": "boolean", - "nullable": true - }, - "stream_options": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" - } - ], - "nullable": true - }, - "conversation": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ConversationParam" - } - ], - "nullable": true - }, - "context_management": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ContextManagementParam" - }, - "nullable": true, - "description": "Context management configuration for this request." - }, - "agent_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "The agent to use for generating the response." - }, - "structured_inputs": { - "type": "object", - "additionalProperties": {}, - "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." - } - } - } - ] - } - } - } - } - }, - "get": { - "operationId": "listResponses", - "description": "Returns the list of all responses.", - "parameters": [ - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "agent_name", - "in": "query", - "required": false, - "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "agent_id", - "in": "query", - "required": false, - "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "conversation_id", - "in": "query", - "required": false, - "description": "Filter by conversation ID. If provided, only responses associated with the specified conversation will be returned.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Response" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ] - } - }, - "/openai/v1/responses/compact": { - "post": { - "operationId": "compactResponseConversation", - "description": "Produces a compaction of a responses conversation.", - "parameters": [], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CompactResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CompactResponseMethodPublicBody" - } - } - } - } - } - }, - "/openai/v1/responses/{response_id}": { - "get": { - "operationId": "getResponse_getResponseStream", - "parameters": [ - { - "name": "response_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "include[]", - "in": "query", - "required": false, - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "default": [] - } - }, - { - "name": "stream", - "in": "query", - "required": false, - "schema": { - "type": "boolean", - "default": false - }, - "explode": false - }, - { - "name": "starting_after", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "accept", - "in": "header", - "required": false, - "schema": { - "type": "string", - "enum": [ - "text/event-stream" - ] - } - } - ], - "description": "Retrieves a model response with the given ID. Retrieves a model response with the given ID (streaming response).", - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.Response" - } - }, - "text/event-stream": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ] - }, - "delete": { - "operationId": "deleteResponse", - "description": "Deletes a model response.", - "parameters": [ - { - "name": "response_id", - "in": "path", - "required": true, - "description": "The ID of the response to delete.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteResponseResult" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ] - } - }, - "/openai/v1/responses/{response_id}/cancel": { - "post": { - "operationId": "cancelResponse", - "description": "Cancels a model response.", - "parameters": [ - { - "name": "response_id", - "in": "path", - "required": true, - "description": "The ID of the response to cancel.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.Response" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ] - } - }, - "/openai/v1/responses/{response_id}/input_items": { - "get": { - "operationId": "listInputItems", - "description": "Returns a list of input items for a given response.", - "parameters": [ - { - "name": "response_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ItemResource" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ] - } - }, - "/redTeams/runs": { - "get": { - "operationId": "RedTeams_list", - "description": "List a redteam by name.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "RedTeams=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedRedTeam" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Redteams" - ] - } - }, - "/redTeams/runs/{name}": { - "get": { - "operationId": "RedTeams_get", - "description": "Get a redteam by name.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", - "in": "path", - "required": true, - "description": "Identifier of the red team run.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "RedTeams=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RedTeam" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Redteams" - ] - } - }, - "/redTeams/runs:run": { - "post": { - "operationId": "RedTeams_create", - "description": "Creates a redteam run.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "RedTeams=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RedTeam" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Redteams" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RedTeam" - } - } - }, - "description": "Redteam to be run" - } - } - }, - "/schedules": { - "get": { - "operationId": "Schedules_list", - "description": "List all schedules.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "type", - "in": "query", - "required": false, - "description": "Filter by the type of schedule.", - "schema": { - "$ref": "#/components/schemas/ScheduleTaskType" - }, - "explode": false - }, - { - "name": "enabled", - "in": "query", - "required": false, - "description": "Filter by the enabled status.", - "schema": { - "type": "boolean" - }, - "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedSchedule" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - } - }, - "/schedules/{id}": { - "delete": { - "operationId": "Schedules_delete", - "description": "Delete a schedule.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "id", - "in": "path", - "required": true, - "description": "Identifier of the schedule.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - } - ], - "responses": { - "204": { - "description": "There is no content to send for this request, but the headers may be useful." - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - }, - "get": { - "operationId": "Schedules_get", - "description": "Get a schedule by id.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "id", - "in": "path", - "required": true, - "description": "Identifier of the schedule.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - }, - "put": { - "operationId": "Schedules_createOrUpdate", - "description": "Create or update operation template.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "id", - "in": "path", - "required": true, - "description": "Identifier of the schedule.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - } - }, - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Schedules" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - }, - "description": "The resource instance." - } - } - }, - "/schedules/{id}/runs": { - "get": { - "operationId": "Schedules_listRuns", - "description": "List all schedule runs.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "id", - "in": "path", - "required": true, - "description": "Identifier of the schedule.", - "schema": { - "type": "string" - } - }, - { - "name": "type", - "in": "query", - "required": false, - "description": "Filter by the type of schedule.", - "schema": { - "$ref": "#/components/schemas/ScheduleTaskType" - }, - "explode": false - }, - { - "name": "enabled", - "in": "query", - "required": false, - "description": "Filter by the enabled status.", - "schema": { - "type": "boolean" - }, - "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedScheduleRun" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - } - }, - "/schedules/{schedule_id}/runs/{run_id}": { - "get": { - "operationId": "Schedules_getRun", - "description": "Get a schedule run by id.", - "parameters": [ - { - "name": "schedule_id", - "in": "path", - "required": true, - "description": "The unique identifier of the schedule.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", - "required": true, - "description": "The unique identifier of the schedule run.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ScheduleRun" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - } - }, - "/skills": { - "post": { - "operationId": "Skills_createSkill", - "description": "Creates a skill.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillObject" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 63, - "description": "The unique name of the skill." - }, - "description": { - "type": "string", - "maxLength": 1024, - "description": "A human-readable description of the skill." - }, - "instructions": { - "type": "string", - "maxLength": 102400, - "description": "Instructions that define the behavior of the skill." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of key-value pairs associated with the skill." - } - }, - "required": [ - "name" - ] - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - }, - "get": { - "operationId": "Skills_listSkills", - "description": "Returns the list of all skills.", - "parameters": [ - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SkillObject" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - } - }, - "/skills/{skill_name}": { - "get": { - "operationId": "Skills_getSkill", - "description": "Retrieves a skill.", - "parameters": [ - { - "name": "skill_name", - "in": "path", - "required": true, - "description": "The unique name of the skill.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillObject" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - }, - "post": { - "operationId": "Skills_updateSkill", - "description": "Updates an existing skill.", - "parameters": [ - { - "name": "skill_name", - "in": "path", - "required": true, - "description": "The unique name of the skill.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillObject" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 1024, - "description": "A human-readable description of the skill." - }, - "instructions": { - "type": "string", - "maxLength": 102400, - "description": "Instructions that define the behavior of the skill." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of key-value pairs associated with the skill." - } - } - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - }, - "delete": { - "operationId": "Skills_deleteSkill", - "description": "Deletes a skill.", - "parameters": [ - { - "name": "skill_name", - "in": "path", - "required": true, - "description": "The unique name of the skill.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteSkillResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - } - }, - "/skills/{skill_name}:download": { - "get": { - "operationId": "Skills_downloadSkill", - "description": "Downloads a skill package.", - "parameters": [ - { - "name": "skill_name", - "in": "path", - "required": true, - "description": "The unique name of the skill.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The response body for downloading a skill package.", - "content": { - "application/gzip": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - } - }, - "/skills:import": { - "post": { - "operationId": "Skills_createSkillFromPackage", - "description": "Creates a skill from a GZip package.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillObject" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/gzip": { - "schema": { - "type": "string", - "format": "binary" - } - } - }, - "description": "The GZip package used to create the skill." - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - } - }, - "/toolsets": { - "post": { - "operationId": "createToolset", - "description": "Create a toolset.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ToolsetObject" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Toolsets" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the toolset." - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the toolset." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the toolset." - }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" - }, - "description": "The list of tools to include in the toolset." - } - }, - "required": [ - "name", - "tools" - ] - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - }, - "get": { - "operationId": "listToolsets", - "description": "List all toolsets.", - "parameters": [ - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ToolsetObject" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - } - }, - "/toolsets/{tool_set_name}": { - "post": { - "operationId": "updateToolset", - "description": "Update a toolset.", - "parameters": [ - { - "name": "tool_set_name", - "in": "path", - "required": true, - "description": "The name of the toolset to update.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ToolsetObject" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Toolsets" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the toolset." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the toolset." - }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" - }, - "description": "The list of tools to include in the toolset." - } - }, - "required": [ - "tools" - ] - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - }, - "get": { - "operationId": "getToolset", - "description": "Retrieve a toolset.", - "parameters": [ - { - "name": "tool_set_name", - "in": "path", - "required": true, - "description": "The name of the toolset to retrieve.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ToolsetObject" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - }, - "delete": { - "operationId": "deleteToolset", - "description": "Delete a toolset.", - "parameters": [ - { - "name": "tool_set_name", - "in": "path", - "required": true, - "description": "The name of the toolset to delete.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteToolsetResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - } - }, - "/trainingJobs": { - "get": { - "operationId": "TrainingJobs_list", - "description": "List training jobs.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "jobType", - "in": "query", - "required": false, - "description": "Filter by job type (e.g. 'Command').", - "schema": { - "$ref": "#/components/schemas/JobType" - }, - "explode": false - }, - { - "name": "tag", - "in": "query", - "required": false, - "description": "Filter jobs by tag in the format 'key=value' (e.g., 'framework=pytorch').", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "listViewType", - "in": "query", - "required": false, - "description": "Specifies which view type to apply when listing jobs.", - "schema": { - "$ref": "#/components/schemas/ListViewType" - }, - "explode": false - }, - { - "name": "properties", - "in": "query", - "required": false, - "description": "Comma-separated user property names and optionally values. Example: prop1,prop2=value2.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJob" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - }, - "post": { - "operationId": "TrainingJobs_create", - "description": "Create and execute a model training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry job creation.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Job" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobCreate" - } - } - }, - "description": "The training job to create." - } - } - }, - "/trainingJobs/operations/{operationId}/result": { - "get": { - "operationId": "TrainingJobOperations_getOperationResult", - "description": "Poll the result of an asynchronous training job operation.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "operationId", - "in": "path", - "required": true, - "description": "The operation identifier returned by a training job create, cancel, or delete request.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobOperationResource" - } - } - } - }, - "202": { - "description": "Response returned when a training job operation is still in progress.", - "headers": { - "Location": { - "required": false, - "description": "URL to poll for the operation result.", - "schema": { - "type": "string" - } - }, - "Operation-Location": { - "required": false, - "description": "URL to poll for the operation status.", - "schema": { - "type": "string" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/operations/{operationId}/status": { - "get": { - "operationId": "TrainingJobOperations_getOperationStatus", - "description": "Poll the status of an asynchronous training job operation.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "operationId", - "in": "path", - "required": true, - "description": "The operation identifier returned by a training job create, cancel, or delete request.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobOperationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/artifacts": { - "get": { - "operationId": "TrainingJobArtifacts_listArtifacts", - "description": "List artifacts for the current view of a training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "pathPrefix", - "in": "query", - "required": false, - "description": "Artifact path prefix to list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/artifacts:content": { - "get": { - "operationId": "TrainingJobArtifacts_downloadArtifact", - "description": "Download training job artifact content.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/octet-stream": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/artifacts:contentInfo": { - "get": { - "operationId": "TrainingJobArtifacts_getArtifactContentInfo", - "description": "Get download information for a training job artifact.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobArtifactContentInfo" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/artifacts:contentInfoByPrefix": { - "get": { - "operationId": "TrainingJobArtifacts_getArtifactContentInfoByPrefix", - "description": "List download information for training job artifacts under a path prefix.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "pathPrefix", - "in": "query", - "required": false, - "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobArtifactContentInfo" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/artifacts:metadata": { - "get": { - "operationId": "TrainingJobArtifacts_getArtifactMetadata", - "description": "Get metadata for a training job artifact.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobArtifact" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } + }, + "store": { + "type": "boolean", + "nullable": true, + "default": true + }, + "instructions": { + "type": "string", + "nullable": true + }, + "stream": { + "type": "boolean", + "nullable": true + }, + "stream_options": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" + } + ], + "nullable": true + }, + "conversation": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ConversationParam" + } + ], + "nullable": true + }, + "context_management": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ContextManagementParam" + }, + "nullable": true, + "description": "Context management configuration for this request." + }, + "agent_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "The agent to use for generating the response." + }, + "structured_inputs": { + "type": "object", + "additionalProperties": {}, + "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." + } + } + } + ] } } } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/metrics": { + } + }, "get": { - "operationId": "TrainingJobMetrics_listMetrics", - "description": "List metrics emitted by the current view of a training job.", + "operationId": "listResponses", + "description": "Returns the list of all responses.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, { "name": "limit", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { "type": "integer", - "format": "int32" + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "skipToken", + "name": "order", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "string" + "$ref": "#/components/schemas/PageOrder" }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobMetric" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/metrics/{metricName}": { - "get": { - "operationId": "TrainingJobMetrics_getMetric", - "description": "Get the full history for a training job metric.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } }, { - "name": "startTimeUtc", + "name": "after", "in": "query", "required": false, - "description": "Start of the metric time range.", + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { - "type": "string", - "format": "date-time" + "type": "string" }, "explode": false }, { - "name": "endTimeUtc", + "name": "before", "in": "query", "required": false, - "description": "End of the metric time range.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { - "type": "string", - "format": "date-time" + "type": "string" }, "explode": false }, { - "name": "minStep", + "name": "agent_name", "in": "query", "required": false, - "description": "Minimum metric step to include.", + "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "maxStep", + "name": "agent_id", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "conversation_id", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "description": "Filter by conversation ID. If provided, only responses associated with the specified conversation will be returned.", "schema": { "type": "string" }, @@ -12248,7 +6811,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Response" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -12265,118 +6854,22 @@ } }, "tags": [ - "TrainingJobs" + "Responses" ] } }, - "/trainingJobs/{jobName}/metrics/{metricName}:aggregates": { - "get": { - "operationId": "TrainingJobMetrics_getMetricAggregates", - "description": "Get aggregate values for a training job metric.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], + "/openai/v1/responses/compact": { + "post": { + "operationId": "compactResponseConversation", + "description": "Produces a compaction of a responses conversation.", + "parameters": [], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" + "$ref": "#/components/schemas/OpenAI.CompactResource" } } } @@ -12393,94 +6886,58 @@ } }, "tags": [ - "TrainingJobs" - ] + "Responses" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CompactResponseMethodPublicBody" + } + } + } + } } }, - "/trainingJobs/{jobName}/metrics/{metricName}:sample": { + "/openai/v1/responses/{response_id}": { "get": { - "operationId": "TrainingJobMetrics_getMetricSample", - "description": "Get one sampled value or window for a training job metric.", + "operationId": "getResponse_getResponseStream", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", + "name": "response_id", "in": "path", "required": true, - "description": "The metric name.", "schema": { "type": "string" } }, { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", + "name": "include[]", "in": "query", "required": false, - "description": "Minimum metric step to include.", "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "default": [] + } }, { - "name": "maxStep", + "name": "stream", "in": "query", "required": false, - "description": "Maximum metric step to include.", "schema": { - "type": "integer", - "format": "int64" + "type": "boolean", + "default": false }, "explode": false }, { - "name": "limit", + "name": "starting_after", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", "schema": { "type": "integer", "format": "int32" @@ -12488,151 +6945,30 @@ "explode": false }, { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobMetricSample" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/metrics/{metricName}:samples": { - "get": { - "operationId": "TrainingJobMetrics_getMetricSamples", - "description": "Get sampled values for a training job metric.", - "parameters": [ - { - "name": "Foundry-Features", + "name": "accept", "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "required": false, "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "text/event-stream" ] } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], + "description": "Retrieves a model response with the given ID. Retrieves a model response with the given ID (streaming response).", "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/OpenAI.Response" + } + }, + "text/event-stream": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" } } } @@ -12649,45 +6985,21 @@ } }, "tags": [ - "TrainingJobs" + "Responses" ] - } - }, - "/trainingJobs/{jobName}/metrics:lastValues": { - "get": { - "operationId": "TrainingJobMetrics_getMetricLastValues", - "description": "Get the latest values for metrics emitted by the current view of a training job.", + }, + "delete": { + "operationId": "deleteResponse", + "description": "Deletes a model response.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", + "name": "response_id", "in": "path", "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the response to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -12696,7 +7008,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" + "$ref": "#/components/schemas/DeleteResponseResult" } } } @@ -12713,45 +7025,23 @@ } }, "tags": [ - "TrainingJobs" + "Responses" ] } }, - "/trainingJobs/{jobName}/outputs": { - "get": { - "operationId": "TrainingJobOutputs_listOutputs", - "description": "List outputs produced by a training job.", + "/openai/v1/responses/{response_id}/cancel": { + "post": { + "operationId": "cancelResponse", + "description": "Cancels a model response.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", + "name": "response_id", "in": "path", "required": true, - "description": "The training job name.", + "description": "The ID of the response to cancel.", "schema": { "type": "string" } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { @@ -12760,7 +7050,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" + "$ref": "#/components/schemas/OpenAI.Response" } } } @@ -12777,50 +7067,60 @@ } }, "tags": [ - "TrainingJobs" + "Responses" ] } }, - "/trainingJobs/{jobName}/outputs/{outputName}": { + "/openai/v1/responses/{response_id}/input_items": { "get": { - "operationId": "TrainingJobOutputs_getOutput", - "description": "Get one output produced by a training job.", + "operationId": "listInputItems", + "description": "Returns a list of input items for a given response.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", + "name": "response_id", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] + "type": "string" } }, { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false }, { - "name": "outputName", - "in": "path", - "required": true, - "description": "The output name.", + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "api-version", + "name": "before", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, @@ -12833,7 +7133,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobOutputReference" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ItemResource" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -12850,15 +7176,18 @@ } }, "tags": [ - "TrainingJobs" + "Responses" ] } }, - "/trainingJobs/{jobName}/runs": { + "/redTeams/runs": { "get": { - "operationId": "TrainingJobRuns_listRuns", - "description": "List runs for a training job.", + "operationId": "RedTeams_list", + "description": "List a redteam by name.", "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, { "name": "Foundry-Features", "in": "header", @@ -12867,38 +7196,9 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "RedTeams=V1Preview" ] } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { @@ -12907,71 +7207,64 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobRun" + "$ref": "#/components/schemas/PagedRedTeam" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "TrainingJobs" + "Redteams" ] } }, - "/trainingJobs/{jobName}/runs/{runId}": { + "/redTeams/runs/{name}": { "get": { - "operationId": "TrainingJobRuns_getRun", - "description": "Get one run for a training job.", + "operationId": "RedTeams_get", + "description": "Get a redteam by name.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "jobName", + "name": "name", "in": "path", "required": true, - "description": "The training job name.", + "description": "Identifier of the red team run.", "schema": { "type": "string" } }, { - "name": "runId", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The run identifier.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "RedTeams=V1Preview" + ] } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { @@ -12980,31 +7273,40 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobRun" + "$ref": "#/components/schemas/RedTeam" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "TrainingJobs" + "Redteams" ] } }, - "/trainingJobs/{jobName}/runs/{runId}/artifacts": { - "get": { - "operationId": "TrainingJobRunArtifacts_listRunArtifacts", - "description": "List artifacts for a specific training job run.", + "/redTeams/runs:run": { + "post": { + "operationId": "RedTeams_create", + "description": "Creates a redteam run.", "parameters": [ { "name": "Foundry-Features", @@ -13014,68 +7316,98 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "RedTeams=V1Preview" ] } }, { - "name": "jobName", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The training job name.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RedTeam" + } + } } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Redteams" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RedTeam" + } } }, + "description": "Redteam to be run" + } + } + }, + "/schedules": { + "get": { + "operationId": "Schedules_list", + "description": "List all schedules.", + "parameters": [ { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "skipToken", + "name": "type", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "Filter by the type of schedule.", "schema": { - "type": "string" + "$ref": "#/components/schemas/ScheduleTaskType" }, "explode": false }, { - "name": "pathPrefix", + "name": "enabled", "in": "query", "required": false, - "description": "Artifact path prefix to list.", + "description": "Filter by the enabled status.", "schema": { - "type": "string" + "type": "boolean" }, "explode": false }, { - "name": "api-version", - "in": "query", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The API version to use for this operation.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" - }, - "explode": false + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } } ], "responses": { @@ -13084,32 +7416,53 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" + "$ref": "#/components/schemas/PagedSchedule" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "TrainingJobs" + "Schedules" ] } }, - "/trainingJobs/{jobName}/runs/{runId}/artifacts:content": { - "get": { - "operationId": "TrainingJobRunArtifacts_downloadRunArtifact", - "description": "Download artifact content from a specific training job run.", + "/schedules/{id}": { + "delete": { + "operationId": "Schedules_delete", + "description": "Delete a schedule.", "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "id", + "in": "path", + "required": true, + "description": "Identifier of the schedule.", + "schema": { + "type": "string" + } + }, { "name": "Foundry-Features", "in": "header", @@ -13118,131 +7471,130 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "Schedules=V1Preview" ] } + } + ], + "responses": { + "204": { + "description": "There is no content to send for this request, but the headers may be useful." }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } } + } + }, + "tags": [ + "Schedules" + ] + }, + "get": { + "operationId": "Schedules_get", + "description": "Get a schedule by id.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "runId", + "name": "id", "in": "path", "required": true, - "description": "The run identifier.", + "description": "Identifier of the schedule.", "schema": { "type": "string" } }, { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The API version to use for this operation.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" - }, - "explode": false + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } } ], "responses": { "200": { "description": "The request has succeeded.", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/Schedule" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "TrainingJobs" + "Schedules" ] - } - }, - "/trainingJobs/{jobName}/runs/{runId}/artifacts:contentInfo": { - "get": { - "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfo", - "description": "Get download information for an artifact from a specific training job run.", + }, + "put": { + "operationId": "Schedules_createOrUpdate", + "description": "Create or update operation template.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "jobName", + "name": "id", "in": "path", "required": true, - "description": "The training job name.", + "description": "Identifier of the schedule.", "schema": { "type": "string" } }, { - "name": "runId", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The run identifier.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { @@ -13251,91 +7603,105 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifactContentInfo" + "$ref": "#/components/schemas/Schedule" + } + } + } + }, + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Schedule" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "TrainingJobs" - ] + "Schedules" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Schedule" + } + } + }, + "description": "The resource instance." + } } }, - "/trainingJobs/{jobName}/runs/{runId}/artifacts:contentInfoByPrefix": { + "/schedules/{id}/runs": { "get": { - "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfoByPrefix", - "description": "List download information for artifacts under a path prefix from a specific training job run.", + "operationId": "Schedules_listRuns", + "description": "List all schedule runs.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "runId", + "name": "id", "in": "path", "required": true, - "description": "The run identifier.", + "description": "Identifier of the schedule.", "schema": { "type": "string" } }, { - "name": "pathPrefix", + "name": "type", "in": "query", "required": false, - "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", + "description": "Filter by the type of schedule.", "schema": { - "type": "string" + "$ref": "#/components/schemas/ScheduleTaskType" }, "explode": false }, { - "name": "skipToken", + "name": "enabled", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "Filter by the enabled status.", "schema": { - "type": "string" + "type": "boolean" }, "explode": false }, { - "name": "api-version", - "in": "query", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The API version to use for this operation.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" - }, - "explode": false + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } } ], "responses": { @@ -13344,71 +7710,70 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifactContentInfo" + "$ref": "#/components/schemas/PagedScheduleRun" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "TrainingJobs" + "Schedules" ] } }, - "/trainingJobs/{jobName}/runs/{runId}/artifacts:metadata": { + "/schedules/{schedule_id}/runs/{run_id}": { "get": { - "operationId": "TrainingJobRunArtifacts_getRunArtifactMetadata", - "description": "Get metadata for an artifact from a specific training job run.", + "operationId": "Schedules_getRun", + "description": "Get a schedule run by id.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", + "name": "schedule_id", "in": "path", "required": true, - "description": "The training job name.", + "description": "The unique identifier of the schedule.", "schema": { "type": "string" } }, { - "name": "runId", + "name": "run_id", "in": "path", "required": true, - "description": "The run identifier.", + "description": "The unique identifier of the schedule run.", "schema": { "type": "string" } }, { - "name": "path", - "in": "query", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The artifact path.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" - }, - "explode": false + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } }, { "name": "api-version", @@ -13427,7 +7792,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifact" + "$ref": "#/components/schemas/ScheduleRun" } } } @@ -13444,14 +7809,14 @@ } }, "tags": [ - "TrainingJobs" + "Schedules" ] } }, - "/trainingJobs/{jobName}/runs/{runId}/metrics": { - "get": { - "operationId": "TrainingJobRunMetrics_listRunMetrics", - "description": "List metrics emitted by a specific training job run.", + "/skills": { + "post": { + "operationId": "Skills_createSkill", + "description": "Creates a skill.", "parameters": [ { "name": "Foundry-Features", @@ -13461,49 +7826,10 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "Skills=V1Preview" ] } }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -13521,7 +7847,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetric" + "$ref": "#/components/schemas/SkillObject" } } } @@ -13538,108 +7864,108 @@ } }, "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}": { + "Skills" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 63, + "description": "The unique name of the skill." + }, + "description": { + "type": "string", + "maxLength": 1024, + "description": "A human-readable description of the skill." + }, + "instructions": { + "type": "string", + "maxLength": 102400, + "description": "Instructions that define the behavior of the skill." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of key-value pairs associated with the skill." + } + }, + "required": [ + "name" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + }, "get": { - "operationId": "TrainingJobRunMetrics_getRunMetric", - "description": "Get the full history for a metric from a specific training job run.", + "operationId": "Skills_listSkills", + "description": "Returns the list of all skills.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", + "name": "limit", "in": "query", "required": false, - "description": "Start of the metric time range.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string", - "format": "date-time" + "type": "integer", + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "endTimeUtc", + "name": "order", "in": "query", "required": false, - "description": "End of the metric time range.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "string", - "format": "date-time" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, { - "name": "minStep", + "name": "after", "in": "query", "required": false, - "description": "Minimum metric step to include.", + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "maxStep", + "name": "before", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } }, { "name": "api-version", @@ -13658,7 +7984,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SkillObject" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -13675,108 +8027,40 @@ } }, "tags": [ - "TrainingJobs" - ] + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } } }, - "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:aggregates": { + "/skills/{skill_name}": { "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricAggregates", - "description": "Get aggregate metric values from a specific training job run.", + "operationId": "Skills_getSkill", + "description": "Retrieves a skill.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", + "name": "skill_name", "in": "path", "required": true, - "description": "The run identifier.", + "description": "The unique name of the skill.", "schema": { "type": "string" } }, { - "name": "metricName", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false + "enum": [ + "Skills=V1Preview" + ] + } }, { "name": "api-version", @@ -13795,7 +8079,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" + "$ref": "#/components/schemas/SkillObject" } } } @@ -13812,108 +8096,38 @@ } }, "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:sample": { - "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricSample", - "description": "Get one sampled value or window from a specific training job run.", + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + }, + "post": { + "operationId": "Skills_updateSkill", + "description": "Updates an existing skill.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", + "name": "skill_name", "in": "path", "required": true, - "description": "The run identifier.", + "description": "The unique name of the skill.", "schema": { "type": "string" } }, { - "name": "metricName", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false + "enum": [ + "Skills=V1Preview" + ] + } }, { "name": "api-version", @@ -13932,7 +8146,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/SkillObject" } } } @@ -13949,108 +8163,67 @@ } }, "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:samples": { - "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricSamples", - "description": "Get sampled metric values from a specific training job run.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" + "Skills" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 1024, + "description": "A human-readable description of the skill." + }, + "instructions": { + "type": "string", + "maxLength": 102400, + "description": "Instructions that define the behavior of the skill." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of key-value pairs associated with the skill." + } + } + } } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + }, + "delete": { + "operationId": "Skills_deleteSkill", + "description": "Deletes a skill.", + "parameters": [ { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false + "type": "string" + } }, { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } }, { "name": "api-version", @@ -14069,7 +8242,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/DeleteSkillResponse" } } } @@ -14086,43 +8259,39 @@ } }, "tags": [ - "TrainingJobs" - ] + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } } }, - "/trainingJobs/{jobName}/runs/{runId}/metrics:lastValues": { + "/skills/{skill_name}:download": { "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricLastValues", - "description": "Get latest metric values for a specific training job run.", + "operationId": "Skills_downloadSkill", + "description": "Downloads a skill package.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", + "name": "skill_name", "in": "path", "required": true, - "description": "The training job name.", + "description": "The unique name of the skill.", "schema": { "type": "string" } }, { - "name": "runId", - "in": "path", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The run identifier.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "Skills=V1Preview" + ] } }, { @@ -14138,11 +8307,12 @@ ], "responses": { "200": { - "description": "The request has succeeded.", + "description": "The response body for downloading a skill package.", "content": { - "application/json": { + "application/gzip": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" + "type": "string", + "format": "binary" } } } @@ -14159,14 +8329,19 @@ } }, "tags": [ - "TrainingJobs" - ] + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } } }, - "/trainingJobs/{jobName}/runs/{runId}/outputs": { - "get": { - "operationId": "TrainingJobRunOutputs_listRunOutputs", - "description": "List outputs produced by a specific training job run.", + "/skills:import": { + "post": { + "operationId": "Skills_createSkillFromPackage", + "description": "Creates a skill from a GZip package.", "parameters": [ { "name": "Foundry-Features", @@ -14176,28 +8351,10 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "Skills=V1Preview" ] } }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -14215,7 +8372,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" + "$ref": "#/components/schemas/SkillObject" } } } @@ -14232,14 +8389,31 @@ } }, "tags": [ - "TrainingJobs" - ] + "Skills" + ], + "requestBody": { + "required": true, + "content": { + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" + } + } + }, + "description": "The GZip package used to create the skill." + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } } }, - "/trainingJobs/{jobName}/runs/{runId}/outputs/{outputName}": { - "get": { - "operationId": "TrainingJobRunOutputs_getRunOutput", - "description": "Get one output produced by a specific training job run.", + "/toolsets": { + "post": { + "operationId": "createToolset", + "description": "Create a toolset.", "parameters": [ { "name": "Foundry-Features", @@ -14249,37 +8423,10 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "Toolsets=V1Preview" ] } }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "outputName", - "in": "path", - "required": true, - "description": "The output name.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -14297,7 +8444,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/ToolsetObject" } } } @@ -14314,47 +8461,112 @@ } }, "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/services": { + "Toolsets" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the toolset." + }, + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the toolset." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the toolset." + }, + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" + }, + "description": "The list of tools to include in the toolset." + } + }, + "required": [ + "name", + "tools" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + }, "get": { - "operationId": "TrainingJobs_showServices", - "description": "List service endpoints for the current view of a training job.", + "operationId": "listToolsets", + "description": "List all toolsets.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false }, { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "nodeId", + "name": "before", "in": "query", "required": false, - "description": "Node identifier whose service endpoints should be returned. If omitted, leader-node services are returned.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, { "name": "api-version", "in": "query", @@ -14372,7 +8584,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrainingJobServiceCollection" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolsetObject" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -14389,23 +8627,25 @@ } }, "tags": [ - "TrainingJobs" - ] + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } } }, - "/trainingJobs/{name}": { - "get": { - "operationId": "TrainingJobs_get", - "description": "Get a training job by name.", + "/toolsets/{tool_set_name}": { + "post": { + "operationId": "updateToolset", + "description": "Update a toolset.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", + "name": "tool_set_name", "in": "path", "required": true, - "description": "The name of the training job. This is case-sensitive.", + "description": "The name of the toolset to update.", "schema": { "type": "string" } @@ -14418,9 +8658,19 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "Toolsets=V1Preview" ] } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -14429,47 +8679,74 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/ToolsetObject" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "TrainingJobs" - ] + "Toolsets" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the toolset." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the toolset." + }, + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" + }, + "description": "The list of tools to include in the toolset." + } + }, + "required": [ + "tools" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } }, - "delete": { - "operationId": "TrainingJobs_beginDelete", - "description": "Delete a training job by name. Returns 202 Accepted with Location and Operation-Location headers to poll for completion, or 204 if the job does not exist.", + "get": { + "operationId": "getToolset", + "description": "Retrieve a toolset.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", + "name": "tool_set_name", "in": "path", "required": true, - "description": "The name of the training job. This is case-sensitive.", + "description": "The name of the toolset to retrieve.", "schema": { "type": "string" } @@ -14482,80 +8759,61 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "Toolsets=V1Preview" ] } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { - "202": { - "description": "Response returned when a job delete operation is accepted asynchronously.", - "headers": { - "Location": { - "required": true, - "description": "URL to poll for the final result of the delete operation.", - "schema": { - "type": "string" - } - }, - "Operation-Location": { - "required": false, - "description": "URL to poll for the status of the delete operation.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "required": false, - "description": "Suggested delay in seconds before polling.", + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/ToolsetObject" } } } }, - "204": { - "description": "There is no content to send for this request, but the headers may be useful." - }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{name}:cancel": { - "post": { - "operationId": "TrainingJobs_beginCancel", - "description": "Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with Location and Operation-Location headers to poll for completion.", + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + }, + "delete": { + "operationId": "deleteToolset", + "description": "Delete a toolset.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", + "name": "tool_set_name", "in": "path", "required": true, - "description": "The name of the training job. This is case-sensitive.", + "description": "The name of the toolset to delete.", "schema": { "type": "string" } @@ -14568,65 +8826,51 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "Toolsets=V1Preview" ] } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { "200": { - "description": "The request has succeeded." - }, - "202": { - "description": "Response returned when a job cancel operation is accepted asynchronously.", - "headers": { - "Location": { - "required": true, - "description": "URL to poll for the final result of the cancel operation.", - "schema": { - "type": "string" - } - }, - "Operation-Location": { - "required": false, - "description": "URL to poll for the status of the cancel operation.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "required": false, - "description": "Suggested delay in seconds before polling.", + "description": "The request has succeeded.", + "content": { + "application/json": { "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/DeleteToolsetResponse" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "TrainingJobs" - ] + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } } } }, @@ -15242,23 +9486,6 @@ "type": "string", "description": "Identifier of a saved asset." }, - "AssetTypes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "uri_file", - "uri_folder", - "safetensors_model", - "literal" - ] - } - ], - "description": "Type of job input/output asset." - }, "AttackStrategy": { "anyOf": [ { @@ -16507,479 +10734,125 @@ ] }, "modelDeploymentName": { - "type": "string", - "description": "Deployment name for AOAI model. Example: gpt-4o if in AIServices or connection based `connection_name/deployment_name` (e.g. `my-aoai-connection/gpt-4o`)." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/TargetConfig" - } - ], - "description": "Azure OpenAI model configuration. The API version would be selected by the service for querying the model." - }, - "BaseCredentials": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/CredentialType" - } - ], - "description": "The type of credential used by the connection", - "readOnly": true - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "ApiKey": "#/components/schemas/ApiKeyCredentials", - "AAD": "#/components/schemas/EntraIDCredentials", - "CustomKeys": "#/components/schemas/CustomCredential", - "SAS": "#/components/schemas/SASCredentials", - "None": "#/components/schemas/NoAuthenticationCredentials", - "AgenticIdentityToken_Preview": "#/components/schemas/AgenticIdentityPreviewCredentials" - } - }, - "description": "A base class for connection credentials" - }, - "BenchmarkName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "builtin.gpqa_diamond", - "builtin.bbeh", - "builtin.bigbenchhard", - "builtin.frontierscience", - "builtin.musr", - "builtin.truthful_qa", - "builtin.inspect_ai.gpqa_diamond", - "builtin.inspect_ai.chembench", - "builtin.inspect_ai.aime_2025", - "builtin.inspect_ai.musr" - ] - } - ], - "description": "The set of available benchmark specifications." - }, - "BingCustomSearchConfiguration": { - "type": "object", - "required": [ - "project_connection_id", - "instance_name" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "project_connection_id": { - "type": "string", - "description": "Project connection id for grounding with bing search" - }, - "instance_name": { - "type": "string", - "description": "Name of the custom configuration instance given to config." - }, - "market": { - "type": "string", - "description": "The market where the results come from." - }, - "set_lang": { - "type": "string", - "description": "The language to use for user interface strings when calling Bing API." - }, - "count": { - "type": "integer", - "format": "int64", - "description": "The number of search results to return in the bing api response" - }, - "freshness": { - "type": "string", - "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." - } - }, - "description": "A bing custom search configuration." - }, - "BingCustomSearchPreviewTool": { - "type": "object", - "required": [ - "type", - "bing_custom_search_preview" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "bing_custom_search_preview" - ], - "description": "The object type, which is always 'bing_custom_search_preview'." - }, - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "bing_custom_search_preview": { - "allOf": [ - { - "$ref": "#/components/schemas/BingCustomSearchToolParameters" - } - ], - "description": "The bing custom search tool parameters." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Tool" - } - ], - "description": "The input definition information for a Bing custom search tool as used to configure an agent." - }, - "BingCustomSearchToolCall": { - "type": "object", - "required": [ - "type", - "call_id", - "arguments", - "status" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "bing_custom_search_preview_call" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "arguments": { - "type": "string", - "description": "A JSON string of the arguments to pass to the tool." - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } - ], - "description": "The status of the tool call." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.OutputItem" - } - ], - "description": "A Bing custom search tool call." - }, - "BingCustomSearchToolCallOutput": { - "type": "object", - "required": [ - "type", - "call_id", - "status" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "bing_custom_search_preview_call_output" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "output": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallOutputContent" - } - ], - "description": "The output from the Bing custom search tool call." - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } - ], - "description": "The status of the tool call." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.OutputItem" - } - ], - "description": "The output of a Bing custom search tool call." - }, - "BingCustomSearchToolParameters": { - "type": "object", - "required": [ - "search_configurations" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "search_configurations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BingCustomSearchConfiguration" - }, - "maxItems": 1, - "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." - } - }, - "description": "The bing custom search tool parameters." - }, - "BingGroundingSearchConfiguration": { - "type": "object", - "required": [ - "project_connection_id" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "project_connection_id": { - "type": "string", - "description": "Project connection id for grounding with bing search" - }, - "market": { - "type": "string", - "description": "The market where the results come from." - }, - "set_lang": { - "type": "string", - "description": "The language to use for user interface strings when calling Bing API." - }, - "count": { - "type": "integer", - "format": "int64", - "description": "The number of search results to return in the bing api response" - }, - "freshness": { - "type": "string", - "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." - } - }, - "description": "Search configuration for Bing Grounding" - }, - "BingGroundingSearchToolParameters": { - "type": "object", - "required": [ - "search_configurations" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "search_configurations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BingGroundingSearchConfiguration" - }, - "maxItems": 1, - "description": "The search configurations attached to this tool. There can be a maximum of 1\nsearch configuration resource attached to the tool." - } - }, - "description": "The bing grounding search tool parameters." - }, - "BingGroundingTool": { - "type": "object", - "required": [ - "type", - "bing_grounding" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "bing_grounding" - ], - "description": "The object type, which is always 'bing_grounding'." - }, - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "bing_grounding": { - "allOf": [ - { - "$ref": "#/components/schemas/BingGroundingSearchToolParameters" - } - ], - "description": "The bing grounding search tool parameters." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Tool" - } - ], - "description": "The input definition information for a bing grounding search tool as used to configure an agent." - }, - "BingGroundingToolCall": { - "type": "object", - "required": [ - "type", - "call_id", - "arguments", - "status" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "bing_grounding_call" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "arguments": { - "type": "string", - "description": "A JSON string of the arguments to pass to the tool." - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } - ], - "description": "The status of the tool call." + "type": "string", + "description": "Deployment name for AOAI model. Example: gpt-4o if in AIServices or connection based `connection_name/deployment_name` (e.g. `my-aoai-connection/gpt-4o`)." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/TargetConfig" } ], - "description": "A Bing grounding tool call." + "description": "Azure OpenAI model configuration. The API version would be selected by the service for querying the model." }, - "BingGroundingToolCallOutput": { + "BaseCredentials": { "type": "object", "required": [ - "type", - "call_id", - "status" + "type" ], "properties": { "type": { - "type": "string", - "enum": [ - "bing_grounding_call_output" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "output": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallOutputContent" - } - ], - "description": "The output from the Bing grounding tool call." - }, - "status": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/CredentialType" } ], - "description": "The status of the tool call." + "description": "The type of credential used by the connection", + "readOnly": true } }, - "allOf": [ + "discriminator": { + "propertyName": "type", + "mapping": { + "ApiKey": "#/components/schemas/ApiKeyCredentials", + "AAD": "#/components/schemas/EntraIDCredentials", + "CustomKeys": "#/components/schemas/CustomCredential", + "SAS": "#/components/schemas/SASCredentials", + "None": "#/components/schemas/NoAuthenticationCredentials", + "AgenticIdentityToken_Preview": "#/components/schemas/AgenticIdentityPreviewCredentials" + } + }, + "description": "A base class for connection credentials" + }, + "BenchmarkName": { + "anyOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "type": "string" + }, + { + "type": "string", + "enum": [ + "builtin.gpqa_diamond", + "builtin.bbeh", + "builtin.bigbenchhard", + "builtin.frontierscience", + "builtin.musr", + "builtin.truthful_qa", + "builtin.inspect_ai.gpqa_diamond", + "builtin.inspect_ai.chembench", + "builtin.inspect_ai.aime_2025", + "builtin.inspect_ai.musr" + ] } ], - "description": "The output of a Bing grounding tool call." + "description": "The set of available benchmark specifications." }, - "BlobReference": { + "BingCustomSearchConfiguration": { "type": "object", "required": [ - "blobUri", - "storageAccountArmId", - "credential" + "project_connection_id", + "instance_name" ], "properties": { - "blobUri": { + "name": { "type": "string", - "format": "uri", - "description": "Blob URI path for client to upload data. Example: `https://blob.windows.core.net/Container/Path`" + "description": "Optional user-defined name for this tool or configuration." }, - "storageAccountArmId": { + "description": { "type": "string", - "description": "ARM ID of the storage account to use." + "description": "Optional user-defined description for this tool or configuration." }, - "credential": { - "allOf": [ - { - "$ref": "#/components/schemas/SasCredential" - } - ], - "description": "Credential info to access the storage account." + "project_connection_id": { + "type": "string", + "description": "Project connection id for grounding with bing search" + }, + "instance_name": { + "type": "string", + "description": "Name of the custom configuration instance given to config." + }, + "market": { + "type": "string", + "description": "The market where the results come from." + }, + "set_lang": { + "type": "string", + "description": "The language to use for user interface strings when calling Bing API." + }, + "count": { + "type": "integer", + "format": "int64", + "description": "The number of search results to return in the bing api response" + }, + "freshness": { + "type": "string", + "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." } }, - "description": "Blob reference details." + "description": "A bing custom search configuration." }, - "BrowserAutomationPreviewTool": { + "BingCustomSearchPreviewTool": { "type": "object", "required": [ "type", - "browser_automation_preview" + "bing_custom_search_preview" ], "properties": { "type": { "type": "string", "enum": [ - "browser_automation_preview" + "bing_custom_search_preview" ], - "description": "The object type, which is always 'browser_automation_preview'." + "description": "The object type, which is always 'bing_custom_search_preview'." }, "name": { "type": "string", @@ -16989,13 +10862,13 @@ "type": "string", "description": "Optional user-defined description for this tool or configuration." }, - "browser_automation_preview": { + "bing_custom_search_preview": { "allOf": [ { - "$ref": "#/components/schemas/BrowserAutomationToolParameters" + "$ref": "#/components/schemas/BingCustomSearchToolParameters" } ], - "description": "The Browser Automation Tool parameters." + "description": "The bing custom search tool parameters." } }, "allOf": [ @@ -17003,9 +10876,9 @@ "$ref": "#/components/schemas/OpenAI.Tool" } ], - "description": "The input definition information for a Browser Automation Tool, as used to configure an Agent." + "description": "The input definition information for a Bing custom search tool as used to configure an agent." }, - "BrowserAutomationToolCall": { + "BingCustomSearchToolCall": { "type": "object", "required": [ "type", @@ -17017,7 +10890,7 @@ "type": { "type": "string", "enum": [ - "browser_automation_preview_call" + "bing_custom_search_preview_call" ] }, "call_id": { @@ -17042,9 +10915,9 @@ "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "A browser automation tool call." + "description": "A Bing custom search tool call." }, - "BrowserAutomationToolCallOutput": { + "BingCustomSearchToolCallOutput": { "type": "object", "required": [ "type", @@ -17055,7 +10928,7 @@ "type": { "type": "string", "enum": [ - "browser_automation_preview_call_output" + "bing_custom_search_preview_call_output" ] }, "call_id": { @@ -17068,7 +10941,7 @@ "$ref": "#/components/schemas/ToolCallOutputContent" } ], - "description": "The output from the browser automation tool call." + "description": "The output from the Bing custom search tool call." }, "status": { "allOf": [ @@ -17084,12 +10957,12 @@ "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "The output of a browser automation tool call." + "description": "The output of a Bing custom search tool call." }, - "BrowserAutomationToolConnectionParameters": { + "BingCustomSearchToolParameters": { "type": "object", "required": [ - "project_connection_id" + "search_configurations" ], "properties": { "name": { @@ -17100,17 +10973,21 @@ "type": "string", "description": "Optional user-defined description for this tool or configuration." }, - "project_connection_id": { - "type": "string", - "description": "The ID of the project connection to your Azure Playwright resource." + "search_configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BingCustomSearchConfiguration" + }, + "maxItems": 1, + "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." } }, - "description": "Definition of input parameters for the connection used by the Browser Automation Tool." + "description": "The bing custom search tool parameters." }, - "BrowserAutomationToolParameters": { + "BingGroundingSearchConfiguration": { "type": "object", "required": [ - "connection" + "project_connection_id" ], "properties": { "name": { @@ -17121,1111 +10998,634 @@ "type": "string", "description": "Optional user-defined description for this tool or configuration." }, - "connection": { - "allOf": [ - { - "$ref": "#/components/schemas/BrowserAutomationToolConnectionParameters" - } - ], - "description": "The project connection parameters associated with the Browser Automation Tool." - } - }, - "description": "Definition of input parameters for the Browser Automation Tool." - }, - "CaptureStructuredOutputsTool": { - "type": "object", - "required": [ - "type", - "outputs" - ], - "properties": { - "type": { + "project_connection_id": { "type": "string", - "enum": [ - "capture_structured_outputs" - ], - "description": "The type of the tool. Always `capture_structured_outputs`." + "description": "Project connection id for grounding with bing search" }, - "outputs": { - "allOf": [ - { - "$ref": "#/components/schemas/StructuredOutputDefinition" - } - ], - "description": "The structured outputs to capture from the model." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Tool" - } - ], - "description": "A tool for capturing structured outputs" - }, - "ChartCoordinate": { - "type": "object", - "required": [ - "x", - "y", - "size" - ], - "properties": { - "x": { - "type": "integer", - "format": "int32", - "description": "X-axis coordinate." + "market": { + "type": "string", + "description": "The market where the results come from." }, - "y": { - "type": "integer", - "format": "int32", - "description": "Y-axis coordinate." + "set_lang": { + "type": "string", + "description": "The language to use for user interface strings when calling Bing API." }, - "size": { + "count": { "type": "integer", - "format": "int32", - "description": "Size of the chart element." + "format": "int64", + "description": "The number of search results to return in the bing api response" + }, + "freshness": { + "type": "string", + "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." } }, - "description": "Coordinates for the analysis chart." + "description": "Search configuration for Bing Grounding" }, - "ChatSummaryMemoryItem": { + "BingGroundingSearchToolParameters": { "type": "object", "required": [ - "kind" + "search_configurations" ], "properties": { - "kind": { + "name": { "type": "string", - "enum": [ - "chat_summary" - ], - "description": "The kind of the memory item." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/MemoryItem" - } - ], - "description": "A memory item containing a summary extracted from conversations.", - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] - } - }, - "ChatTemplate": { - "anyOf": [ - { - "type": "string" + "description": "Optional user-defined name for this tool or configuration." }, - { + "description": { "type": "string", - "enum": [ - "Chatml", - "llama-3", - "Zephyr", - "Gemma", - "phi-3" - ] - } - ], - "description": "Chat template used to format conversational training data." - }, - "ClusterInsightResult": { - "type": "object", - "required": [ - "summary", - "clusters" - ], - "properties": { - "summary": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightSummary" - } - ], - "description": "Summary of the insights report." + "description": "Optional user-defined description for this tool or configuration." }, - "clusters": { + "search_configurations": { "type": "array", "items": { - "$ref": "#/components/schemas/InsightCluster" - }, - "description": "List of clusters identified in the insights." - }, - "coordinates": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/ChartCoordinate" + "$ref": "#/components/schemas/BingGroundingSearchConfiguration" }, - "description": " Optional mapping of IDs to 2D coordinates used by the UX for visualization.\n\n The map keys are string identifiers (for example, a cluster id or a sample id)\n and the values are the coordinates and visual size for rendering on a 2D chart.\n\n This property is omitted unless the client requests coordinates (for example,\n by passing `includeCoordinates=true` as a query parameter).\n\n Example:\n ```\n {\n \"cluster-1\": { \"x\": 12, \"y\": 34, \"size\": 8 },\n \"sample-123\": { \"x\": 18, \"y\": 22, \"size\": 4 }\n }\n ```\n\n Coordinates are intended only for client-side visualization and do not\n modify the canonical insights results." - } - }, - "description": "Insights from the cluster analysis." - }, - "ClusterTokenUsage": { - "type": "object", - "required": [ - "inputTokenUsage", - "outputTokenUsage", - "totalTokenUsage" - ], - "properties": { - "inputTokenUsage": { - "type": "integer", - "format": "int32", - "description": "input token usage" - }, - "outputTokenUsage": { - "type": "integer", - "format": "int32", - "description": "output token usage" - }, - "totalTokenUsage": { - "type": "integer", - "format": "int32", - "description": "total token usage" + "maxItems": 1, + "description": "The search configurations attached to this tool. There can be a maximum of 1\nsearch configuration resource attached to the tool." } }, - "description": "Token usage for cluster analysis" + "description": "The bing grounding search tool parameters." }, - "CodeBasedEvaluatorDefinition": { + "BingGroundingTool": { "type": "object", "required": [ - "type" + "type", + "bing_grounding" ], "properties": { "type": { "type": "string", "enum": [ - "code" - ] - }, - "code_text": { - "type": "string", - "description": "Inline code text for the evaluator" - }, - "entry_point": { - "type": "string", - "description": "The entry point Python file name for the uploaded evaluator code (e.g. 'answer_length_evaluator.py')" - }, - "image_tag": { - "type": "string", - "description": "The container image tag to use for evaluator code execution" - }, - "blob_uri": { - "type": "string", - "description": "The blob URI for the evaluator storage" - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/EvaluatorDefinition" - } - ], - "description": "Code-based evaluator definition using python code" - }, - "CommandJob": { - "type": "object", - "required": [ - "jobType", - "computeId" - ], - "properties": { - "jobType": { - "type": "string", - "enum": [ - "Command" - ], - "description": "Job type." - }, - "command": { - "type": "string", - "description": "The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified." - }, - "environmentImageReference": { - "type": "string", - "description": "ACR path or Azure ML environment reference. Required when training is not specified." - }, - "training": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingConfiguration" - } + "bing_grounding" ], - "description": "Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution." + "description": "The object type, which is always 'bing_grounding'." }, - "displayName": { + "name": { "type": "string", - "description": "Display name of job." + "description": "Optional user-defined name for this tool or configuration." }, "description": { "type": "string", - "description": "The asset description text." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." - }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "The asset property dictionary." - }, - "codeId": { - "type": "string", - "description": "Code asset reference." - }, - "computeId": { - "type": "string", - "description": "Compute resource ID." - }, - "inputs": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Input" - }, - "description": "Mapping of input data bindings used in the job." - }, - "outputs": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Output" - }, - "description": "Mapping of output data bindings used in the job." - }, - "environmentVariables": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Environment variables included in the job." - }, - "resources": { - "allOf": [ - { - "$ref": "#/components/schemas/JobResourceConfiguration" - } - ], - "description": "Compute Resource configuration for the job." - }, - "gpuCount": { - "type": "integer", - "format": "int32", - "description": "Number of GPUs requested by the training job." - }, - "distribution": { - "allOf": [ - { - "$ref": "#/components/schemas/DistributionConfiguration" - } - ], - "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." - }, - "limits": { - "allOf": [ - { - "$ref": "#/components/schemas/CommandJobLimits" - } - ], - "description": "Command Job limit." + "description": "Optional user-defined description for this tool or configuration." }, - "queueSettings": { + "bing_grounding": { "allOf": [ { - "$ref": "#/components/schemas/QueueSettings" + "$ref": "#/components/schemas/BingGroundingSearchToolParameters" } ], - "description": "Queue settings for the job." - }, - "userAssignedIdentityId": { - "type": "string", - "description": "user-assigned managed identity" - }, - "status": { - "type": "string", - "description": "Status of the job.", - "readOnly": true + "description": "The bing grounding search tool parameters." } }, "allOf": [ { - "$ref": "#/components/schemas/JobProperties" + "$ref": "#/components/schemas/OpenAI.Tool" } ], - "description": "Properties of a Command Job." + "description": "The input definition information for a bing grounding search tool as used to configure an agent." }, - "CommandJobLimits": { + "BingGroundingToolCall": { "type": "object", "required": [ - "jobLimitsType" + "type", + "call_id", + "arguments", + "status" ], "properties": { - "jobLimitsType": { + "type": { "type": "string", "enum": [ - "Command" - ], - "description": "JobLimit type." + "bing_grounding_call" + ] }, - "timeout": { - "type": "string", - "format": "duration", - "description": "The max run duration in ISO 8601 format, after which the job will be cancelled. Only supports duration with precision as low as Seconds." - } - }, - "description": "Command Job limit class." - }, - "CompletionMessageToolCallChunk": { - "type": "object", - "required": [ - "id", - "type" - ], - "properties": { - "id": { + "call_id": { "type": "string", - "description": "The Id for the tool call." + "description": "The unique ID of the tool call generated by the model." }, - "type": { + "arguments": { "type": "string", - "enum": [ - "function" - ], - "description": "The type of tool call, which is always \"function\"." + "description": "A JSON string of the arguments to pass to the tool." }, - "function": { + "status": { "allOf": [ { - "$ref": "#/components/schemas/FunctionToolCall" + "$ref": "#/components/schemas/ToolCallStatus" } ], - "description": "Details of the function tool call, if applicable." + "description": "The status of the tool call." } }, - "description": "Tool call details within a message." + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.OutputItem" + } + ], + "description": "A Bing grounding tool call." }, - "Connection": { + "BingGroundingToolCallOutput": { "type": "object", "required": [ - "name", - "id", "type", - "target", - "isDefault", - "credentials", - "metadata" + "call_id", + "status" ], "properties": { - "name": { + "type": { "type": "string", - "description": "The friendly name of the connection, provided by the user.", - "readOnly": true + "enum": [ + "bing_grounding_call_output" + ] }, - "id": { + "call_id": { "type": "string", - "description": "A unique identifier for the connection, generated by the service", - "readOnly": true + "description": "The unique ID of the tool call generated by the model." }, - "type": { + "output": { "allOf": [ { - "$ref": "#/components/schemas/ConnectionType" + "$ref": "#/components/schemas/ToolCallOutputContent" } ], - "description": "Category of the connection", - "readOnly": true - }, - "target": { - "type": "string", - "description": "The connection URL to be used for this service", - "readOnly": true - }, - "isDefault": { - "type": "boolean", - "description": "Whether the connection is tagged as the default connection of its type", - "readOnly": true + "description": "The output from the Bing grounding tool call." }, - "credentials": { + "status": { "allOf": [ { - "$ref": "#/components/schemas/BaseCredentials" + "$ref": "#/components/schemas/ToolCallStatus" } ], - "description": "The credentials used by the connection", - "readOnly": true - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Metadata of the connection", - "readOnly": true + "description": "The status of the tool call." } }, - "description": "Response from the list and get connections operations" - }, - "ConnectionType": { - "anyOf": [ - { - "type": "string" - }, + "allOf": [ { - "type": "string", - "enum": [ - "AzureOpenAI", - "AzureBlob", - "AzureStorageAccount", - "CognitiveSearch", - "CosmosDB", - "ApiKey", - "AppConfig", - "AppInsights", - "CustomKeys", - "RemoteTool_Preview" - ] + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "The Type (or category) of the connection" + "description": "The output of a Bing grounding tool call." }, - "ContentFilterResult": { + "BlobReference": { "type": "object", "required": [ - "blocked", - "source_type", - "content_filter_results" + "blobUri", + "storageAccountArmId", + "credential" ], "properties": { - "blocked": { - "type": "boolean", - "description": "Whether the content was blocked by the content filter." + "blobUri": { + "type": "string", + "format": "uri", + "description": "Blob URI path for client to upload data. Example: `https://blob.windows.core.net/Container/Path`" }, - "source_type": { + "storageAccountArmId": { "type": "string", - "description": "The source type of the content filter evaluation (e.g., 'prompt', 'response', 'pre_tool_call', 'post_tool_call')." + "description": "ARM ID of the storage account to use." }, - "content_filter_results": { + "credential": { "allOf": [ { - "$ref": "#/components/schemas/AzureContentFilterResultsForResponses" + "$ref": "#/components/schemas/SasCredential" } ], - "description": "The content filter results for this evaluation." - }, - "tool_call_id": { - "type": "string", - "description": "The ID of the tool call associated with this content filter result, if applicable." + "description": "Credential info to access the storage account." } }, - "description": "A content filter evaluation result for a specific source in the response." + "description": "Blob reference details." }, - "ContinuousEvaluationRuleAction": { + "BrowserAutomationPreviewTool": { "type": "object", "required": [ "type", - "evalId" + "browser_automation_preview" ], "properties": { "type": { "type": "string", "enum": [ - "continuousEvaluation" - ] + "browser_automation_preview" + ], + "description": "The object type, which is always 'browser_automation_preview'." }, - "evalId": { + "name": { "type": "string", - "description": "Eval Id to add continuous evaluation runs to." + "description": "Optional user-defined name for this tool or configuration." }, - "maxHourlyRuns": { - "type": "integer", - "format": "int32", - "description": "Maximum number of evaluation runs allowed per hour." + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "browser_automation_preview": { + "allOf": [ + { + "$ref": "#/components/schemas/BrowserAutomationToolParameters" + } + ], + "description": "The Browser Automation Tool parameters." } }, "allOf": [ { - "$ref": "#/components/schemas/EvaluationRuleAction" + "$ref": "#/components/schemas/OpenAI.Tool" } ], - "description": "Evaluation rule action for continuous evaluation." + "description": "The input definition information for a Browser Automation Tool, as used to configure an Agent." }, - "CosmosDBIndex": { + "BrowserAutomationToolCall": { "type": "object", "required": [ - "type" + "type", + "call_id", + "arguments", + "status" ], "properties": { "type": { "type": "string", "enum": [ - "CosmosDBNoSqlVectorStore" + "browser_automation_preview_call" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "arguments": { + "type": "string", + "description": "A JSON string of the arguments to pass to the tool." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } ], - "description": "Type of index" + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/Index" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "CosmosDB Vector Store Index Definition" + "description": "A browser automation tool call." }, - "CosmosDBIndexUpdate": { + "BrowserAutomationToolCallOutput": { "type": "object", "required": [ - "type" + "type", + "call_id", + "status" ], "properties": { "type": { "type": "string", "enum": [ - "CosmosDBNoSqlVectorStore" + "browser_automation_preview_call_output" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "output": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallOutputContent" + } ], - "description": "Type of index" + "description": "The output from the browser automation tool call." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/IndexUpdate" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "CosmosDB Vector Store Index Definition" + "description": "The output of a browser automation tool call." }, - "CreateAgentFromManifestRequest": { + "BrowserAutomationToolConnectionParameters": { "type": "object", "required": [ - "name", - "manifest_id", - "parameter_values" + "project_connection_id" ], "properties": { "name": { "type": "string", - "maxLength": 63, - "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" + "description": "Optional user-defined name for this tool or configuration." }, "description": { "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." + "description": "Optional user-defined description for this tool or configuration." }, - "manifest_id": { + "project_connection_id": { "type": "string", - "description": "The manifest ID to import the agent version from." - }, - "parameter_values": { - "type": "object", - "additionalProperties": {}, - "description": "The inputs to the manifest that will result in a fully materialized Agent." + "description": "The ID of the project connection to your Azure Playwright resource." } - } + }, + "description": "Definition of input parameters for the connection used by the Browser Automation Tool." }, - "CreateAgentRequest": { + "BrowserAutomationToolParameters": { "type": "object", "required": [ - "name", - "definition" + "connection" ], "properties": { "name": { "type": "string", - "maxLength": 63, - "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" + "description": "Optional user-defined name for this tool or configuration." }, "description": { "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." + "description": "Optional user-defined description for this tool or configuration." }, - "definition": { + "connection": { "allOf": [ { - "$ref": "#/components/schemas/AgentDefinition" + "$ref": "#/components/schemas/BrowserAutomationToolConnectionParameters" } ], - "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", - "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" - ] - } + "description": "The project connection parameters associated with the Browser Automation Tool." } }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" - ] - } + "description": "Definition of input parameters for the Browser Automation Tool." }, - "CreateAgentVersionFromManifestRequest": { + "CaptureStructuredOutputsTool": { "type": "object", "required": [ - "manifest_id", - "parameter_values" + "type", + "outputs" ], "properties": { - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." - }, - "manifest_id": { + "type": { "type": "string", - "description": "The manifest ID to import the agent version from." + "enum": [ + "capture_structured_outputs" + ], + "description": "The type of the tool. Always `capture_structured_outputs`." }, - "parameter_values": { - "type": "object", - "additionalProperties": {}, - "description": "The inputs to the manifest that will result in a fully materialized Agent." + "outputs": { + "allOf": [ + { + "$ref": "#/components/schemas/StructuredOutputDefinition" + } + ], + "description": "The structured outputs to capture from the model." } - } + }, + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Tool" + } + ], + "description": "A tool for capturing structured outputs" }, - "CreateAgentVersionRequest": { + "ChartCoordinate": { "type": "object", "required": [ - "definition" + "x", + "y", + "size" ], "properties": { - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" + "x": { + "type": "integer", + "format": "int32", + "description": "X-axis coordinate." }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." + "y": { + "type": "integer", + "format": "int32", + "description": "Y-axis coordinate." }, - "definition": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentDefinition" - } + "size": { + "type": "integer", + "format": "int32", + "description": "Size of the chart element." + } + }, + "description": "Coordinates for the analysis chart." + }, + "ChatSummaryMemoryItem": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "chat_summary" ], - "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", - "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" - ] - } + "description": "The kind of the memory item." } }, + "allOf": [ + { + "$ref": "#/components/schemas/MemoryItem" + } + ], + "description": "A memory item containing a summary extracted from conversations.", "x-ms-foundry-meta": { "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" + "MemoryStores=V1Preview" ] } }, - "CreateEvalRequest": { + "ClusterInsightResult": { "type": "object", "required": [ - "data_source_config", - "testing_criteria" + "summary", + "clusters" ], "properties": { - "name": { - "type": "string", - "description": "The name of the evaluation." - }, - "metadata": { - "type": "object", + "summary": { "allOf": [ { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "data_source_config": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.CreateEvalCustomDataSourceConfig" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalLogsDataSourceConfig" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalStoredCompletionsDataSourceConfig" - }, - { - "$ref": "#/components/schemas/AzureAIDataSourceConfig" - }, - { - "$ref": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" + "$ref": "#/components/schemas/InsightSummary" } ], - "description": "The configuration for the data source used for the evaluation runs. Dictates the schema of the data used in the evaluation." + "description": "Summary of the insights report." }, - "testing_criteria": { + "clusters": { "type": "array", "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/OpenAI.EvalGraderLabelModel" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderStringCheck" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderTextSimilarity" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderPython" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderScoreModel" - }, - { - "$ref": "#/components/schemas/EvalGraderAzureAIEvaluator" - }, - { - "$ref": "#/components/schemas/EvalGraderInspectAI" - } - ] + "$ref": "#/components/schemas/InsightCluster" }, - "description": "A list of graders for all eval runs in this group. Graders can reference variables in the data source using double curly braces notation, like `{{item.variable_name}}`. To reference the model's output, use the `sample` namespace (ie, `{{sample.output_text}}`)." + "description": "List of clusters identified in the insights." }, - "properties": { + "coordinates": { "type": "object", "additionalProperties": { - "type": "string" + "$ref": "#/components/schemas/ChartCoordinate" }, - "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." + "description": " Optional mapping of IDs to 2D coordinates used by the UX for visualization.\n\n The map keys are string identifiers (for example, a cluster id or a sample id)\n and the values are the coordinates and visual size for rendering on a 2D chart.\n\n This property is omitted unless the client requests coordinates (for example,\n by passing `includeCoordinates=true` as a query parameter).\n\n Example:\n ```\n {\n \"cluster-1\": { \"x\": 12, \"y\": 34, \"size\": 8 },\n \"sample-123\": { \"x\": 18, \"y\": 22, \"size\": 4 }\n }\n ```\n\n Coordinates are intended only for client-side visualization and do not\n modify the canonical insights results." } }, - "title": "CreateEvalRequest" + "description": "Insights from the cluster analysis." }, - "CreateEvalRunRequest": { + "ClusterTokenUsage": { "type": "object", "required": [ - "data_source" + "inputTokenUsage", + "outputTokenUsage", + "totalTokenUsage" ], "properties": { - "name": { - "type": "string", - "description": "The name of the run." - }, - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "data_source": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" - }, - { - "$ref": "#/components/schemas/EvalRunDataSource" - } - ], - "description": "Details about the run's data source." + "inputTokenUsage": { + "type": "integer", + "format": "int32", + "description": "input token usage" }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." - } - }, - "title": "CreateEvalRunRequest" - }, - "CredentialType": { - "anyOf": [ - { - "type": "string" + "outputTokenUsage": { + "type": "integer", + "format": "int32", + "description": "output token usage" }, - { - "type": "string", - "enum": [ - "ApiKey", - "AAD", - "SAS", - "CustomKeys", - "None", - "AgenticIdentityToken_Preview" - ] + "totalTokenUsage": { + "type": "integer", + "format": "int32", + "description": "total token usage" } - ], - "description": "The credential type used by the connection" + }, + "description": "Token usage for cluster analysis" }, - "CronTrigger": { + "CodeBasedEvaluatorDefinition": { "type": "object", "required": [ - "type", - "expression" + "type" ], "properties": { "type": { "type": "string", "enum": [ - "Cron" + "code" ] }, - "expression": { + "code_text": { "type": "string", - "description": "Cron expression that defines the schedule frequency." + "description": "Inline code text for the evaluator" }, - "timeZone": { + "entry_point": { "type": "string", - "description": "Time zone for the cron schedule.", - "default": "UTC" + "description": "The entry point Python file name for the uploaded evaluator code (e.g. 'answer_length_evaluator.py')" }, - "startTime": { + "image_tag": { "type": "string", - "description": "Start time for the cron schedule in ISO 8601 format." + "description": "The container image tag to use for evaluator code execution" }, - "endTime": { + "blob_uri": { "type": "string", - "description": "End time for the cron schedule in ISO 8601 format." + "description": "The blob URI for the evaluator storage" } }, "allOf": [ { - "$ref": "#/components/schemas/Trigger" + "$ref": "#/components/schemas/EvaluatorDefinition" } ], - "description": "Cron based trigger." + "description": "Code-based evaluator definition using python code" }, - "CustomCredential": { + "CompletionMessageToolCallChunk": { "type": "object", "required": [ + "id", "type" ], "properties": { - "type": { + "id": { "type": "string", - "enum": [ - "CustomKeys" - ], - "description": "The credential type", - "readOnly": true - } - }, - "additionalProperties": { - "type": "string" - }, - "allOf": [ - { - "$ref": "#/components/schemas/BaseCredentials" - } - ], - "description": "Custom credential definition" - }, - "DailyRecurrenceSchedule": { - "type": "object", - "required": [ - "type", - "hours" - ], - "properties": { + "description": "The Id for the tool call." + }, "type": { "type": "string", "enum": [ - "Daily" + "function" ], - "description": "Daily recurrence type." + "description": "The type of tool call, which is always \"function\"." }, - "hours": { - "type": "array", - "items": { - "type": "integer", - "format": "int32" - }, - "description": "Hours for the recurrence schedule." + "function": { + "allOf": [ + { + "$ref": "#/components/schemas/FunctionToolCall" + } + ], + "description": "Details of the function tool call, if applicable." } }, - "allOf": [ - { - "$ref": "#/components/schemas/RecurrenceSchedule" - } - ], - "description": "Daily recurrence schedule." + "description": "Tool call details within a message." }, - "DataSourceConfig": { + "Connection": { "type": "object", "required": [ + "name", + "id", "type", - "schema" + "target", + "isDefault", + "credentials", + "metadata" ], "properties": { - "type": { + "name": { "type": "string", - "description": "The data source type discriminator." - }, - "schema": { - "type": "object", - "additionalProperties": {}, - "description": "The overall object JSON schema for the run data source items." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": {} - }, - "description": "Base class for run data sources with discriminator support." - }, - "DatasetType": { - "anyOf": [ - { - "type": "string" + "description": "The friendly name of the connection, provided by the user.", + "readOnly": true }, - { - "type": "string", - "enum": [ - "uri_file", - "uri_folder" - ] - } - ], - "description": "Enum to determine the type of data." - }, - "DatasetVersion": { - "type": "object", - "required": [ - "dataUri", - "type", - "name", - "version" - ], - "properties": { - "dataUri": { + "id": { "type": "string", - "minLength": 1, - "pattern": "[a-zA-Z0-9_]", - "description": "URI of the data ([example](https://go.microsoft.com/fwlink/?linkid=2202330))" + "description": "A unique identifier for the connection, generated by the service", + "readOnly": true }, "type": { "allOf": [ { - "$ref": "#/components/schemas/DatasetType" + "$ref": "#/components/schemas/ConnectionType" } ], - "description": "Dataset type" - }, - "isReference": { - "type": "boolean", - "description": "Indicates if the dataset holds a reference to the storage, or the dataset manages storage itself. If true, the underlying data will not be deleted when the dataset version is deleted", + "description": "Category of the connection", "readOnly": true }, - "connectionName": { - "type": "string", - "description": "The Azure Storage Account connection name. Required if startPendingUploadVersion was not called before creating the Dataset" - }, - "id": { + "target": { "type": "string", - "description": "Asset ID, a unique identifier for the asset", + "description": "The connection URL to be used for this service", "readOnly": true }, - "name": { - "type": "string", - "description": "The name of the resource", + "isDefault": { + "type": "boolean", + "description": "Whether the connection is tagged as the default connection of its type", "readOnly": true }, - "version": { - "type": "string", - "description": "The version of the resource", - "readOnly": true - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "uri_file": "#/components/schemas/FileDatasetVersion", - "uri_folder": "#/components/schemas/FolderDatasetVersion" - } - }, - "description": "DatasetVersion Definition" - }, - "DatasetVersionUpdate": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { + "credentials": { "allOf": [ { - "$ref": "#/components/schemas/DatasetType" + "$ref": "#/components/schemas/BaseCredentials" } ], - "description": "Dataset type" - }, - "description": { - "type": "string", - "description": "The asset description text." + "description": "The credentials used by the connection", + "readOnly": true }, - "tags": { + "metadata": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Tag dictionary. Tags can be added, removed, and updated." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "uri_file": "#/components/schemas/FileDatasetVersionUpdate", - "uri_folder": "#/components/schemas/FolderDatasetVersionUpdate" + "description": "Metadata of the connection", + "readOnly": true } }, - "description": "DatasetVersion Definition" + "description": "Response from the list and get connections operations" }, - "DayOfWeek": { + "ConnectionType": { "anyOf": [ { "type": "string" @@ -18233,349 +11633,304 @@ { "type": "string", "enum": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" + "AzureOpenAI", + "AzureBlob", + "AzureStorageAccount", + "CognitiveSearch", + "CosmosDB", + "ApiKey", + "AppConfig", + "AppInsights", + "CustomKeys", + "RemoteTool_Preview" ] } ], - "description": "Days of the week for recurrence schedule." + "description": "The Type (or category) of the connection" }, - "DeleteAgentResponse": { + "ContentFilterResult": { "type": "object", "required": [ - "object", - "name", - "deleted" + "blocked", + "source_type", + "content_filter_results" ], "properties": { - "object": { - "type": "string", - "enum": [ - "agent.deleted" - ], - "description": "The object type. Always 'agent.deleted'." + "blocked": { + "type": "boolean", + "description": "Whether the content was blocked by the content filter." }, - "name": { + "source_type": { "type": "string", - "description": "The name of the agent." + "description": "The source type of the content filter evaluation (e.g., 'prompt', 'response', 'pre_tool_call', 'post_tool_call')." }, - "deleted": { - "type": "boolean", - "description": "Whether the agent was successfully deleted." - } - }, - "description": "A deleted agent Object" - }, - "DeleteAgentVersionResponse": { - "type": "object", - "required": [ - "object", - "name", - "version", - "deleted" - ], - "properties": { - "object": { - "type": "string", - "enum": [ - "agent.version.deleted" + "content_filter_results": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterResultsForResponses" + } ], - "description": "The object type. Always 'agent.version.deleted'." - }, - "name": { - "type": "string", - "description": "The name of the agent." + "description": "The content filter results for this evaluation." }, - "version": { + "tool_call_id": { "type": "string", - "description": "The version identifier of the agent." - }, - "deleted": { - "type": "boolean", - "description": "Whether the agent was successfully deleted." + "description": "The ID of the tool call associated with this content filter result, if applicable." } }, - "description": "A deleted agent version Object" + "description": "A content filter evaluation result for a specific source in the response." }, - "DeleteEvalResponse": { + "ContinuousEvaluationRuleAction": { "type": "object", "required": [ - "object", - "eval_id", - "deleted" + "type", + "evalId" ], "properties": { - "object": { + "type": { "type": "string", "enum": [ - "eval.deleted" - ], - "description": "The object type. Always 'eval.deleted'." + "continuousEvaluation" + ] }, - "eval_id": { + "evalId": { "type": "string", - "description": "id of the eval." + "description": "Eval Id to add continuous evaluation runs to." }, - "deleted": { - "type": "boolean", - "description": "Whether the eval was successfully deleted." + "maxHourlyRuns": { + "type": "integer", + "format": "int32", + "description": "Maximum number of evaluation runs allowed per hour." } }, - "description": "A deleted evaluation Object" - }, - "DeleteEvalRunResponse": { - "type": "object", - "properties": { - "object": { - "type": "string", - "enum": [ - "eval.deleted" - ], - "description": "The object type. Always 'eval.deleted'." - }, - "run_id": { - "type": "string", - "description": "id of the eval." - }, - "deleted": { - "type": "boolean", - "description": "Whether the eval was successfully deleted." + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleAction" } - }, - "description": "A deleted evaluation run Object." + ], + "description": "Evaluation rule action for continuous evaluation." }, - "DeleteMemoryStoreResponse": { + "CosmosDBIndex": { "type": "object", "required": [ - "object", - "name", - "deleted" + "type" ], "properties": { - "object": { + "type": { "type": "string", "enum": [ - "memory_store.deleted" + "CosmosDBNoSqlVectorStore" ], - "description": "The object type. Always 'memory_store.deleted'." - }, - "name": { - "type": "string", - "description": "The name of the memory store." - }, - "deleted": { - "type": "boolean", - "description": "Whether the memory store was successfully deleted." + "description": "Type of index" } }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] - } + "allOf": [ + { + "$ref": "#/components/schemas/Index" + } + ], + "description": "CosmosDB Vector Store Index Definition" }, - "DeleteResponseResult": { + "CosmosDBIndexUpdate": { "type": "object", "required": [ - "id", - "object", - "deleted" + "type" ], "properties": { - "id": { - "type": "string", - "description": "The operation ID." - }, - "object": { + "type": { "type": "string", "enum": [ - "response" - ], - "description": "Always return 'response'." - }, - "deleted": { - "type": "boolean", - "enum": [ - true + "CosmosDBNoSqlVectorStore" ], - "description": "Always return true" + "description": "Type of index" } }, - "description": "The result of a delete response operation." + "allOf": [ + { + "$ref": "#/components/schemas/IndexUpdate" + } + ], + "description": "CosmosDB Vector Store Index Definition" }, - "DeleteSkillResponse": { + "CreateAgentFromManifestRequest": { "type": "object", "required": [ - "object", "name", - "deleted" + "manifest_id", + "parameter_values" ], "properties": { - "object": { - "allOf": [ - { - "$ref": "#/components/schemas/SkillObjectType" - } - ], - "description": "The object type. Always 'skill.deleted'.", - "default": "skill.deleted" - }, "name": { "type": "string", - "description": "The unique name of the skill." + "maxLength": 63, + "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." }, - "deleted": { - "type": "boolean", - "description": "Whether the skill was successfully deleted." - } - }, - "description": "A deleted skill Object" - }, - "DeleteToolsetResponse": { - "type": "object", - "required": [ - "object", - "name", - "deleted" - ], - "properties": { - "object": { + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" + }, + "description": { "type": "string", - "enum": [ - "toolset.deleted" - ], - "description": "The object type. Always 'toolset.deleted'." + "maxLength": 512, + "description": "A human-readable description of the agent." }, - "name": { + "manifest_id": { "type": "string", - "description": "The name of the toolset." + "description": "The manifest ID to import the agent version from." }, - "deleted": { - "type": "boolean", - "description": "Whether the toolset was successfully deleted." + "parameter_values": { + "type": "object", + "additionalProperties": {}, + "description": "The inputs to the manifest that will result in a fully materialized Agent." } - }, - "description": "Response returned when a toolset is deleted." + } }, - "Deployment": { + "CreateAgentRequest": { "type": "object", "required": [ - "type", - "name" + "name", + "definition" ], "properties": { - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/DeploymentType" - } - ], - "description": "The type of the deployment" - }, "name": { "type": "string", - "description": "Name of the deployment", - "readOnly": true - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "ModelDeployment": "#/components/schemas/ModelDeployment" - } - }, - "description": "Model Deployment Definition" - }, - "DeploymentType": { - "anyOf": [ - { - "type": "string" + "maxLength": 63, + "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" }, - { + "description": { "type": "string", - "enum": [ - "ModelDeployment" - ] + "maxLength": 512, + "description": "A human-readable description of the agent." + }, + "definition": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentDefinition" + } + ], + "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } } - ] + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } }, - "DistributionConfiguration": { + "CreateAgentVersionFromManifestRequest": { "type": "object", "required": [ - "distributionType" + "manifest_id", + "parameter_values" ], "properties": { - "distributionType": { + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" + }, + "description": { "type": "string", - "description": "Specifies the type of distribution framework." - } - }, - "discriminator": { - "propertyName": "distributionType", - "mapping": { - "PyTorch": "#/components/schemas/PyTorchDistribution", - "Mpi": "#/components/schemas/MpiDistribution", - "TensorFlow": "#/components/schemas/TensorFlowDistribution" + "maxLength": 512, + "description": "A human-readable description of the agent." + }, + "manifest_id": { + "type": "string", + "description": "The manifest ID to import the agent version from." + }, + "parameter_values": { + "type": "object", + "additionalProperties": {}, + "description": "The inputs to the manifest that will result in a fully materialized Agent." } - }, - "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + } }, - "EntraIDCredentials": { + "CreateAgentVersionRequest": { "type": "object", "required": [ - "type" + "definition" ], "properties": { - "type": { + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" + }, + "description": { "type": "string", - "enum": [ - "AAD" + "maxLength": 512, + "description": "A human-readable description of the agent." + }, + "definition": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentDefinition" + } ], - "description": "The credential type", - "readOnly": true + "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } } }, - "allOf": [ - { - "$ref": "#/components/schemas/BaseCredentials" - } - ], - "description": "Entra ID credential definition" + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } }, - "Eval": { + "CreateEvalRequest": { "type": "object", "required": [ - "object", - "id", - "name", "data_source_config", - "testing_criteria", - "created_at", - "metadata" + "testing_criteria" ], "properties": { - "object": { - "type": "string", - "enum": [ - "eval" - ], - "description": "The object type.", - "x-stainless-const": true, - "default": "eval" - }, - "id": { - "type": "string", - "description": "Unique identifier for the evaluation." - }, "name": { "type": "string", "description": "The name of the evaluation." }, + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true + }, "data_source_config": { "oneOf": [ { @@ -18594,7 +11949,7 @@ "$ref": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" } ], - "description": "Configuration of data sources used in runs of the evaluation." + "description": "The configuration for the data source used for the evaluation runs. Dictates the schema of the data used in the evaluation." }, "testing_criteria": { "type": "array", @@ -18623,12 +11978,27 @@ } ] }, - "description": "A list of testing criteria." + "description": "A list of graders for all eval runs in this group. Graders can reference variables in the data source using double curly braces notation, like `{{item.variable_name}}`. To reference the model's output, use the `sample` namespace (ie, `{{sample.output_text}}`)." }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "The Unix timestamp (in seconds) for when the eval was created." + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." + } + }, + "title": "CreateEvalRequest" + }, + "CreateEvalRunRequest": { + "type": "object", + "required": [ + "data_source" + ], + "properties": { + "name": { + "type": "string", + "description": "The name of the run." }, "metadata": { "type": "object", @@ -18639,17 +12009,22 @@ ], "nullable": true }, - "modified_at": { - "allOf": [ + "data_source": { + "oneOf": [ { - "$ref": "#/components/schemas/integer" + "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" + }, + { + "$ref": "#/components/schemas/EvalRunDataSource" } ], - "description": "Unix timestamp (in seconds) when the evaluation run was last modified." - }, - "created_by": { - "type": "string", - "description": "the name of the person who created the run." + "description": "Details about the run's data source." }, "properties": { "type": "object", @@ -18659,1876 +12034,1811 @@ "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." } }, - "description": "An Eval object with a data source config and testing criteria.\nAn Eval represents a task to be done for your LLM integration.\nLike:\n- Improve the quality of my chatbot\n- See how well my chatbot handles customer support\n- Check if o4-mini is better at my usecase than gpt-4o", - "title": "Eval", - "x-oaiMeta": { - "name": "The eval object", - "group": "evals", - "example": "{\n \"object\": \"eval\",\n \"id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"data_source_config\": {\n \"type\": \"custom\",\n \"item_schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\"type\": \"string\"},\n },\n \"required\": [\"label\"]\n },\n \"include_sample_schema\": true\n },\n \"testing_criteria\": [\n {\n \"name\": \"My string check grader\",\n \"type\": \"string_check\",\n \"input\": \"{{sample.output_text}}\",\n \"reference\": \"{{item.label}}\",\n \"operation\": \"eq\",\n }\n ],\n \"name\": \"External Data Eval\",\n \"created_at\": 1739314509,\n \"metadata\": {\n \"test\": \"synthetics\",\n }\n}\n" - } + "title": "CreateEvalRunRequest" }, - "EvalCsvFileIdSource": { + "CredentialType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "ApiKey", + "AAD", + "SAS", + "CustomKeys", + "None", + "AgenticIdentityToken_Preview" + ] + } + ], + "description": "The credential type used by the connection" + }, + "CronTrigger": { "type": "object", "required": [ "type", - "id" + "expression" ], "properties": { "type": { "type": "string", "enum": [ - "file_id" - ], - "description": "The type of source, always `file_id`." + "Cron" + ] }, - "id": { + "expression": { "type": "string", - "description": "The identifier of the uploaded CSV file." + "description": "Cron expression that defines the schedule frequency." + }, + "timeZone": { + "type": "string", + "description": "Time zone for the cron schedule.", + "default": "UTC" + }, + "startTime": { + "type": "string", + "description": "Start time for the cron schedule in ISO 8601 format." + }, + "endTime": { + "type": "string", + "description": "End time for the cron schedule in ISO 8601 format." } }, - "description": "Represents a reference to an uploaded CSV file used as a source for evaluation data." + "allOf": [ + { + "$ref": "#/components/schemas/Trigger" + } + ], + "description": "Cron based trigger." }, - "EvalCsvRunDataSource": { + "CustomCredential": { "type": "object", "required": [ - "type", - "source" + "type" ], "properties": { "type": { "type": "string", "enum": [ - "csv" - ], - "description": "The type of data source, always `csv`." - }, - "source": { - "allOf": [ - { - "$ref": "#/components/schemas/EvalCsvFileIdSource" - } + "CustomKeys" ], - "description": "The source of the CSV data, either inline content or a file reference." + "description": "The credential type", + "readOnly": true } }, + "additionalProperties": { + "type": "string" + }, "allOf": [ { - "$ref": "#/components/schemas/EvalRunDataSource" + "$ref": "#/components/schemas/BaseCredentials" } ], - "description": "Represents a CSV data source for evaluation runs." + "description": "Custom credential definition" }, - "EvalGraderAzureAIEvaluator": { + "DailyRecurrenceSchedule": { "type": "object", "required": [ "type", - "name", - "evaluator_name" + "hours" ], "properties": { "type": { "type": "string", "enum": [ - "azure_ai_evaluator" + "Daily" ], - "description": "The object type, which is always `azure_ai_evaluator`." - }, - "name": { - "type": "string", - "description": "The name of the grader." - }, - "evaluator_name": { - "type": "string", - "description": "The name of the evaluator." - }, - "evaluator_version": { - "type": "string", - "description": "The version of the evaluator. Latest version if not specified." - }, - "initialization_parameters": { - "type": "object", - "additionalProperties": {}, - "description": "The initialization parameters for the evaluation. Must support structured outputs." + "description": "Daily recurrence type." }, - "data_mapping": { - "type": "object", - "additionalProperties": { - "type": "string" + "hours": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" }, - "description": "The model to use for the evaluation. Must support structured outputs." + "description": "Hours for the recurrence schedule." } }, - "title": "AzureAIEvaluatorGrader" + "allOf": [ + { + "$ref": "#/components/schemas/RecurrenceSchedule" + } + ], + "description": "Daily recurrence schedule." }, - "EvalGraderInspectAI": { + "DataSourceConfig": { "type": "object", "required": [ "type", - "name", - "task_name" + "schema" ], "properties": { "type": { "type": "string", - "enum": [ - "inspect_ai" - ], - "description": "The object type, which is always `inspect_ai`." - }, - "name": { - "type": "string", - "description": "The display name of the benchmark." + "description": "The data source type discriminator." }, - "task_name": { - "type": "string", - "description": "The inspect_ai task module path (e.g., `inspect_evals/gpqa_diamond`)." + "schema": { + "type": "object", + "additionalProperties": {}, + "description": "The overall object JSON schema for the run data source items." } }, - "description": "Grader inspect_ai definition for inspect_ai benchmark evaluators." + "discriminator": { + "propertyName": "type", + "mapping": {} + }, + "description": "Base class for run data sources with discriminator support." }, - "EvalResult": { - "type": "object", - "required": [ - "name", - "type", - "score", - "passed" - ], - "properties": { - "name": { - "type": "string", - "description": "name of the check" + "DatasetType": { + "anyOf": [ + { + "type": "string" }, - "type": { + { "type": "string", - "description": "type of the check" - }, - "score": { - "type": "number", - "format": "float", - "description": "score" - }, - "passed": { - "type": "boolean", - "description": "indicates if the check passed or failed" + "enum": [ + "uri_file", + "uri_folder" + ] } - }, - "description": "Result of the evaluation." + ], + "description": "Enum to determine the type of data." }, - "EvalRun": { + "DatasetVersion": { "type": "object", "required": [ - "object", - "id", - "eval_id", - "status", - "model", + "dataUri", + "type", "name", - "created_at", - "report_url", - "result_counts", - "per_model_usage", - "per_testing_criteria_results", - "data_source", - "metadata", - "error" + "version" ], "properties": { - "object": { + "dataUri": { "type": "string", - "enum": [ - "eval.run" - ], - "description": "The type of the object. Always \"eval.run\".", - "x-stainless-const": true, - "default": "eval.run" + "minLength": 1, + "pattern": "[a-zA-Z0-9_]", + "description": "URI of the data ([example](https://go.microsoft.com/fwlink/?linkid=2202330))" }, - "id": { - "type": "string", - "description": "Unique identifier for the evaluation run." + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/DatasetType" + } + ], + "description": "Dataset type" }, - "eval_id": { - "type": "string", - "description": "The identifier of the associated evaluation." + "isReference": { + "type": "boolean", + "description": "Indicates if the dataset holds a reference to the storage, or the dataset manages storage itself. If true, the underlying data will not be deleted when the dataset version is deleted", + "readOnly": true }, - "status": { + "connectionName": { "type": "string", - "description": "The status of the evaluation run." + "description": "The Azure Storage Account connection name. Required if startPendingUploadVersion was not called before creating the Dataset" }, - "model": { + "id": { "type": "string", - "description": "The model that is evaluated, if applicable." + "description": "Asset ID, a unique identifier for the asset", + "readOnly": true }, "name": { "type": "string", - "description": "The name of the evaluation run." - }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "Unix timestamp (in seconds) when the evaluation run was created." + "description": "The name of the resource", + "readOnly": true }, - "report_url": { + "version": { "type": "string", - "format": "uri", - "description": "The URL to the rendered evaluation run report on the UI dashboard." - }, - "result_counts": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.EvalRunResultCounts" - } - ], - "description": "Counters summarizing the outcomes of the evaluation run." - }, - "per_model_usage": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.EvalRunPerModelUsage" - }, - "description": "Usage statistics for each model during the evaluation run." - }, - "per_testing_criteria_results": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.EvalRunPerTestingCriteriaResults" - }, - "description": "Results per testing criteria applied during the evaluation run." - }, - "data_source": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" - }, - { - "$ref": "#/components/schemas/EvalRunDataSource" - } - ], - "description": "Information about the run's data source." - }, - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "error": { - "$ref": "#/components/schemas/OpenAI.EvalApiError" - }, - "modified_at": { + "description": "The version of the resource", + "readOnly": true + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "uri_file": "#/components/schemas/FileDatasetVersion", + "uri_folder": "#/components/schemas/FolderDatasetVersion" + } + }, + "description": "DatasetVersion Definition" + }, + "DatasetVersionUpdate": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { "allOf": [ { - "$ref": "#/components/schemas/integer" + "$ref": "#/components/schemas/DatasetType" } ], - "description": "Unix timestamp (in seconds) when the evaluation run was last modified." + "description": "Dataset type" }, - "created_by": { + "description": { "type": "string", - "description": "the name of the person who created the run." + "description": "The asset description text." }, - "properties": { + "tags": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." - } - }, - "description": "A schema representing an evaluation run.", - "title": "EvalRun", - "x-oaiMeta": { - "name": "The eval run object", - "group": "evals", - "example": "{\n \"object\": \"eval.run\",\n \"id\": \"evalrun_67e57965b480819094274e3a32235e4c\",\n \"eval_id\": \"eval_67e579652b548190aaa83ada4b125f47\",\n \"report_url\": \"https://platform.openai.com/evaluations/eval_67e579652b548190aaa83ada4b125f47?run_id=evalrun_67e57965b480819094274e3a32235e4c\",\n \"status\": \"queued\",\n \"model\": \"gpt-4o-mini\",\n \"name\": \"gpt-4o-mini\",\n \"created_at\": 1743092069,\n \"result_counts\": {\n \"total\": 0,\n \"errored\": 0,\n \"failed\": 0,\n \"passed\": 0\n },\n \"per_model_usage\": null,\n \"per_testing_criteria_results\": null,\n \"data_source\": {\n \"type\": \"completions\",\n \"source\": {\n \"type\": \"file_content\",\n \"content\": [\n {\n \"item\": {\n \"input\": \"Tech Company Launches Advanced Artificial Intelligence Platform\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Central Bank Increases Interest Rates Amid Inflation Concerns\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Summit Addresses Climate Change Strategies\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Major Retailer Reports Record-Breaking Holiday Sales\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"National Team Qualifies for World Championship Finals\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Stock Markets Rally After Positive Economic Data Released\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Manufacturer Announces Merger with Competitor\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Breakthrough in Renewable Energy Technology Unveiled\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"World Leaders Sign Historic Climate Agreement\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Professional Athlete Sets New Record in Championship Event\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Financial Institutions Adapt to New Regulatory Requirements\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Tech Conference Showcases Advances in Artificial Intelligence\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Markets Respond to Oil Price Fluctuations\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Cooperation Strengthened Through New Treaty\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Sports League Announces Revised Schedule for Upcoming Season\",\n \"ground_truth\": \"Sports\"\n }\n }\n ]\n },\n \"input_messages\": {\n \"type\": \"template\",\n \"template\": [\n {\n \"type\": \"message\",\n \"role\": \"developer\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"Categorize a given news headline into one of the following topics: Technology, Markets, World, Business, or Sports.\n\n# Steps\n\n1. Analyze the content of the news headline to understand its primary focus.\n2. Extract the subject matter, identifying any key indicators or keywords.\n3. Use the identified indicators to determine the most suitable category out of the five options: Technology, Markets, World, Business, or Sports.\n4. Ensure only one category is selected per headline.\n\n# Output Format\n\nRespond with the chosen category as a single word. For instance: \"Technology\", \"Markets\", \"World\", \"Business\", or \"Sports\".\n\n# Examples\n\n**Input**: \"Apple Unveils New iPhone Model, Featuring Advanced AI Features\"\n**Output**: \"Technology\"\n\n**Input**: \"Global Stocks Mixed as Investors Await Central Bank Decisions\"\n**Output**: \"Markets\"\n\n**Input**: \"War in Ukraine: Latest Updates on Negotiation Status\"\n**Output**: \"World\"\n\n**Input**: \"Microsoft in Talks to Acquire Gaming Company for $2 Billion\"\n**Output**: \"Business\"\n\n**Input**: \"Manchester United Secures Win in Premier League Football Match\"\n**Output**: \"Sports\"\n\n# Notes\n\n- If the headline appears to fit into more than one category, choose the most dominant theme.\n- Keywords or phrases such as \"stocks\", \"company acquisition\", \"match\", or technological brands can be good indicators for classification.\n\"\n }\n },\n {\n \"type\": \"message\",\n \"role\": \"user\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"{{item.input}}\"\n }\n }\n ]\n },\n \"model\": \"gpt-4o-mini\",\n \"sampling_params\": {\n \"seed\": 42,\n \"temperature\": 1.0,\n \"top_p\": 1.0,\n \"max_completions_tokens\": 2048\n }\n },\n \"error\": null,\n \"metadata\": {}\n}\n" - } - }, - "EvalRunDataSource": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "description": "The data source type discriminator." + "description": "Tag dictionary. Tags can be added, removed, and updated." } }, "discriminator": { "propertyName": "type", "mapping": { - "azure_ai_traces_preview": "#/components/schemas/TracesPreviewEvalRunDataSource", - "azure_ai_synthetic_data_gen_preview": "#/components/schemas/SyntheticDataGenerationPreviewEvalRunDataSource", - "azure_ai_responses": "#/components/schemas/AzureAIResponsesEvalRunDataSource", - "azure_ai_target_completions": "#/components/schemas/TargetCompletionEvalRunDataSource", - "csv": "#/components/schemas/EvalCsvRunDataSource", - "azure_ai_red_team": "#/components/schemas/RedTeamEvalRunDataSource", - "azure_ai_benchmark_preview": "#/components/schemas/AzureAIBenchmarkPreviewEvalRunDataSource" + "uri_file": "#/components/schemas/FileDatasetVersionUpdate", + "uri_folder": "#/components/schemas/FolderDatasetVersionUpdate" } }, - "description": "Base class for run data sources with discriminator support." + "description": "DatasetVersion Definition" }, - "EvalRunOutputItem": { + "DayOfWeek": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ] + } + ], + "description": "Days of the week for recurrence schedule." + }, + "DeleteAgentResponse": { "type": "object", "required": [ "object", - "id", - "run_id", - "eval_id", - "created_at", - "status", - "datasource_item_id", - "datasource_item", - "results", - "sample" + "name", + "deleted" ], "properties": { "object": { "type": "string", "enum": [ - "eval.run.output_item" + "agent.deleted" ], - "description": "The type of the object. Always \"eval.run.output_item\".", - "x-stainless-const": true, - "default": "eval.run.output_item" - }, - "id": { - "type": "string", - "description": "Unique identifier for the evaluation run output item." - }, - "run_id": { - "type": "string", - "description": "The identifier of the evaluation run associated with this output item." - }, - "eval_id": { - "type": "string", - "description": "The identifier of the evaluation group." - }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "Unix timestamp (in seconds) when the evaluation run was created." + "description": "The object type. Always 'agent.deleted'." }, - "status": { + "name": { "type": "string", - "description": "The status of the evaluation run." - }, - "datasource_item_id": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "description": "The identifier for the data source item." - }, - "datasource_item": { - "type": "object", - "additionalProperties": {}, - "description": "Details of the input data source item." - }, - "results": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRunOutputItemResult" - }, - "description": "A list of grader results for this output item." + "description": "The name of the agent." }, - "sample": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.EvalRunOutputItemSample" - } - ], - "description": "A sample containing the input and output of the evaluation run." + "deleted": { + "type": "boolean", + "description": "Whether the agent was successfully deleted." } }, - "description": "A schema representing an evaluation run output item.", - "title": "EvalRunOutputItem", - "x-oaiMeta": { - "name": "The eval run output item object", - "group": "evals", - "example": "{\n \"object\": \"eval.run.output_item\",\n \"id\": \"outputitem_67abd55eb6548190bb580745d5644a33\",\n \"run_id\": \"evalrun_67abd54d60ec8190832b46859da808f7\",\n \"eval_id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"created_at\": 1739314509,\n \"status\": \"pass\",\n \"datasource_item_id\": 137,\n \"datasource_item\": {\n \"teacher\": \"To grade essays, I only check for style, content, and grammar.\",\n \"student\": \"I am a student who is trying to write the best essay.\"\n },\n \"results\": [\n {\n \"name\": \"String Check Grader\",\n \"type\": \"string-check-grader\",\n \"score\": 1.0,\n \"passed\": true,\n }\n ],\n \"sample\": {\n \"input\": [\n {\n \"role\": \"system\",\n \"content\": \"You are an evaluator bot...\"\n },\n {\n \"role\": \"user\",\n \"content\": \"You are assessing...\"\n }\n ],\n \"output\": [\n {\n \"role\": \"assistant\",\n \"content\": \"The rubric is not clear nor concise.\"\n }\n ],\n \"finish_reason\": \"stop\",\n \"model\": \"gpt-4o-2024-08-06\",\n \"usage\": {\n \"total_tokens\": 521,\n \"completion_tokens\": 2,\n \"prompt_tokens\": 519,\n \"cached_tokens\": 0\n },\n \"error\": null,\n \"temperature\": 1.0,\n \"max_completion_tokens\": 2048,\n \"top_p\": 1.0,\n \"seed\": 42\n }\n}\n" - } + "description": "A deleted agent Object" }, - "EvalRunOutputItemResult": { + "DeleteAgentVersionResponse": { "type": "object", "required": [ + "object", "name", - "score", - "passed" + "version", + "deleted" ], "properties": { - "name": { - "type": "string", - "description": "The name of the grader." - }, - "type": { + "object": { "type": "string", - "description": "The grader type (for example, \"string-check-grader\")." - }, - "score": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } + "enum": [ + "agent.version.deleted" ], - "description": "The numeric score produced by the grader." - }, - "passed": { - "type": "boolean", - "description": "Whether the grader considered the output a pass." - }, - "sample": { - "type": "object", - "additionalProperties": {}, - "nullable": true, - "description": "Optional sample or intermediate data produced by the grader." - }, - "metric": { - "type": "string", - "description": "The name of the metric (e.g., \"fluency\", \"f1_score\")." + "description": "The object type. Always 'agent.version.deleted'." }, - "label": { + "name": { "type": "string", - "description": "The label associated with the test criteria metric (e.g., \"pass\", \"fail\", \"good\", \"bad\")." - }, - "threshold": { - "type": "number", - "format": "float", - "description": "The threshold used to determine pass/fail for this test criteria, if it is numerical." + "description": "The name of the agent." }, - "reason": { + "version": { "type": "string", - "description": "The reason for the test criteria metric." + "description": "The version identifier of the agent." }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional details about the test criteria metric." + "deleted": { + "type": "boolean", + "description": "Whether the agent was successfully deleted." } }, - "additionalProperties": {}, - "description": "A single grader result for an evaluation run output item.", - "title": "EvalRunOutputItemResult" + "description": "A deleted agent version Object" }, - "EvalRunOutputItemSampleInput": { + "DeleteEvalResponse": { "type": "object", "required": [ - "role", - "content", - "tool_calls" + "object", + "eval_id", + "deleted" ], "properties": { - "role": { - "type": "string" + "object": { + "type": "string", + "enum": [ + "eval.deleted" + ], + "description": "The object type. Always 'eval.deleted'." }, - "content": { - "type": "string" + "eval_id": { + "type": "string", + "description": "id of the eval." }, - "tool_calls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CompletionMessageToolCallChunk" - }, - "description": "Tool calls made within the message, if any." + "deleted": { + "type": "boolean", + "description": "Whether the eval was successfully deleted." } }, - "description": "A message in the evaluation run." + "description": "A deleted evaluation Object" }, - "EvalRunOutputItemSampleOutput": { + "DeleteEvalRunResponse": { "type": "object", - "required": [ - "tool_calls" - ], "properties": { - "role": { - "type": "string" + "object": { + "type": "string", + "enum": [ + "eval.deleted" + ], + "description": "The object type. Always 'eval.deleted'." }, - "content": { - "type": "string" + "run_id": { + "type": "string", + "description": "id of the eval." }, - "tool_calls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CompletionMessageToolCallChunk" - }, - "description": "Tool calls made within the message, if any." + "deleted": { + "type": "boolean", + "description": "Whether the eval was successfully deleted." } }, - "description": "A message in the evaluation run." + "description": "A deleted evaluation run Object." }, - "EvalRunResultCompareItem": { + "DeleteMemoryStoreResponse": { "type": "object", "required": [ - "treatmentRunId", - "treatmentRunSummary", - "deltaEstimate", - "pValue", - "treatmentEffect" + "object", + "name", + "deleted" ], "properties": { - "treatmentRunId": { + "object": { "type": "string", - "description": "The treatment run ID." - }, - "treatmentRunSummary": { - "allOf": [ - { - "$ref": "#/components/schemas/EvalRunResultSummary" - } + "enum": [ + "memory_store.deleted" ], - "description": "Summary statistics of the treatment run." - }, - "deltaEstimate": { - "type": "number", - "format": "float", - "description": "Estimated difference between treatment and baseline." + "description": "The object type. Always 'memory_store.deleted'." }, - "pValue": { - "type": "number", - "format": "float", - "description": "P-value for the treatment effect." + "name": { + "type": "string", + "description": "The name of the memory store." }, - "treatmentEffect": { - "allOf": [ - { - "$ref": "#/components/schemas/TreatmentEffectType" - } - ], - "description": "Type of treatment effect." + "deleted": { + "type": "boolean", + "description": "Whether the memory store was successfully deleted." } }, - "description": "Metric comparison for a treatment against the baseline." + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } }, - "EvalRunResultComparison": { + "DeleteResponseResult": { "type": "object", "required": [ - "testingCriteria", - "metric", - "evaluator", - "baselineRunSummary", - "compareItems" + "id", + "object", + "deleted" ], "properties": { - "testingCriteria": { - "type": "string", - "description": "Name of the testing criteria." - }, - "metric": { + "id": { "type": "string", - "description": "Metric being evaluated." + "description": "The operation ID." }, - "evaluator": { + "object": { "type": "string", - "description": "Name of the evaluator for this testing criteria." - }, - "baselineRunSummary": { - "allOf": [ - { - "$ref": "#/components/schemas/EvalRunResultSummary" - } + "enum": [ + "response" ], - "description": "Summary statistics of the baseline run." + "description": "Always return 'response'." }, - "compareItems": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRunResultCompareItem" - }, - "description": "List of comparison results for each treatment run." + "deleted": { + "type": "boolean", + "enum": [ + true + ], + "description": "Always return true" } }, - "description": "Comparison results for treatment runs against the baseline." + "description": "The result of a delete response operation." }, - "EvalRunResultSummary": { + "DeleteSkillResponse": { "type": "object", "required": [ - "runId", - "sampleCount", - "average", - "standardDeviation" + "object", + "name", + "deleted" ], "properties": { - "runId": { - "type": "string", - "description": "The evaluation run ID." - }, - "sampleCount": { - "type": "integer", - "format": "int32", - "description": "Number of samples in the evaluation run." + "object": { + "allOf": [ + { + "$ref": "#/components/schemas/SkillObjectType" + } + ], + "description": "The object type. Always 'skill.deleted'.", + "default": "skill.deleted" }, - "average": { - "type": "number", - "format": "float", - "description": "Average value of the metric in the evaluation run." + "name": { + "type": "string", + "description": "The unique name of the skill." }, - "standardDeviation": { - "type": "number", - "format": "float", - "description": "Standard deviation of the metric in the evaluation run." + "deleted": { + "type": "boolean", + "description": "Whether the skill was successfully deleted." } }, - "description": "Summary statistics of a metric in an evaluation run." + "description": "A deleted skill Object" }, - "EvaluationComparisonInsightRequest": { + "DeleteToolsetResponse": { "type": "object", "required": [ - "type", - "evalId", - "baselineRunId", - "treatmentRunIds" + "object", + "name", + "deleted" ], "properties": { - "type": { + "object": { "type": "string", "enum": [ - "EvaluationComparison" + "toolset.deleted" ], - "description": "The type of request." - }, - "evalId": { - "type": "string", - "description": "Identifier for the evaluation." + "description": "The object type. Always 'toolset.deleted'." }, - "baselineRunId": { + "name": { "type": "string", - "description": "The baseline run ID for comparison." + "description": "The name of the toolset." }, - "treatmentRunIds": { - "type": "array", - "items": { - "type": "string" - }, - "description": "List of treatment run IDs for comparison." + "deleted": { + "type": "boolean", + "description": "Whether the toolset was successfully deleted." } }, - "allOf": [ - { - "$ref": "#/components/schemas/InsightRequest" - } - ], - "description": "Evaluation Comparison Request" + "description": "Response returned when a toolset is deleted." }, - "EvaluationComparisonInsightResult": { + "Deployment": { "type": "object", "required": [ "type", - "comparisons", - "method" + "name" ], "properties": { "type": { - "type": "string", - "enum": [ - "EvaluationComparison" + "allOf": [ + { + "$ref": "#/components/schemas/DeploymentType" + } ], - "description": "The type of insights result." - }, - "comparisons": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRunResultComparison" - }, - "description": "Comparison results for each treatment run against the baseline." + "description": "The type of the deployment" }, - "method": { + "name": { "type": "string", - "description": "The statistical method used for comparison." + "description": "Name of the deployment", + "readOnly": true } }, - "allOf": [ + "discriminator": { + "propertyName": "type", + "mapping": { + "ModelDeployment": "#/components/schemas/ModelDeployment" + } + }, + "description": "Model Deployment Definition" + }, + "DeploymentType": { + "anyOf": [ { - "$ref": "#/components/schemas/InsightResult" + "type": "string" + }, + { + "type": "string", + "enum": [ + "ModelDeployment" + ] } - ], - "description": "Insights from the evaluation comparison." + ] }, - "EvaluationResultSample": { + "EntraIDCredentials": { "type": "object", "required": [ - "type", - "evaluationResult" + "type" ], "properties": { "type": { "type": "string", - "enum": [ - "EvaluationResultSample" - ], - "description": "Evaluation Result Sample Type" - }, - "evaluationResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EvalResult" - } + "enum": [ + "AAD" ], - "description": "Evaluation result for the analysis sample." + "description": "The credential type", + "readOnly": true } }, "allOf": [ { - "$ref": "#/components/schemas/InsightSample" + "$ref": "#/components/schemas/BaseCredentials" } ], - "description": "A sample from the evaluation result." + "description": "Entra ID credential definition" }, - "EvaluationRule": { + "Eval": { "type": "object", "required": [ + "object", "id", - "action", - "eventType", - "enabled", - "systemData" + "name", + "data_source_config", + "testing_criteria", + "created_at", + "metadata" ], "properties": { - "id": { + "object": { "type": "string", - "description": "Unique identifier for the evaluation rule.", - "readOnly": true + "enum": [ + "eval" + ], + "description": "The object type.", + "x-stainless-const": true, + "default": "eval" }, - "displayName": { + "id": { "type": "string", - "description": "Display Name for the evaluation rule." + "description": "Unique identifier for the evaluation." }, - "description": { + "name": { "type": "string", - "description": "Description for the evaluation rule." + "description": "The name of the evaluation." }, - "action": { - "allOf": [ + "data_source_config": { + "oneOf": [ { - "$ref": "#/components/schemas/EvaluationRuleAction" + "$ref": "#/components/schemas/OpenAI.CreateEvalCustomDataSourceConfig" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalLogsDataSourceConfig" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalStoredCompletionsDataSourceConfig" + }, + { + "$ref": "#/components/schemas/AzureAIDataSourceConfig" + }, + { + "$ref": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" } ], - "description": "Definition of the evaluation rule action.", - "x-ms-foundry-meta": { - "conditional_previews": [ - "Evaluations=V1Preview" + "description": "Configuration of data sources used in runs of the evaluation." + }, + "testing_criteria": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/OpenAI.EvalGraderLabelModel" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderStringCheck" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderTextSimilarity" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderPython" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderScoreModel" + }, + { + "$ref": "#/components/schemas/EvalGraderAzureAIEvaluator" + }, + { + "$ref": "#/components/schemas/EvalGraderInspectAI" + } ] - } + }, + "description": "A list of testing criteria." }, - "filter": { + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "The Unix timestamp (in seconds) for when the eval was created." + }, + "metadata": { + "type": "object", "allOf": [ { - "$ref": "#/components/schemas/EvaluationRuleFilter" + "$ref": "#/components/schemas/OpenAI.Metadata" } ], - "description": "Filter condition of the evaluation rule." + "nullable": true }, - "eventType": { + "modified_at": { "allOf": [ { - "$ref": "#/components/schemas/EvaluationRuleEventType" + "$ref": "#/components/schemas/integer" } ], - "description": "Event type that the evaluation rule applies to." + "description": "Unix timestamp (in seconds) when the evaluation run was last modified." }, - "enabled": { - "type": "boolean", - "description": "Indicates whether the evaluation rule is enabled. Default is true." + "created_by": { + "type": "string", + "description": "the name of the person who created the run." }, - "systemData": { + "properties": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "System metadata for the evaluation rule.", - "readOnly": true + "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." } }, - "description": "Evaluation rule model." + "description": "An Eval object with a data source config and testing criteria.\nAn Eval represents a task to be done for your LLM integration.\nLike:\n- Improve the quality of my chatbot\n- See how well my chatbot handles customer support\n- Check if o4-mini is better at my usecase than gpt-4o", + "title": "Eval", + "x-oaiMeta": { + "name": "The eval object", + "group": "evals", + "example": "{\n \"object\": \"eval\",\n \"id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"data_source_config\": {\n \"type\": \"custom\",\n \"item_schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\"type\": \"string\"},\n },\n \"required\": [\"label\"]\n },\n \"include_sample_schema\": true\n },\n \"testing_criteria\": [\n {\n \"name\": \"My string check grader\",\n \"type\": \"string_check\",\n \"input\": \"{{sample.output_text}}\",\n \"reference\": \"{{item.label}}\",\n \"operation\": \"eq\",\n }\n ],\n \"name\": \"External Data Eval\",\n \"created_at\": 1739314509,\n \"metadata\": {\n \"test\": \"synthetics\",\n }\n}\n" + } }, - "EvaluationRuleAction": { + "EvalCsvFileIdSource": { "type": "object", "required": [ - "type" + "type", + "id" ], "properties": { "type": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleActionType" - } - ], - "description": "Type of the evaluation action." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "continuousEvaluation": "#/components/schemas/ContinuousEvaluationRuleAction", - "humanEvaluationPreview": "#/components/schemas/HumanEvaluationPreviewRuleAction" - } - }, - "description": "Evaluation action model." - }, - "EvaluationRuleActionType": { - "anyOf": [ - { - "type": "string" - }, - { "type": "string", "enum": [ - "continuousEvaluation", - "humanEvaluationPreview" - ] - } - ], - "description": "Type of the evaluation action." - }, - "EvaluationRuleEventType": { - "anyOf": [ - { - "type": "string" + "file_id" + ], + "description": "The type of source, always `file_id`." }, - { - "type": "string", - "enum": [ - "responseCompleted", - "manual" - ] - } - ], - "description": "Type of the evaluation rule event." - }, - "EvaluationRuleFilter": { - "type": "object", - "required": [ - "agentName" - ], - "properties": { - "agentName": { + "id": { "type": "string", - "description": "Filter by agent name." + "description": "The identifier of the uploaded CSV file." } }, - "description": "Evaluation filter model." + "description": "Represents a reference to an uploaded CSV file used as a source for evaluation data." }, - "EvaluationRunClusterInsightRequest": { + "EvalCsvRunDataSource": { "type": "object", "required": [ "type", - "evalId", - "runIds" + "source" ], "properties": { "type": { "type": "string", "enum": [ - "EvaluationRunClusterInsight" + "csv" ], - "description": "The type of insights request." - }, - "evalId": { - "type": "string", - "description": "Evaluation Id for the insights." - }, - "runIds": { - "type": "array", - "items": { - "type": "string" - }, - "description": "List of evaluation run IDs for the insights." + "description": "The type of data source, always `csv`." }, - "modelConfiguration": { + "source": { "allOf": [ { - "$ref": "#/components/schemas/InsightModelConfiguration" + "$ref": "#/components/schemas/EvalCsvFileIdSource" } ], - "description": "Configuration of the model used in the insight generation." + "description": "The source of the CSV data, either inline content or a file reference." } }, "allOf": [ { - "$ref": "#/components/schemas/InsightRequest" + "$ref": "#/components/schemas/EvalRunDataSource" } ], - "description": "Insights on set of Evaluation Results" + "description": "Represents a CSV data source for evaluation runs." }, - "EvaluationRunClusterInsightResult": { + "EvalGraderAzureAIEvaluator": { "type": "object", "required": [ "type", - "clusterInsight" + "name", + "evaluator_name" ], "properties": { "type": { "type": "string", "enum": [ - "EvaluationRunClusterInsight" + "azure_ai_evaluator" ], - "description": "The type of insights result." + "description": "The object type, which is always `azure_ai_evaluator`." }, - "clusterInsight": { - "$ref": "#/components/schemas/ClusterInsightResult" + "name": { + "type": "string", + "description": "The name of the grader." + }, + "evaluator_name": { + "type": "string", + "description": "The name of the evaluator." + }, + "evaluator_version": { + "type": "string", + "description": "The version of the evaluator. Latest version if not specified." + }, + "initialization_parameters": { + "type": "object", + "additionalProperties": {}, + "description": "The initialization parameters for the evaluation. Must support structured outputs." + }, + "data_mapping": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The model to use for the evaluation. Must support structured outputs." } }, - "allOf": [ - { - "$ref": "#/components/schemas/InsightResult" - } - ], - "description": "Insights from the evaluation run cluster analysis." + "title": "AzureAIEvaluatorGrader" }, - "EvaluationScheduleTask": { + "EvalGraderInspectAI": { "type": "object", "required": [ "type", - "evalId", - "evalRun" + "name", + "task_name" ], "properties": { "type": { "type": "string", "enum": [ - "Evaluation" - ] + "inspect_ai" + ], + "description": "The object type, which is always `inspect_ai`." }, - "evalId": { + "name": { "type": "string", - "description": "Identifier of the evaluation group." + "description": "The display name of the benchmark." }, - "evalRun": { - "type": "object", - "description": "The evaluation run payload." + "task_name": { + "type": "string", + "description": "The inspect_ai task module path (e.g., `inspect_evals/gpqa_diamond`)." } }, - "allOf": [ - { - "$ref": "#/components/schemas/ScheduleTask" - } - ], - "description": "Evaluation task for the schedule." + "description": "Grader inspect_ai definition for inspect_ai benchmark evaluators." }, - "EvaluationTaxonomy": { + "EvalResult": { "type": "object", "required": [ "name", - "version", - "taxonomyInput" + "type", + "score", + "passed" ], "properties": { - "id": { - "type": "string", - "description": "Asset ID, a unique identifier for the asset", - "readOnly": true - }, "name": { "type": "string", - "description": "The name of the resource", - "readOnly": true + "description": "name of the check" }, - "version": { + "type": { "type": "string", - "description": "The version of the resource", - "readOnly": true - }, - "taxonomyInput": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationTaxonomyInput" - } - ], - "description": "Input configuration for the evaluation taxonomy." + "description": "type of the check" }, - "taxonomyCategories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TaxonomyCategory" - }, - "description": "List of taxonomy categories." + "score": { + "type": "number", + "format": "float", + "description": "score" }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional properties for the evaluation taxonomy." + "passed": { + "type": "boolean", + "description": "indicates if the check passed or failed" } }, - "description": "Evaluation Taxonomy Definition" + "description": "Result of the evaluation." }, - "EvaluationTaxonomyCreateOrUpdate": { + "EvalRun": { "type": "object", "required": [ - "taxonomyInput" + "object", + "id", + "eval_id", + "status", + "model", + "name", + "created_at", + "report_url", + "result_counts", + "per_model_usage", + "per_testing_criteria_results", + "data_source", + "metadata", + "error" ], "properties": { - "description": { + "object": { "type": "string", - "description": "The asset description text." + "enum": [ + "eval.run" + ], + "description": "The type of the object. Always \"eval.run\".", + "x-stainless-const": true, + "default": "eval.run" }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "id": { + "type": "string", + "description": "Unique identifier for the evaluation run." }, - "taxonomyInput": { + "eval_id": { + "type": "string", + "description": "The identifier of the associated evaluation." + }, + "status": { + "type": "string", + "description": "The status of the evaluation run." + }, + "model": { + "type": "string", + "description": "The model that is evaluated, if applicable." + }, + "name": { + "type": "string", + "description": "The name of the evaluation run." + }, + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "Unix timestamp (in seconds) when the evaluation run was created." + }, + "report_url": { + "type": "string", + "format": "uri", + "description": "The URL to the rendered evaluation run report on the UI dashboard." + }, + "result_counts": { "allOf": [ { - "$ref": "#/components/schemas/EvaluationTaxonomyInput" + "$ref": "#/components/schemas/OpenAI.EvalRunResultCounts" } ], - "description": "Input configuration for the evaluation taxonomy." + "description": "Counters summarizing the outcomes of the evaluation run." }, - "taxonomyCategories": { + "per_model_usage": { "type": "array", "items": { - "$ref": "#/components/schemas/TaxonomyCategory" + "$ref": "#/components/schemas/OpenAI.EvalRunPerModelUsage" }, - "description": "List of taxonomy categories." + "description": "Usage statistics for each model during the evaluation run." }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" + "per_testing_criteria_results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.EvalRunPerTestingCriteriaResults" }, - "description": "Additional properties for the evaluation taxonomy." - } - }, - "description": "Evaluation Taxonomy Definition" - }, - "EvaluationTaxonomyInput": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "allOf": [ + "description": "Results per testing criteria applied during the evaluation run." + }, + "data_source": { + "oneOf": [ { - "$ref": "#/components/schemas/EvaluationTaxonomyInputType" + "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" + }, + { + "$ref": "#/components/schemas/EvalRunDataSource" } ], - "description": "Input type of the evaluation taxonomy." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "agent": "#/components/schemas/AgentTaxonomyInput" - } - }, - "description": "Input configuration for the evaluation taxonomy." - }, - "EvaluationTaxonomyInputType": { - "anyOf": [ - { - "type": "string" + "description": "Information about the run's data source." }, - { - "type": "string", - "enum": [ - "agent", - "policy" - ] - } - ], - "description": "Type of the evaluation taxonomy input." - }, - "EvaluationTaxonomyInputUpdate": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { + "metadata": { + "type": "object", "allOf": [ { - "$ref": "#/components/schemas/EvaluationTaxonomyInputType" + "$ref": "#/components/schemas/OpenAI.Metadata" } ], - "description": "Input type of the evaluation taxonomy." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "agent": "#/components/schemas/AgentTaxonomyInputUpdate" - } - }, - "description": "Input configuration for the evaluation taxonomy." - }, - "EvaluationTaxonomyUpdate": { - "type": "object", - "properties": { - "description": { - "type": "string", - "description": "The asset description text." + "nullable": true }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "error": { + "$ref": "#/components/schemas/OpenAI.EvalApiError" }, - "taxonomyInput": { + "modified_at": { "allOf": [ { - "$ref": "#/components/schemas/EvaluationTaxonomyInputUpdate" + "$ref": "#/components/schemas/integer" } ], - "description": "Input configuration for the evaluation taxonomy." + "description": "Unix timestamp (in seconds) when the evaluation run was last modified." }, - "taxonomyCategories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TaxonomyCategory" - }, - "description": "List of taxonomy categories." + "created_by": { + "type": "string", + "description": "the name of the person who created the run." }, "properties": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Additional properties for the evaluation taxonomy." + "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." } }, - "description": "Evaluation Taxonomy Definition" - }, - "EvaluatorCategory": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "quality", - "safety", - "agents" - ] - } - ], - "description": "The category of the evaluator" + "description": "A schema representing an evaluation run.", + "title": "EvalRun", + "x-oaiMeta": { + "name": "The eval run object", + "group": "evals", + "example": "{\n \"object\": \"eval.run\",\n \"id\": \"evalrun_67e57965b480819094274e3a32235e4c\",\n \"eval_id\": \"eval_67e579652b548190aaa83ada4b125f47\",\n \"report_url\": \"https://platform.openai.com/evaluations/eval_67e579652b548190aaa83ada4b125f47?run_id=evalrun_67e57965b480819094274e3a32235e4c\",\n \"status\": \"queued\",\n \"model\": \"gpt-4o-mini\",\n \"name\": \"gpt-4o-mini\",\n \"created_at\": 1743092069,\n \"result_counts\": {\n \"total\": 0,\n \"errored\": 0,\n \"failed\": 0,\n \"passed\": 0\n },\n \"per_model_usage\": null,\n \"per_testing_criteria_results\": null,\n \"data_source\": {\n \"type\": \"completions\",\n \"source\": {\n \"type\": \"file_content\",\n \"content\": [\n {\n \"item\": {\n \"input\": \"Tech Company Launches Advanced Artificial Intelligence Platform\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Central Bank Increases Interest Rates Amid Inflation Concerns\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Summit Addresses Climate Change Strategies\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Major Retailer Reports Record-Breaking Holiday Sales\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"National Team Qualifies for World Championship Finals\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Stock Markets Rally After Positive Economic Data Released\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Manufacturer Announces Merger with Competitor\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Breakthrough in Renewable Energy Technology Unveiled\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"World Leaders Sign Historic Climate Agreement\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Professional Athlete Sets New Record in Championship Event\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Financial Institutions Adapt to New Regulatory Requirements\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Tech Conference Showcases Advances in Artificial Intelligence\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Markets Respond to Oil Price Fluctuations\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Cooperation Strengthened Through New Treaty\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Sports League Announces Revised Schedule for Upcoming Season\",\n \"ground_truth\": \"Sports\"\n }\n }\n ]\n },\n \"input_messages\": {\n \"type\": \"template\",\n \"template\": [\n {\n \"type\": \"message\",\n \"role\": \"developer\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"Categorize a given news headline into one of the following topics: Technology, Markets, World, Business, or Sports.\n\n# Steps\n\n1. Analyze the content of the news headline to understand its primary focus.\n2. Extract the subject matter, identifying any key indicators or keywords.\n3. Use the identified indicators to determine the most suitable category out of the five options: Technology, Markets, World, Business, or Sports.\n4. Ensure only one category is selected per headline.\n\n# Output Format\n\nRespond with the chosen category as a single word. For instance: \"Technology\", \"Markets\", \"World\", \"Business\", or \"Sports\".\n\n# Examples\n\n**Input**: \"Apple Unveils New iPhone Model, Featuring Advanced AI Features\"\n**Output**: \"Technology\"\n\n**Input**: \"Global Stocks Mixed as Investors Await Central Bank Decisions\"\n**Output**: \"Markets\"\n\n**Input**: \"War in Ukraine: Latest Updates on Negotiation Status\"\n**Output**: \"World\"\n\n**Input**: \"Microsoft in Talks to Acquire Gaming Company for $2 Billion\"\n**Output**: \"Business\"\n\n**Input**: \"Manchester United Secures Win in Premier League Football Match\"\n**Output**: \"Sports\"\n\n# Notes\n\n- If the headline appears to fit into more than one category, choose the most dominant theme.\n- Keywords or phrases such as \"stocks\", \"company acquisition\", \"match\", or technological brands can be good indicators for classification.\n\"\n }\n },\n {\n \"type\": \"message\",\n \"role\": \"user\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"{{item.input}}\"\n }\n }\n ]\n },\n \"model\": \"gpt-4o-mini\",\n \"sampling_params\": {\n \"seed\": 42,\n \"temperature\": 1.0,\n \"top_p\": 1.0,\n \"max_completions_tokens\": 2048\n }\n },\n \"error\": null,\n \"metadata\": {}\n}\n" + } }, - "EvaluatorCredentialRequest": { + "EvalRunDataSource": { "type": "object", "required": [ - "blobUri" + "type" ], "properties": { - "blobUri": { + "type": { "type": "string", - "format": "uri", - "description": "The blob URI for the evaluator storage. Example: `https://account.blob.core.windows.net:443/container`" + "description": "The data source type discriminator." } }, - "description": "Request body for getting evaluator credentials" + "discriminator": { + "propertyName": "type", + "mapping": { + "azure_ai_traces_preview": "#/components/schemas/TracesPreviewEvalRunDataSource", + "azure_ai_synthetic_data_gen_preview": "#/components/schemas/SyntheticDataGenerationPreviewEvalRunDataSource", + "azure_ai_responses": "#/components/schemas/AzureAIResponsesEvalRunDataSource", + "azure_ai_target_completions": "#/components/schemas/TargetCompletionEvalRunDataSource", + "csv": "#/components/schemas/EvalCsvRunDataSource", + "azure_ai_red_team": "#/components/schemas/RedTeamEvalRunDataSource", + "azure_ai_benchmark_preview": "#/components/schemas/AzureAIBenchmarkPreviewEvalRunDataSource" + } + }, + "description": "Base class for run data sources with discriminator support." }, - "EvaluatorDefinition": { + "EvalRunOutputItem": { "type": "object", "required": [ - "type" + "object", + "id", + "run_id", + "eval_id", + "created_at", + "status", + "datasource_item_id", + "datasource_item", + "results", + "sample" ], "properties": { - "type": { + "object": { + "type": "string", + "enum": [ + "eval.run.output_item" + ], + "description": "The type of the object. Always \"eval.run.output_item\".", + "x-stainless-const": true, + "default": "eval.run.output_item" + }, + "id": { + "type": "string", + "description": "Unique identifier for the evaluation run output item." + }, + "run_id": { + "type": "string", + "description": "The identifier of the evaluation run associated with this output item." + }, + "eval_id": { + "type": "string", + "description": "The identifier of the evaluation group." + }, + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "Unix timestamp (in seconds) when the evaluation run was created." + }, + "status": { + "type": "string", + "description": "The status of the evaluation run." + }, + "datasource_item_id": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorDefinitionType" + "$ref": "#/components/schemas/OpenAI.integer" } ], - "description": "The type of evaluator definition" - }, - "init_parameters": { - "type": "object", - "additionalProperties": {}, - "description": "The JSON schema (Draft 2020-12) for the evaluator's input parameters. This includes parameters like type, properties, required." + "description": "The identifier for the data source item." }, - "data_schema": { + "datasource_item": { "type": "object", "additionalProperties": {}, - "description": "The JSON schema (Draft 2020-12) for the evaluator's input data. This includes parameters like type, properties, required." + "description": "Details of the input data source item." }, - "metrics": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/EvaluatorMetric" + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRunOutputItemResult" }, - "description": "List of output metrics produced by this evaluator" - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "code": "#/components/schemas/CodeBasedEvaluatorDefinition", - "prompt": "#/components/schemas/PromptBasedEvaluatorDefinition" - } - }, - "description": "Base evaluator configuration with discriminator" - }, - "EvaluatorDefinitionType": { - "anyOf": [ - { - "type": "string" + "description": "A list of grader results for this output item." }, - { - "type": "string", - "enum": [ - "prompt", - "code", - "prompt_and_code", - "service", - "openai_graders" - ] + "sample": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.EvalRunOutputItemSample" + } + ], + "description": "A sample containing the input and output of the evaluation run." } - ], - "description": "The type of evaluator definition" + }, + "description": "A schema representing an evaluation run output item.", + "title": "EvalRunOutputItem", + "x-oaiMeta": { + "name": "The eval run output item object", + "group": "evals", + "example": "{\n \"object\": \"eval.run.output_item\",\n \"id\": \"outputitem_67abd55eb6548190bb580745d5644a33\",\n \"run_id\": \"evalrun_67abd54d60ec8190832b46859da808f7\",\n \"eval_id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"created_at\": 1739314509,\n \"status\": \"pass\",\n \"datasource_item_id\": 137,\n \"datasource_item\": {\n \"teacher\": \"To grade essays, I only check for style, content, and grammar.\",\n \"student\": \"I am a student who is trying to write the best essay.\"\n },\n \"results\": [\n {\n \"name\": \"String Check Grader\",\n \"type\": \"string-check-grader\",\n \"score\": 1.0,\n \"passed\": true,\n }\n ],\n \"sample\": {\n \"input\": [\n {\n \"role\": \"system\",\n \"content\": \"You are an evaluator bot...\"\n },\n {\n \"role\": \"user\",\n \"content\": \"You are assessing...\"\n }\n ],\n \"output\": [\n {\n \"role\": \"assistant\",\n \"content\": \"The rubric is not clear nor concise.\"\n }\n ],\n \"finish_reason\": \"stop\",\n \"model\": \"gpt-4o-2024-08-06\",\n \"usage\": {\n \"total_tokens\": 521,\n \"completion_tokens\": 2,\n \"prompt_tokens\": 519,\n \"cached_tokens\": 0\n },\n \"error\": null,\n \"temperature\": 1.0,\n \"max_completion_tokens\": 2048,\n \"top_p\": 1.0,\n \"seed\": 42\n }\n}\n" + } }, - "EvaluatorMetric": { + "EvalRunOutputItemResult": { "type": "object", + "required": [ + "name", + "score", + "passed" + ], "properties": { + "name": { + "type": "string", + "description": "The name of the grader." + }, "type": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluatorMetricType" - } - ], - "description": "Type of the metric." + "type": "string", + "description": "The grader type (for example, \"string-check-grader\")." }, - "desirable_direction": { + "score": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorMetricDirection" + "$ref": "#/components/schemas/OpenAI.numeric" } ], - "description": "It indicates whether a higher value is better or a lower value is better for this metric." + "description": "The numeric score produced by the grader." }, - "min_value": { - "type": "number", - "format": "float", - "description": "Minimum value for the metric" + "passed": { + "type": "boolean", + "description": "Whether the grader considered the output a pass." }, - "max_value": { - "type": "number", - "format": "float", - "description": "Maximum value for the metric. If not specified, it is assumed to be unbounded." + "sample": { + "type": "object", + "additionalProperties": {}, + "nullable": true, + "description": "Optional sample or intermediate data produced by the grader." + }, + "metric": { + "type": "string", + "description": "The name of the metric (e.g., \"fluency\", \"f1_score\")." + }, + "label": { + "type": "string", + "description": "The label associated with the test criteria metric (e.g., \"pass\", \"fail\", \"good\", \"bad\")." }, "threshold": { "type": "number", "format": "float", - "description": "Default pass/fail threshold for this metric." + "description": "The threshold used to determine pass/fail for this test criteria, if it is numerical." }, - "is_primary": { - "type": "boolean", - "description": "Indicates if this metric is primary when there are multiple metrics." + "reason": { + "type": "string", + "description": "The reason for the test criteria metric." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional details about the test criteria metric." } }, - "description": "Evaluator Metric" + "additionalProperties": {}, + "description": "A single grader result for an evaluation run output item.", + "title": "EvalRunOutputItemResult" }, - "EvaluatorMetricDirection": { - "anyOf": [ - { + "EvalRunOutputItemSampleInput": { + "type": "object", + "required": [ + "role", + "content", + "tool_calls" + ], + "properties": { + "role": { "type": "string" }, - { - "type": "string", - "enum": [ - "increase", - "decrease", - "neutral" - ] - } - ], - "description": "The direction of the metric indicating whether a higher value is better, a lower value is better, or neutral" - }, - "EvaluatorMetricType": { - "anyOf": [ - { + "content": { "type": "string" }, - { - "type": "string", - "enum": [ - "ordinal", - "continuous", - "boolean" - ] + "tool_calls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CompletionMessageToolCallChunk" + }, + "description": "Tool calls made within the message, if any." } - ], - "description": "The type of the evaluator" + }, + "description": "A message in the evaluation run." }, - "EvaluatorType": { - "anyOf": [ - { + "EvalRunOutputItemSampleOutput": { + "type": "object", + "required": [ + "tool_calls" + ], + "properties": { + "role": { "type": "string" }, - { - "type": "string", - "enum": [ - "builtin", - "custom" - ] + "content": { + "type": "string" + }, + "tool_calls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CompletionMessageToolCallChunk" + }, + "description": "Tool calls made within the message, if any." } - ], - "description": "The type of the evaluator" + }, + "description": "A message in the evaluation run." }, - "EvaluatorVersion": { + "EvalRunResultCompareItem": { "type": "object", "required": [ - "evaluator_type", - "categories", - "definition", - "created_by", - "created_at", - "modified_at", - "name", - "version" + "treatmentRunId", + "treatmentRunSummary", + "deltaEstimate", + "pValue", + "treatmentEffect" ], "properties": { - "display_name": { + "treatmentRunId": { "type": "string", - "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Metadata about the evaluator" + "description": "The treatment run ID." }, - "evaluator_type": { + "treatmentRunSummary": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorType" + "$ref": "#/components/schemas/EvalRunResultSummary" } ], - "description": "The type of the evaluator" + "description": "Summary statistics of the treatment run." }, - "categories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvaluatorCategory" - }, - "description": "The categories of the evaluator" + "deltaEstimate": { + "type": "number", + "format": "float", + "description": "Estimated difference between treatment and baseline." }, - "definition": { + "pValue": { + "type": "number", + "format": "float", + "description": "P-value for the treatment effect." + }, + "treatmentEffect": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorDefinition" + "$ref": "#/components/schemas/TreatmentEffectType" } ], - "description": "Definition of the evaluator" - }, - "created_by": { - "type": "string", - "description": "Creator of the evaluator", - "readOnly": true - }, - "created_at": { - "type": "string", - "description": "Creation date/time of the evaluator", - "readOnly": true - }, - "modified_at": { - "type": "string", - "description": "Last modified date/time of the evaluator", - "readOnly": true - }, - "id": { - "type": "string", - "description": "Asset ID, a unique identifier for the asset", - "readOnly": true - }, - "name": { - "type": "string", - "description": "The name of the resource", - "readOnly": true - }, - "version": { - "type": "string", - "description": "The version of the resource", - "readOnly": true + "description": "Type of treatment effect." } }, - "description": "Evaluator Definition" + "description": "Metric comparison for a treatment against the baseline." }, - "EvaluatorVersionCreate": { + "EvalRunResultComparison": { "type": "object", "required": [ - "evaluator_type", - "categories", - "definition" + "testingCriteria", + "metric", + "evaluator", + "baselineRunSummary", + "compareItems" ], "properties": { - "display_name": { + "testingCriteria": { "type": "string", - "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." + "description": "Name of the testing criteria." }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Metadata about the evaluator" + "metric": { + "type": "string", + "description": "Metric being evaluated." }, - "evaluator_type": { + "evaluator": { + "type": "string", + "description": "Name of the evaluator for this testing criteria." + }, + "baselineRunSummary": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorType" + "$ref": "#/components/schemas/EvalRunResultSummary" } ], - "description": "The type of the evaluator" + "description": "Summary statistics of the baseline run." }, - "categories": { + "compareItems": { "type": "array", "items": { - "$ref": "#/components/schemas/EvaluatorCategory" + "$ref": "#/components/schemas/EvalRunResultCompareItem" }, - "description": "The categories of the evaluator" + "description": "List of comparison results for each treatment run." + } + }, + "description": "Comparison results for treatment runs against the baseline." + }, + "EvalRunResultSummary": { + "type": "object", + "required": [ + "runId", + "sampleCount", + "average", + "standardDeviation" + ], + "properties": { + "runId": { + "type": "string", + "description": "The evaluation run ID." }, - "definition": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluatorDefinition" - } - ], - "description": "Definition of the evaluator" + "sampleCount": { + "type": "integer", + "format": "int32", + "description": "Number of samples in the evaluation run." }, - "description": { - "type": "string", - "description": "The asset description text." + "average": { + "type": "number", + "format": "float", + "description": "Average value of the metric in the evaluation run." }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "standardDeviation": { + "type": "number", + "format": "float", + "description": "Standard deviation of the metric in the evaluation run." } }, - "description": "Evaluator Definition" + "description": "Summary statistics of a metric in an evaluation run." }, - "EvaluatorVersionUpdate": { + "EvaluationComparisonInsightRequest": { "type": "object", + "required": [ + "type", + "evalId", + "baselineRunId", + "treatmentRunIds" + ], "properties": { - "display_name": { + "type": { "type": "string", - "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Metadata about the evaluator" + "enum": [ + "EvaluationComparison" + ], + "description": "The type of request." }, - "categories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvaluatorCategory" - }, - "description": "The categories of the evaluator" + "evalId": { + "type": "string", + "description": "Identifier for the evaluation." }, - "description": { + "baselineRunId": { "type": "string", - "description": "The asset description text." + "description": "The baseline run ID for comparison." }, - "tags": { - "type": "object", - "additionalProperties": { + "treatmentRunIds": { + "type": "array", + "items": { "type": "string" }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "description": "List of treatment run IDs for comparison." } }, - "description": "Evaluator Definition" + "allOf": [ + { + "$ref": "#/components/schemas/InsightRequest" + } + ], + "description": "Evaluation Comparison Request" }, - "FabricDataAgentToolCall": { + "EvaluationComparisonInsightResult": { "type": "object", "required": [ "type", - "call_id", - "arguments", - "status" + "comparisons", + "method" ], "properties": { "type": { "type": "string", "enum": [ - "fabric_dataagent_preview_call" - ] + "EvaluationComparison" + ], + "description": "The type of insights result." }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." + "comparisons": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRunResultComparison" + }, + "description": "Comparison results for each treatment run against the baseline." }, - "arguments": { + "method": { "type": "string", - "description": "A JSON string of the arguments to pass to the tool." - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } - ], - "description": "The status of the tool call." + "description": "The statistical method used for comparison." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/InsightResult" } ], - "description": "A Fabric data agent tool call." + "description": "Insights from the evaluation comparison." }, - "FabricDataAgentToolCallOutput": { + "EvaluationResultSample": { "type": "object", "required": [ "type", - "call_id", - "status" + "evaluationResult" ], "properties": { "type": { "type": "string", "enum": [ - "fabric_dataagent_preview_call_output" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "output": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallOutputContent" - } + "EvaluationResultSample" ], - "description": "The output from the Fabric data agent tool call." + "description": "Evaluation Result Sample Type" }, - "status": { + "evaluationResult": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/EvalResult" } ], - "description": "The status of the tool call." + "description": "Evaluation result for the analysis sample." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/InsightSample" } ], - "description": "The output of a Fabric data agent tool call." + "description": "A sample from the evaluation result." }, - "FabricDataAgentToolParameters": { + "EvaluationRule": { "type": "object", + "required": [ + "id", + "action", + "eventType", + "enabled", + "systemData" + ], "properties": { - "name": { + "id": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "description": "Unique identifier for the evaluation rule.", + "readOnly": true + }, + "displayName": { + "type": "string", + "description": "Display Name for the evaluation rule." }, "description": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "description": "Description for the evaluation rule." }, - "project_connections": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ToolProjectConnection" + "action": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleAction" + } + ], + "description": "Definition of the evaluation rule action.", + "x-ms-foundry-meta": { + "conditional_previews": [ + "Evaluations=V1Preview" + ] + } + }, + "filter": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleFilter" + } + ], + "description": "Filter condition of the evaluation rule." + }, + "eventType": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleEventType" + } + ], + "description": "Event type that the evaluation rule applies to." + }, + "enabled": { + "type": "boolean", + "description": "Indicates whether the evaluation rule is enabled. Default is true." + }, + "systemData": { + "type": "object", + "additionalProperties": { + "type": "string" }, - "maxItems": 1, - "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." + "description": "System metadata for the evaluation rule.", + "readOnly": true } }, - "description": "The fabric data agent tool parameters." + "description": "Evaluation rule model." }, - "FileDatasetVersion": { + "EvaluationRuleAction": { "type": "object", "required": [ "type" ], "properties": { "type": { - "type": "string", - "enum": [ - "uri_file" + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleActionType" + } ], - "description": "Dataset type" + "description": "Type of the evaluation action." } }, - "allOf": [ + "discriminator": { + "propertyName": "type", + "mapping": { + "continuousEvaluation": "#/components/schemas/ContinuousEvaluationRuleAction", + "humanEvaluationPreview": "#/components/schemas/HumanEvaluationPreviewRuleAction" + } + }, + "description": "Evaluation action model." + }, + "EvaluationRuleActionType": { + "anyOf": [ { - "$ref": "#/components/schemas/DatasetVersion" + "type": "string" + }, + { + "type": "string", + "enum": [ + "continuousEvaluation", + "humanEvaluationPreview" + ] } ], - "description": "FileDatasetVersion Definition" + "description": "Type of the evaluation action." }, - "FileDatasetVersionUpdate": { + "EvaluationRuleEventType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "responseCompleted", + "manual" + ] + } + ], + "description": "Type of the evaluation rule event." + }, + "EvaluationRuleFilter": { "type": "object", "required": [ - "type" + "agentName" + ], + "properties": { + "agentName": { + "type": "string", + "description": "Filter by agent name." + } + }, + "description": "Evaluation filter model." + }, + "EvaluationRunClusterInsightRequest": { + "type": "object", + "required": [ + "type", + "evalId", + "runIds" ], "properties": { "type": { "type": "string", "enum": [ - "uri_file" + "EvaluationRunClusterInsight" ], - "description": "Dataset type" + "description": "The type of insights request." + }, + "evalId": { + "type": "string", + "description": "Evaluation Id for the insights." + }, + "runIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of evaluation run IDs for the insights." + }, + "modelConfiguration": { + "allOf": [ + { + "$ref": "#/components/schemas/InsightModelConfiguration" + } + ], + "description": "Configuration of the model used in the insight generation." } }, "allOf": [ { - "$ref": "#/components/schemas/DatasetVersionUpdate" + "$ref": "#/components/schemas/InsightRequest" } ], - "description": "FileDatasetVersion Definition" + "description": "Insights on set of Evaluation Results" }, - "FolderDatasetVersion": { + "EvaluationRunClusterInsightResult": { "type": "object", "required": [ - "type" + "type", + "clusterInsight" ], "properties": { "type": { "type": "string", "enum": [ - "uri_folder" + "EvaluationRunClusterInsight" ], - "description": "Dataset type" + "description": "The type of insights result." + }, + "clusterInsight": { + "$ref": "#/components/schemas/ClusterInsightResult" } }, "allOf": [ { - "$ref": "#/components/schemas/DatasetVersion" + "$ref": "#/components/schemas/InsightResult" } ], - "description": "FileDatasetVersion Definition" + "description": "Insights from the evaluation run cluster analysis." }, - "FolderDatasetVersionUpdate": { + "EvaluationScheduleTask": { "type": "object", "required": [ - "type" + "type", + "evalId", + "evalRun" ], "properties": { "type": { "type": "string", "enum": [ - "uri_folder" - ], - "description": "Dataset type" + "Evaluation" + ] + }, + "evalId": { + "type": "string", + "description": "Identifier of the evaluation group." + }, + "evalRun": { + "type": "object", + "description": "The evaluation run payload." } }, "allOf": [ { - "$ref": "#/components/schemas/DatasetVersionUpdate" + "$ref": "#/components/schemas/ScheduleTask" } ], - "description": "FileDatasetVersion Definition" + "description": "Evaluation task for the schedule." }, - "FunctionToolCall": { + "EvaluationTaxonomy": { "type": "object", "required": [ "name", - "arguments" + "version", + "taxonomyInput" ], "properties": { + "id": { + "type": "string", + "description": "Asset ID, a unique identifier for the asset", + "readOnly": true + }, "name": { "type": "string", - "description": "The name of the function to call." + "description": "The name of the resource", + "readOnly": true }, - "arguments": { + "version": { "type": "string", - "description": "The arguments to call the function with, as generated by the model in JSON format." + "description": "The version of the resource", + "readOnly": true + }, + "taxonomyInput": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationTaxonomyInput" + } + ], + "description": "Input configuration for the evaluation taxonomy." + }, + "taxonomyCategories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaxonomyCategory" + }, + "description": "List of taxonomy categories." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional properties for the evaluation taxonomy." } }, - "description": "Details of a function tool call." + "description": "Evaluation Taxonomy Definition" }, - "HostedAgentDefinition": { + "EvaluationTaxonomyCreateOrUpdate": { "type": "object", "required": [ - "kind", - "container_protocol_versions", - "cpu", - "memory" + "taxonomyInput" ], "properties": { - "kind": { + "description": { "type": "string", - "enum": [ - "hosted" - ] + "description": "The asset description text." }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" }, - "description": "An array of tools the hosted agent's model may call while generating a response. You\ncan specify which tool to use by setting the `tool_choice` parameter." + "description": "Tag dictionary. Tags can be added, removed, and updated." }, - "container_protocol_versions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProtocolVersionRecord" - }, - "description": "The protocols that the agent supports for ingress communication of the containers.", - "example": [ - { - "protocol": "responses", - "version": "v0.1.1" - }, + "taxonomyInput": { + "allOf": [ { - "protocol": "a2a", - "version": "v0.3.0" + "$ref": "#/components/schemas/EvaluationTaxonomyInput" } - ] - }, - "cpu": { - "type": "string", - "description": "The CPU configuration for the hosted agent.", - "example": "0.25" + ], + "description": "Input configuration for the evaluation taxonomy." }, - "memory": { - "type": "string", - "description": "The memory configuration for the hosted agent.", - "example": "0.5Gi" + "taxonomyCategories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaxonomyCategory" + }, + "description": "List of taxonomy categories." }, - "environment_variables": { + "properties": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Environment variables to set in the hosted agent container.", - "example": { - "name": "LOG_LEVEL", - "value": "debug" - } - }, - "image": { - "type": "string", - "description": "The image ID for the agent, applicable to image-based hosted agents.", - "example": "my-registry.azurecr.io/my-hosted-agent:latest" + "description": "Additional properties for the evaluation taxonomy." } }, - "allOf": [ - { - "$ref": "#/components/schemas/AgentDefinition" - } - ], - "description": "The hosted agent definition.", - "x-ms-foundry-meta": { - "required_previews": [ - "HostedAgents=V1Preview" - ] - } + "description": "Evaluation Taxonomy Definition" }, - "HourlyRecurrenceSchedule": { + "EvaluationTaxonomyInput": { "type": "object", "required": [ "type" ], "properties": { "type": { - "type": "string", - "enum": [ - "Hourly" - ] + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationTaxonomyInputType" + } + ], + "description": "Input type of the evaluation taxonomy." } }, - "allOf": [ + "discriminator": { + "propertyName": "type", + "mapping": { + "agent": "#/components/schemas/AgentTaxonomyInput" + } + }, + "description": "Input configuration for the evaluation taxonomy." + }, + "EvaluationTaxonomyInputType": { + "anyOf": [ { - "$ref": "#/components/schemas/RecurrenceSchedule" + "type": "string" + }, + { + "type": "string", + "enum": [ + "agent", + "policy" + ] } ], - "description": "Hourly recurrence schedule." + "description": "Type of the evaluation taxonomy input." }, - "HumanEvaluationPreviewRuleAction": { + "EvaluationTaxonomyInputUpdate": { "type": "object", "required": [ - "type", - "templateId" + "type" ], "properties": { "type": { - "type": "string", - "enum": [ - "humanEvaluationPreview" - ] - }, - "templateId": { "allOf": [ { - "$ref": "#/components/schemas/AssetId" + "$ref": "#/components/schemas/EvaluationTaxonomyInputType" } ], - "description": "Human evaluation template Id." + "description": "Input type of the evaluation taxonomy." } }, - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleAction" + "discriminator": { + "propertyName": "type", + "mapping": { + "agent": "#/components/schemas/AgentTaxonomyInputUpdate" } - ], - "description": "Evaluation rule action for human evaluation." + }, + "description": "Input configuration for the evaluation taxonomy." }, - "Index": { + "EvaluationTaxonomyUpdate": { "type": "object", - "required": [ - "type", - "name", - "version" - ], "properties": { - "type": { + "description": { + "type": "string", + "description": "The asset description text." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." + }, + "taxonomyInput": { "allOf": [ { - "$ref": "#/components/schemas/IndexType" + "$ref": "#/components/schemas/EvaluationTaxonomyInputUpdate" } ], - "description": "Type of index" - }, - "id": { - "type": "string", - "description": "Asset ID, a unique identifier for the asset", - "readOnly": true + "description": "Input configuration for the evaluation taxonomy." }, - "name": { - "type": "string", - "description": "The name of the resource", - "readOnly": true + "taxonomyCategories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaxonomyCategory" + }, + "description": "List of taxonomy categories." }, - "version": { - "type": "string", - "description": "The version of the resource", - "readOnly": true - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "AzureSearch": "#/components/schemas/AzureAISearchIndex", - "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndex", - "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndex" + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional properties for the evaluation taxonomy." } }, - "description": "Index resource Definition" + "description": "Evaluation Taxonomy Definition" }, - "IndexType": { + "EvaluatorCategory": { "anyOf": [ { "type": "string" @@ -20536,14 +13846,29 @@ { "type": "string", "enum": [ - "AzureSearch", - "CosmosDBNoSqlVectorStore", - "ManagedAzureSearch" + "quality", + "safety", + "agents" ] } - ] + ], + "description": "The category of the evaluator" }, - "IndexUpdate": { + "EvaluatorCredentialRequest": { + "type": "object", + "required": [ + "blobUri" + ], + "properties": { + "blobUri": { + "type": "string", + "format": "uri", + "description": "The blob URI for the evaluator storage. Example: `https://account.blob.core.windows.net:443/container`" + } + }, + "description": "Request body for getting evaluator credentials" + }, + "EvaluatorDefinition": { "type": "object", "required": [ "type" @@ -20552,67 +13877,98 @@ "type": { "allOf": [ { - "$ref": "#/components/schemas/IndexType" + "$ref": "#/components/schemas/EvaluatorDefinitionType" } ], - "description": "Type of index" + "description": "The type of evaluator definition" }, - "description": { - "type": "string", - "description": "The asset description text." + "init_parameters": { + "type": "object", + "additionalProperties": {}, + "description": "The JSON schema (Draft 2020-12) for the evaluator's input parameters. This includes parameters like type, properties, required." }, - "tags": { + "data_schema": { + "type": "object", + "additionalProperties": {}, + "description": "The JSON schema (Draft 2020-12) for the evaluator's input data. This includes parameters like type, properties, required." + }, + "metrics": { "type": "object", "additionalProperties": { - "type": "string" + "$ref": "#/components/schemas/EvaluatorMetric" }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "description": "List of output metrics produced by this evaluator" } }, "discriminator": { "propertyName": "type", "mapping": { - "AzureSearch": "#/components/schemas/AzureAISearchIndexUpdate", - "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndexUpdate", - "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndexUpdate" + "code": "#/components/schemas/CodeBasedEvaluatorDefinition", + "prompt": "#/components/schemas/PromptBasedEvaluatorDefinition" } }, - "description": "Index resource Definition" + "description": "Base evaluator configuration with discriminator" }, - "Input": { - "type": "object", - "required": [ - "jobInputType" + "EvaluatorDefinitionType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "prompt", + "code", + "prompt_and_code", + "service", + "openai_graders" + ] + } ], + "description": "The type of evaluator definition" + }, + "EvaluatorMetric": { + "type": "object", "properties": { - "jobInputType": { + "type": { "allOf": [ { - "$ref": "#/components/schemas/AssetTypes" + "$ref": "#/components/schemas/EvaluatorMetricType" } ], - "description": "Specifies the type of job input." - }, - "uri": { - "type": "string", - "description": "Input Asset URI. Required for uri_file, uri_folder, and safetensors_model types." + "description": "Type of the metric." }, - "mode": { + "desirable_direction": { "allOf": [ { - "$ref": "#/components/schemas/InputOutputModes" + "$ref": "#/components/schemas/EvaluatorMetricDirection" } ], - "description": "Input Asset Delivery Mode. Applies to uri-based inputs." + "description": "It indicates whether a higher value is better or a lower value is better for this metric." }, - "value": { - "type": "string", - "description": "Literal value. Required for literal type." + "min_value": { + "type": "number", + "format": "float", + "description": "Minimum value for the metric" + }, + "max_value": { + "type": "number", + "format": "float", + "description": "Maximum value for the metric. If not specified, it is assumed to be unbounded." + }, + "threshold": { + "type": "number", + "format": "float", + "description": "Default pass/fail threshold for this metric." + }, + "is_primary": { + "type": "boolean", + "description": "Indicates if this metric is primary when there are multiple metrics." } }, - "description": "Job input definition." + "description": "Evaluator Metric" }, - "InputOutputModes": { + "EvaluatorMetricDirection": { "anyOf": [ { "type": "string" @@ -20620,667 +13976,591 @@ { "type": "string", "enum": [ - "ReadOnlyMount", - "ReadWriteMount", - "Download", - "Direct", - "Upload" + "increase", + "decrease", + "neutral" ] } ], - "description": "Enum to determine the input/output data delivery mode." + "description": "The direction of the metric indicating whether a higher value is better, a lower value is better, or neutral" }, - "Insight": { + "EvaluatorMetricType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "ordinal", + "continuous", + "boolean" + ] + } + ], + "description": "The type of the evaluator" + }, + "EvaluatorType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "builtin", + "custom" + ] + } + ], + "description": "The type of the evaluator" + }, + "EvaluatorVersion": { "type": "object", "required": [ - "id", - "metadata", - "state", - "displayName", - "request" + "evaluator_type", + "categories", + "definition", + "created_by", + "created_at", + "modified_at", + "name", + "version" ], "properties": { - "id": { + "display_name": { "type": "string", - "description": "The unique identifier for the insights report.", - "readOnly": true + "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." }, "metadata": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightsMetadata" - } - ], - "description": "Metadata about the insights report.", - "readOnly": true + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Metadata about the evaluator" }, - "state": { + "evaluator_type": { "allOf": [ { - "$ref": "#/components/schemas/Azure.Core.Foundations.OperationState" + "$ref": "#/components/schemas/EvaluatorType" } ], - "description": "The current state of the insights.", - "readOnly": true + "description": "The type of the evaluator" }, - "displayName": { - "type": "string", - "description": "User friendly display name for the insight." + "categories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluatorCategory" + }, + "description": "The categories of the evaluator" }, - "request": { + "definition": { "allOf": [ { - "$ref": "#/components/schemas/InsightRequest" + "$ref": "#/components/schemas/EvaluatorDefinition" } ], - "description": "Request for the insights analysis." + "description": "Definition of the evaluator" }, - "result": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightResult" - } - ], - "description": "The result of the insights report.", - "readOnly": true - } - }, - "description": "The response body for cluster insights." - }, - "InsightCluster": { - "type": "object", - "required": [ - "id", - "label", - "suggestion", - "suggestionTitle", - "description", - "weight" - ], - "properties": { - "id": { + "created_by": { "type": "string", - "description": "The id of the analysis cluster." + "description": "Creator of the evaluator", + "readOnly": true }, - "label": { + "created_at": { "type": "string", - "description": "Label for the cluster" + "description": "Creation date/time of the evaluator", + "readOnly": true }, - "suggestion": { + "modified_at": { "type": "string", - "description": "Suggestion for the cluster" + "description": "Last modified date/time of the evaluator", + "readOnly": true }, - "suggestionTitle": { + "id": { "type": "string", - "description": "The title of the suggestion for the cluster" + "description": "Asset ID, a unique identifier for the asset", + "readOnly": true }, - "description": { + "name": { "type": "string", - "description": "Description of the analysis cluster." - }, - "weight": { - "type": "integer", - "format": "int32", - "description": "The weight of the analysis cluster. This indicate number of samples in the cluster." - }, - "subClusters": { - "description": "List of subclusters within this cluster. Empty if no subclusters exist.", - "type": "array", - "items": { - "$ref": "#/components/schemas/InsightCluster" - } + "description": "The name of the resource", + "readOnly": true }, - "samples": { - "type": "array", - "items": { - "$ref": "#/components/schemas/InsightSample" - }, - "description": "List of samples that belong to this cluster. Empty if samples are part of subclusters." - } - }, - "description": "A cluster of analysis samples." - }, - "InsightModelConfiguration": { - "type": "object", - "required": [ - "modelDeploymentName" - ], - "properties": { - "modelDeploymentName": { + "version": { "type": "string", - "description": "The model deployment to be evaluated. Accepts either the deployment name alone or with the connection name as '{connectionName}/'." + "description": "The version of the resource", + "readOnly": true } }, - "description": "Configuration of the model used in the insight generation." + "description": "Evaluator Definition" }, - "InsightRequest": { + "EvaluatorVersionCreate": { "type": "object", "required": [ - "type" + "evaluator_type", + "categories", + "definition" ], "properties": { - "type": { + "display_name": { + "type": "string", + "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Metadata about the evaluator" + }, + "evaluator_type": { "allOf": [ { - "$ref": "#/components/schemas/InsightType" + "$ref": "#/components/schemas/EvaluatorType" } ], - "description": "The type of request." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightRequest", - "AgentClusterInsight": "#/components/schemas/AgentClusterInsightRequest", - "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightRequest" - } - }, - "description": "The request of the insights report." - }, - "InsightResult": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { + "description": "The type of the evaluator" + }, + "categories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluatorCategory" + }, + "description": "The categories of the evaluator" + }, + "definition": { "allOf": [ { - "$ref": "#/components/schemas/InsightType" + "$ref": "#/components/schemas/EvaluatorDefinition" } ], - "description": "The type of insights result." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightResult", - "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightResult", - "AgentClusterInsight": "#/components/schemas/AgentClusterInsightResult" + "description": "Definition of the evaluator" + }, + "description": { + "type": "string", + "description": "The asset description text." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." } }, - "description": "The result of the insights." + "description": "Evaluator Definition" }, - "InsightSample": { + "EvaluatorVersionUpdate": { "type": "object", - "required": [ - "id", - "type", - "features", - "correlationInfo" - ], "properties": { - "id": { + "display_name": { "type": "string", - "description": "The unique identifier for the analysis sample." - }, - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/SampleType" - } - ], - "description": "Sample type" + "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." }, - "features": { + "metadata": { "type": "object", - "additionalProperties": {}, - "description": "Features to help with additional filtering of data in UX." + "additionalProperties": { + "type": "string" + }, + "description": "Metadata about the evaluator" }, - "correlationInfo": { + "categories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluatorCategory" + }, + "description": "The categories of the evaluator" + }, + "description": { + "type": "string", + "description": "The asset description text." + }, + "tags": { "type": "object", - "additionalProperties": {}, - "description": "Info about the correlation for the analysis sample." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "EvaluationResultSample": "#/components/schemas/EvaluationResultSample" + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." } }, - "description": "A sample from the analysis." + "description": "Evaluator Definition" }, - "InsightScheduleTask": { + "FabricDataAgentToolCall": { "type": "object", "required": [ "type", - "insight" + "call_id", + "arguments", + "status" ], "properties": { "type": { "type": "string", "enum": [ - "Insight" + "fabric_dataagent_preview_call" ] }, - "insight": { + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "arguments": { + "type": "string", + "description": "A JSON string of the arguments to pass to the tool." + }, + "status": { "allOf": [ { - "$ref": "#/components/schemas/Insight" + "$ref": "#/components/schemas/ToolCallStatus" } ], - "description": "The insight payload." + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/ScheduleTask" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "Insight task for the schedule." + "description": "A Fabric data agent tool call." }, - "InsightSummary": { + "FabricDataAgentToolCallOutput": { "type": "object", "required": [ - "sampleCount", - "uniqueSubclusterCount", - "uniqueClusterCount", - "method", - "usage" + "type", + "call_id", + "status" ], "properties": { - "sampleCount": { - "type": "integer", - "format": "int32", - "description": "Total number of samples analyzed." - }, - "uniqueSubclusterCount": { - "type": "integer", - "format": "int32", - "description": "Total number of unique subcluster labels." - }, - "uniqueClusterCount": { - "type": "integer", - "format": "int32", - "description": "Total number of unique clusters." + "type": { + "type": "string", + "enum": [ + "fabric_dataagent_preview_call_output" + ] }, - "method": { + "call_id": { "type": "string", - "description": "Method used for clustering." + "description": "The unique ID of the tool call generated by the model." }, - "usage": { + "output": { "allOf": [ { - "$ref": "#/components/schemas/ClusterTokenUsage" + "$ref": "#/components/schemas/ToolCallOutputContent" } ], - "description": "Token usage while performing clustering analysis" - } - }, - "description": "Summary of the error cluster analysis." - }, - "InsightType": { - "anyOf": [ - { - "type": "string" + "description": "The output from the Fabric data agent tool call." }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." + } + }, + "allOf": [ { - "type": "string", - "enum": [ - "EvaluationRunClusterInsight", - "AgentClusterInsight", - "EvaluationComparison" - ] + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "The request of the insights." + "description": "The output of a Fabric data agent tool call." }, - "InsightsMetadata": { + "FabricDataAgentToolParameters": { "type": "object", - "required": [ - "createdAt" - ], "properties": { - "createdAt": { + "name": { "type": "string", - "format": "date-time", - "description": "The timestamp when the insights were created." + "description": "Optional user-defined name for this tool or configuration." }, - "completedAt": { + "description": { "type": "string", - "format": "date-time", - "description": "The timestamp when the insights were completed." + "description": "Optional user-defined description for this tool or configuration." + }, + "project_connections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolProjectConnection" + }, + "maxItems": 1, + "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." } }, - "description": "Metadata about the insights." + "description": "The fabric data agent tool parameters." }, - "ItemGenerationParams": { + "FileDatasetVersion": { "type": "object", "required": [ "type" ], "properties": { "type": { - "allOf": [ - { - "$ref": "#/components/schemas/ItemGenerationParamsType" - } + "type": "string", + "enum": [ + "uri_file" ], - "description": "The type of item generation parameters to use." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "red_team": "#/components/schemas/RedTeamItemGenerationParams", - "red_team_seed_prompts": "#/components/schemas/RedTeamSeedPromptsItemGenerationParams", - "red_team_taxonomy": "#/components/schemas/RedTeamTaxonomyItemGenerationParams", - "response_retrieval": "#/components/schemas/ResponseRetrievalItemGenerationParams" + "description": "Dataset type" } }, - "description": "Represents the set of parameters used to control item generation operations." - }, - "ItemGenerationParamsType": { - "anyOf": [ - { - "type": "string" - }, + "allOf": [ { - "type": "string", - "enum": [ - "red_team", - "response_retrieval", - "red_team_seed_prompts", - "red_team_taxonomy", - "synthetic_data_gen_preview" - ] + "$ref": "#/components/schemas/DatasetVersion" } ], - "description": "The types of parameters for red team item generation." + "description": "FileDatasetVersion Definition" }, - "Job": { + "FileDatasetVersionUpdate": { "type": "object", "required": [ - "name", - "properties" + "type" ], "properties": { - "name": { - "type": "string", - "description": "The name of the training job. This is case-sensitive.", - "readOnly": true - }, - "id": { - "type": "string", - "description": "The resource ID.", - "readOnly": true - }, "type": { "type": "string", - "description": "The resource type.", - "readOnly": true - }, - "properties": { - "allOf": [ - { - "$ref": "#/components/schemas/JobProperties" - } - ], - "description": "Properties of the job." - }, - "systemData": { - "allOf": [ - { - "$ref": "#/components/schemas/SystemData" - } + "enum": [ + "uri_file" ], - "description": "Metadata pertaining to creation and last modification of the resource.", - "readOnly": true + "description": "Dataset type" } }, - "description": "Training job resource." + "allOf": [ + { + "$ref": "#/components/schemas/DatasetVersionUpdate" + } + ], + "description": "FileDatasetVersion Definition" }, - "JobArtifact": { + "FolderDatasetVersion": { "type": "object", "required": [ - "path" + "type" ], "properties": { - "path": { - "type": "string", - "description": "Artifact path relative to the job artifact root.", - "readOnly": true - }, "type": { - "allOf": [ - { - "$ref": "#/components/schemas/JobArtifactType" - } - ], - "description": "Artifact type.", - "readOnly": true - }, - "size": { - "type": "integer", - "format": "int64", - "description": "Artifact size in bytes.", - "readOnly": true - }, - "createdTimeUtc": { "type": "string", - "format": "date-time", - "description": "Time the artifact was created.", - "readOnly": true - }, - "updatedTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Time the artifact was last updated.", - "readOnly": true + "enum": [ + "uri_folder" + ], + "description": "Dataset type" } }, - "description": "Metadata for an artifact produced by or attached to a job." + "allOf": [ + { + "$ref": "#/components/schemas/DatasetVersion" + } + ], + "description": "FileDatasetVersion Definition" }, - "JobArtifactContentInfo": { + "FolderDatasetVersionUpdate": { "type": "object", "required": [ - "path" + "type" ], "properties": { - "path": { - "type": "string", - "description": "Artifact path relative to the job artifact root.", - "readOnly": true - }, - "contentUri": { - "type": "string", - "format": "uri", - "description": "Download URI for the artifact content.", - "readOnly": true - }, - "contentType": { - "type": "string", - "description": "MIME type of the content.", - "readOnly": true - }, - "expiresAtUtc": { + "type": { "type": "string", - "format": "date-time", - "description": "Time the content URI expires.", - "readOnly": true + "enum": [ + "uri_folder" + ], + "description": "Dataset type" } }, - "description": "Content access information for a job artifact." - }, - "JobArtifactType": { - "anyOf": [ - { - "type": "string" - }, + "allOf": [ { - "type": "string", - "enum": [ - "File", - "Directory" - ] + "$ref": "#/components/schemas/DatasetVersionUpdate" } ], - "description": "Type of a job artifact." + "description": "FileDatasetVersion Definition" }, - "JobCreate": { + "FunctionToolCall": { "type": "object", "required": [ "name", - "properties" + "arguments" ], "properties": { "name": { "type": "string", - "description": "The name of the training job. This is case-sensitive." + "description": "The name of the function to call." }, - "properties": { - "allOf": [ - { - "$ref": "#/components/schemas/JobProperties" - } - ], - "description": "Properties of the job." + "arguments": { + "type": "string", + "description": "The arguments to call the function with, as generated by the model in JSON format." } }, - "description": "Request body for creating a training job." + "description": "Details of a function tool call." }, - "JobMetric": { + "HostedAgentDefinition": { "type": "object", "required": [ - "name" + "kind", + "container_protocol_versions", + "cpu", + "memory" ], "properties": { - "name": { + "kind": { "type": "string", - "description": "Metric name.", - "readOnly": true + "enum": [ + "hosted" + ] }, - "metricType": { - "allOf": [ + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" + }, + "description": "An array of tools the hosted agent's model may call while generating a response. You\ncan specify which tool to use by setting the `tool_choice` parameter." + }, + "container_protocol_versions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProtocolVersionRecord" + }, + "description": "The protocols that the agent supports for ingress communication of the containers.", + "example": [ { - "$ref": "#/components/schemas/JobMetricType" + "protocol": "responses", + "version": "v0.1.1" + }, + { + "protocol": "a2a", + "version": "v0.3.0" } - ], - "description": "Metric type.", - "readOnly": true + ] + }, + "cpu": { + "type": "string", + "description": "The CPU configuration for the hosted agent.", + "example": "0.25" + }, + "memory": { + "type": "string", + "description": "The memory configuration for the hosted agent.", + "example": "0.5Gi" }, - "columns": { + "environment_variables": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Column metadata for structured metric values.", - "readOnly": true + "description": "Environment variables to set in the hosted agent container.", + "example": { + "name": "LOG_LEVEL", + "value": "debug" + } + }, + "image": { + "type": "string", + "description": "The image ID for the agent, applicable to image-based hosted agents.", + "example": "my-registry.azurecr.io/my-hosted-agent:latest" } }, - "description": "Metadata for a metric emitted by a job or run." + "allOf": [ + { + "$ref": "#/components/schemas/AgentDefinition" + } + ], + "description": "The hosted agent definition.", + "x-ms-foundry-meta": { + "required_previews": [ + "HostedAgents=V1Preview" + ] + } }, - "JobMetricAggregate": { + "HourlyRecurrenceSchedule": { "type": "object", "required": [ - "name" + "type" ], "properties": { - "name": { - "type": "string", - "description": "Metric name.", - "readOnly": true - }, - "startUtc": { - "type": "string", - "format": "date-time", - "description": "Aggregate window start.", - "readOnly": true - }, - "endUtc": { + "type": { "type": "string", - "format": "date-time", - "description": "Aggregate window end.", - "readOnly": true - }, - "values": { - "type": "object", - "additionalProperties": {}, - "description": "Aggregate values.", - "readOnly": true + "enum": [ + "Hourly" + ] } }, - "description": "Aggregated values for a metric." + "allOf": [ + { + "$ref": "#/components/schemas/RecurrenceSchedule" + } + ], + "description": "Hourly recurrence schedule." }, - "JobMetricLastValue": { + "HumanEvaluationPreviewRuleAction": { "type": "object", "required": [ - "name" + "type", + "templateId" ], "properties": { - "name": { + "type": { "type": "string", - "description": "Metric name.", - "readOnly": true + "enum": [ + "humanEvaluationPreview" + ] }, - "value": { + "templateId": { "allOf": [ { - "$ref": "#/components/schemas/JobMetricPoint" + "$ref": "#/components/schemas/AssetId" } ], - "description": "Latest metric point.", - "readOnly": true + "description": "Human evaluation template Id." } }, - "description": "Latest value for a metric." - }, - "JobMetricPoint": { - "type": "object", - "properties": { - "metricId": { - "type": "string", - "description": "Metric identifier.", - "readOnly": true - }, - "step": { - "type": "integer", - "format": "int64", - "description": "Metric step.", - "readOnly": true - }, - "createdUtc": { - "type": "string", - "format": "date-time", - "description": "Time the metric point was created.", - "readOnly": true - }, - "data": { - "type": "object", - "additionalProperties": {}, - "description": "Metric data values.", - "readOnly": true + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleAction" } - }, - "description": "A metric data point." + ], + "description": "Evaluation rule action for human evaluation." }, - "JobMetricSample": { + "Index": { "type": "object", "required": [ + "type", "name", - "points" + "version" ], "properties": { + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/IndexType" + } + ], + "description": "Type of index" + }, + "id": { + "type": "string", + "description": "Asset ID, a unique identifier for the asset", + "readOnly": true + }, "name": { "type": "string", - "description": "Metric name.", + "description": "The name of the resource", "readOnly": true }, - "points": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetricPoint" - }, - "description": "Sampled metric points.", + "version": { + "type": "string", + "description": "The version of the resource", "readOnly": true } }, - "description": "Sampled values for a metric." + "discriminator": { + "propertyName": "type", + "mapping": { + "AzureSearch": "#/components/schemas/AzureAISearchIndex", + "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndex", + "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndex" + } + }, + "description": "Index resource Definition" }, - "JobMetricType": { + "IndexType": { "anyOf": [ { "type": "string" @@ -21288,372 +14568,332 @@ { "type": "string", "enum": [ - "Scalar", - "Table", - "Image" + "AzureSearch", + "CosmosDBNoSqlVectorStore", + "ManagedAzureSearch" ] } - ], - "description": "The kind of metric emitted by a job." + ] }, - "JobOperationError": { + "IndexUpdate": { "type": "object", + "required": [ + "type" + ], "properties": { - "code": { - "type": "string", - "description": "Machine-readable error code." + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/IndexType" + } + ], + "description": "Type of index" }, - "message": { + "description": { "type": "string", - "description": "Human-readable error message." + "description": "The asset description text." }, - "details": { + "tags": { "type": "object", - "additionalProperties": {}, - "description": "Additional error information." + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "AzureSearch": "#/components/schemas/AzureAISearchIndexUpdate", + "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndexUpdate", + "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndexUpdate" } }, - "description": "Error details for an asynchronous training job operation." + "description": "Index resource Definition" }, - "JobOperationResource": { + "Insight": { "type": "object", "required": [ - "status" + "id", + "metadata", + "state", + "displayName", + "request" ], "properties": { "id": { "type": "string", - "description": "Operation resource ID.", - "readOnly": true - }, - "name": { - "type": "string", - "description": "Operation name.", + "description": "The unique identifier for the insights report.", "readOnly": true }, - "status": { + "metadata": { "allOf": [ { - "$ref": "#/components/schemas/JobOperationStatus" + "$ref": "#/components/schemas/InsightsMetadata" } ], - "description": "Operation status.", - "readOnly": true - }, - "properties": { - "type": "object", - "additionalProperties": {}, - "description": "Operation result properties.", + "description": "Metadata about the insights report.", "readOnly": true }, - "startTime": { - "type": "string", - "format": "date-time", - "description": "Operation start time.", + "state": { + "allOf": [ + { + "$ref": "#/components/schemas/Azure.Core.Foundations.OperationState" + } + ], + "description": "The current state of the insights.", "readOnly": true }, - "endTime": { + "displayName": { "type": "string", - "format": "date-time", - "description": "Operation end time.", - "readOnly": true + "description": "User friendly display name for the insight." }, - "percentComplete": { - "type": "number", - "format": "double", - "description": "Operation completion percentage from 0 to 100.", - "readOnly": true + "request": { + "allOf": [ + { + "$ref": "#/components/schemas/InsightRequest" + } + ], + "description": "Request for the insights analysis." }, - "error": { + "result": { "allOf": [ { - "$ref": "#/components/schemas/JobOperationError" + "$ref": "#/components/schemas/InsightResult" } ], - "description": "Operation error information.", + "description": "The result of the insights report.", "readOnly": true } }, - "description": "Asynchronous training job operation resource." + "description": "The response body for cluster insights." }, - "JobOperationStatus": { - "anyOf": [ - { - "type": "string" + "InsightCluster": { + "type": "object", + "required": [ + "id", + "label", + "suggestion", + "suggestionTitle", + "description", + "weight" + ], + "properties": { + "id": { + "type": "string", + "description": "The id of the analysis cluster." }, - { + "label": { "type": "string", - "enum": [ - "InProgress", - "Deleting", - "Succeeded", - "Failed", - "Canceled" - ] + "description": "Label for the cluster" + }, + "suggestion": { + "type": "string", + "description": "Suggestion for the cluster" + }, + "suggestionTitle": { + "type": "string", + "description": "The title of the suggestion for the cluster" + }, + "description": { + "type": "string", + "description": "Description of the analysis cluster." + }, + "weight": { + "type": "integer", + "format": "int32", + "description": "The weight of the analysis cluster. This indicate number of samples in the cluster." + }, + "subClusters": { + "description": "List of subclusters within this cluster. Empty if no subclusters exist.", + "type": "array", + "items": { + "$ref": "#/components/schemas/InsightCluster" + } + }, + "samples": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InsightSample" + }, + "description": "List of samples that belong to this cluster. Empty if samples are part of subclusters." + } + }, + "description": "A cluster of analysis samples." + }, + "InsightModelConfiguration": { + "type": "object", + "required": [ + "modelDeploymentName" + ], + "properties": { + "modelDeploymentName": { + "type": "string", + "description": "The model deployment to be evaluated. Accepts either the deployment name alone or with the connection name as '{connectionName}/'." } - ], - "description": "Status of an asynchronous training job operation." + }, + "description": "Configuration of the model used in the insight generation." }, - "JobOutputReference": { + "InsightRequest": { "type": "object", "required": [ - "name" + "type" ], "properties": { - "name": { - "type": "string", - "description": "Output name.", - "readOnly": true - }, "type": { "allOf": [ { - "$ref": "#/components/schemas/AssetTypes" - } - ], - "description": "Output asset type.", - "readOnly": true - }, - "mode": { - "allOf": [ - { - "$ref": "#/components/schemas/InputOutputModes" + "$ref": "#/components/schemas/InsightType" } ], - "description": "Output delivery mode.", - "readOnly": true - }, - "uri": { - "type": "string", - "description": "Output storage URI.", - "readOnly": true - }, - "assetName": { - "type": "string", - "description": "Registered asset name, if the output produced an asset.", - "readOnly": true - }, - "assetVersion": { - "type": "string", - "description": "Registered asset version, if the output produced an asset.", - "readOnly": true - }, - "baseModelId": { - "type": "string", - "description": "Base model ID for model outputs.", - "readOnly": true - }, - "description": { - "type": "string", - "description": "Output description.", - "readOnly": true + "description": "The type of request." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightRequest", + "AgentClusterInsight": "#/components/schemas/AgentClusterInsightRequest", + "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightRequest" } }, - "description": "Named output produced by a job." + "description": "The request of the insights report." }, - "JobProperties": { + "InsightResult": { "type": "object", "required": [ - "jobType" + "type" ], "properties": { - "jobType": { - "type": "string", - "description": "Job type." + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/InsightType" + } + ], + "description": "The type of insights result." } }, "discriminator": { - "propertyName": "jobType", + "propertyName": "type", "mapping": { - "Command": "#/components/schemas/CommandJob" - } - }, - "description": "Base properties of a Job." - }, - "JobResourceConfiguration": { - "type": "object", - "properties": { - "instanceCount": { - "type": "integer", - "format": "int32", - "description": "Optional number of instances or nodes used by the compute target." - }, - "instanceType": { - "type": "string", - "description": "Optional type of VM used as supported by the compute target." - }, - "properties": { - "type": "object", - "additionalProperties": {}, - "description": "Additional properties bag." - }, - "shmSize": { - "type": "string", - "description": "Size of the docker container's shared memory block. This should be in the format of (number)(unit) where number as to be greater than 0 and the unit can be one of b(bytes), k(kilobytes), m(megabytes), or g(gigabytes)." - }, - "dockerArgs": { - "type": "string", - "description": "Extra arguments to pass to the Docker run command. This would override any parameters that have already been set by the system, or in this section. This parameter is only supported for Azure ML compute types." + "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightResult", + "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightResult", + "AgentClusterInsight": "#/components/schemas/AgentClusterInsightResult" } }, - "description": "Compute Resource configuration for the job." + "description": "The result of the insights." }, - "JobRun": { + "InsightSample": { "type": "object", "required": [ "id", - "jobName" + "type", + "features", + "correlationInfo" ], "properties": { "id": { "type": "string", - "description": "The run identifier.", - "readOnly": true - }, - "jobName": { - "type": "string", - "description": "The job name this run belongs to.", - "readOnly": true + "description": "The unique identifier for the analysis sample." }, - "status": { + "type": { "allOf": [ { - "$ref": "#/components/schemas/JobRunStatus" + "$ref": "#/components/schemas/SampleType" } ], - "description": "The run status.", - "readOnly": true - }, - "statusReason": { - "type": "string", - "description": "Additional status reason.", - "readOnly": true - }, - "startTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Time the run started.", - "readOnly": true - }, - "endTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Time the run ended.", - "readOnly": true - }, - "lastStartTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Most recent time the run started running.", - "readOnly": true - }, - "computeDuration": { - "type": "string", - "format": "duration", - "description": "Total compute duration consumed by the run.", - "readOnly": true + "description": "Sample type" }, - "queueingInfo": { + "features": { "type": "object", "additionalProperties": {}, - "description": "Queueing details associated with the run.", - "readOnly": true + "description": "Features to help with additional filtering of data in UX." }, - "computeDetails": { - "allOf": [ - { - "$ref": "#/components/schemas/JobRunComputeDetails" - } - ], - "description": "Compute details associated with the run.", - "readOnly": true + "correlationInfo": { + "type": "object", + "additionalProperties": {}, + "description": "Info about the correlation for the analysis sample." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "EvaluationResultSample": "#/components/schemas/EvaluationResultSample" + } + }, + "description": "A sample from the analysis." + }, + "InsightScheduleTask": { + "type": "object", + "required": [ + "type", + "insight" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Insight" + ] }, - "error": { + "insight": { "allOf": [ { - "$ref": "#/components/schemas/JobRunError" + "$ref": "#/components/schemas/Insight" } ], - "description": "Terminal error for the run, if any.", - "readOnly": true - }, - "warnings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobRunWarning" - }, - "description": "Warnings emitted for the run.", - "readOnly": true - }, - "isCurrent": { - "type": "boolean", - "description": "Whether this run is the current run for the job.", - "readOnly": true + "description": "The insight payload." } }, - "description": "One execution run of a training job." + "allOf": [ + { + "$ref": "#/components/schemas/ScheduleTask" + } + ], + "description": "Insight task for the schedule." }, - "JobRunComputeDetails": { + "InsightSummary": { "type": "object", + "required": [ + "sampleCount", + "uniqueSubclusterCount", + "uniqueClusterCount", + "method", + "usage" + ], "properties": { - "vmSize": { - "type": "string", - "description": "Virtual machine size used for this run attempt.", - "readOnly": true - }, - "instanceType": { - "type": "string", - "description": "Instance type used for this run attempt.", - "readOnly": true - }, - "instanceCount": { + "sampleCount": { "type": "integer", "format": "int32", - "description": "Number of instances allocated to this run attempt.", - "readOnly": true + "description": "Total number of samples analyzed." }, - "gpuCount": { + "uniqueSubclusterCount": { "type": "integer", "format": "int32", - "description": "Number of GPUs allocated to this run attempt.", - "readOnly": true - }, - "region": { - "type": "string", - "description": "Region where this run attempt was placed.", - "readOnly": true + "description": "Total number of unique subcluster labels." }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional backend-specific compute placement properties.", - "readOnly": true - } - }, - "description": "Compute placement details for a job run attempt." - }, - "JobRunError": { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "Machine-readable error code." + "uniqueClusterCount": { + "type": "integer", + "format": "int32", + "description": "Total number of unique clusters." }, - "message": { + "method": { "type": "string", - "description": "Human-readable error message." + "description": "Method used for clustering." }, - "details": { - "type": "object", - "additionalProperties": {}, - "description": "Additional error details." + "usage": { + "allOf": [ + { + "$ref": "#/components/schemas/ClusterTokenUsage" + } + ], + "description": "Token usage while performing clustering analysis" } }, - "description": "Error emitted during a job run." + "description": "Summary of the error cluster analysis." }, - "JobRunStatus": { + "InsightType": { "anyOf": [ { "type": "string" @@ -21661,50 +14901,60 @@ { "type": "string", "enum": [ - "Queued", - "Running", - "Completed", - "Failed", - "Canceled" + "EvaluationRunClusterInsight", + "AgentClusterInsight", + "EvaluationComparison" ] } ], - "description": "Status of a job execution run." + "description": "The request of the insights." }, - "JobRunWarning": { + "InsightsMetadata": { "type": "object", + "required": [ + "createdAt" + ], "properties": { - "code": { + "createdAt": { "type": "string", - "description": "Machine-readable warning code." + "format": "date-time", + "description": "The timestamp when the insights were created." }, - "message": { + "completedAt": { "type": "string", - "description": "Human-readable warning message." - }, - "details": { - "type": "object", - "additionalProperties": {}, - "description": "Additional warning details." + "format": "date-time", + "description": "The timestamp when the insights were completed." } }, - "description": "Warning emitted during a job run." + "description": "Metadata about the insights." }, - "JobType": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "Command" - ] - } + "ItemGenerationParams": { + "type": "object", + "required": [ + "type" ], - "description": "Type of a job." + "properties": { + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/ItemGenerationParamsType" + } + ], + "description": "The type of item generation parameters to use." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "red_team": "#/components/schemas/RedTeamItemGenerationParams", + "red_team_seed_prompts": "#/components/schemas/RedTeamSeedPromptsItemGenerationParams", + "red_team_taxonomy": "#/components/schemas/RedTeamTaxonomyItemGenerationParams", + "response_retrieval": "#/components/schemas/ResponseRetrievalItemGenerationParams" + } + }, + "description": "Represents the set of parameters used to control item generation operations." }, - "ListViewType": { + "ItemGenerationParamsType": { "anyOf": [ { "type": "string" @@ -21712,13 +14962,15 @@ { "type": "string", "enum": [ - "ActiveOnly", - "ArchivedOnly", - "All" + "red_team", + "response_retrieval", + "red_team_seed_prompts", + "red_team_taxonomy", + "synthetic_data_gen_preview" ] } ], - "description": "Specifies which jobs to include in a list result based on their lifecycle state." + "description": "The types of parameters for red team item generation." }, "ManagedAzureAISearchIndex": { "type": "object", @@ -22492,16 +15744,6 @@ ], "description": "The input definition information for a Microsoft Fabric tool as used to configure an agent." }, - "Mlflow.MlflowPayload": { - "type": "object", - "additionalProperties": {}, - "description": "Generic MLflow compatibility request payload." - }, - "Mlflow.MlflowResponse": { - "type": "object", - "additionalProperties": {}, - "description": "Generic MLflow compatibility response payload." - }, "ModelDeployment": { "type": "object", "required": [ @@ -22653,32 +15895,6 @@ ], "description": "Monthly recurrence schedule." }, - "MpiDistribution": { - "type": "object", - "required": [ - "distributionType" - ], - "properties": { - "distributionType": { - "type": "string", - "enum": [ - "Mpi" - ], - "description": "Specifies the type of distribution framework." - }, - "processCountPerNode": { - "type": "integer", - "format": "int32", - "description": "Number of processes per MPI node." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/DistributionConfiguration" - } - ], - "description": "MPI distribution configuration." - }, "NoAuthenticationCredentials": { "type": "object", "required": [ @@ -42470,51 +35686,6 @@ ], "description": "The output of an OpenAPI tool call." }, - "Output": { - "type": "object", - "required": [ - "jobOutputType" - ], - "properties": { - "jobOutputType": { - "allOf": [ - { - "$ref": "#/components/schemas/AssetTypes" - } - ], - "description": "Specifies the type of job output." - }, - "mode": { - "allOf": [ - { - "$ref": "#/components/schemas/InputOutputModes" - } - ], - "description": "Output Asset Delivery Mode." - }, - "assetName": { - "type": "string", - "description": "Name of the output data asset to register." - }, - "assetVersion": { - "type": "string", - "description": "Version of the output data asset to register." - }, - "uri": { - "type": "string", - "description": "Output Asset URI." - }, - "baseModelId": { - "type": "string", - "description": "Base model ID. Applies to safetensors_model outputs." - }, - "description": { - "type": "string", - "description": "Description for the output." - } - }, - "description": "Job output definition." - }, "PageOrder": { "type": "string", "enum": [ @@ -42690,195 +35861,6 @@ }, "description": "Paged collection of Insight items" }, - "PagedJob": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Job" - }, - "description": "The Job items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of Job items" - }, - "PagedJobArtifact": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobArtifact" - }, - "description": "The JobArtifact items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobArtifact items" - }, - "PagedJobArtifactContentInfo": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobArtifactContentInfo" - }, - "description": "The JobArtifactContentInfo items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobArtifactContentInfo items" - }, - "PagedJobMetric": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetric" - }, - "description": "The JobMetric items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetric items" - }, - "PagedJobMetricAggregate": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetricAggregate" - }, - "description": "The JobMetricAggregate items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetricAggregate items" - }, - "PagedJobMetricLastValue": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetricLastValue" - }, - "description": "The JobMetricLastValue items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetricLastValue items" - }, - "PagedJobMetricPoint": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetricPoint" - }, - "description": "The JobMetricPoint items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetricPoint items" - }, - "PagedJobOutputReference": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobOutputReference" - }, - "description": "The JobOutputReference items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobOutputReference items" - }, - "PagedJobRun": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobRun" - }, - "description": "The JobRun items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobRun items" - }, "PagedRedTeam": { "type": "object", "required": [ @@ -43146,42 +36128,6 @@ }, "description": "A record mapping for a single protocol and its version." }, - "PyTorchDistribution": { - "type": "object", - "required": [ - "distributionType" - ], - "properties": { - "distributionType": { - "type": "string", - "enum": [ - "PyTorch" - ], - "description": "Specifies the type of distribution framework." - }, - "processCountPerInstance": { - "type": "integer", - "format": "int32", - "description": "Number of processes per node." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/DistributionConfiguration" - } - ], - "description": "PyTorch distribution configuration." - }, - "QueueSettings": { - "type": "object", - "properties": { - "jobTier": { - "type": "string", - "description": "Controls the compute job tier." - } - }, - "description": "Queue settings for the job." - }, "RaiConfig": { "type": "object", "required": [ @@ -44246,44 +37192,6 @@ } ] }, - "SystemData": { - "type": "object", - "properties": { - "createdBy": { - "type": "string", - "description": "The identity that created the resource.", - "readOnly": true - }, - "createdByType": { - "type": "string", - "description": "The type of identity that created the resource.", - "readOnly": true - }, - "createdAt": { - "type": "string", - "format": "date-time", - "description": "The timestamp of resource creation (UTC).", - "readOnly": true - }, - "lastModifiedBy": { - "type": "string", - "description": "The identity that last modified the resource.", - "readOnly": true - }, - "lastModifiedByType": { - "type": "string", - "description": "The type of identity that last modified the resource.", - "readOnly": true - }, - "lastModifiedAt": { - "type": "string", - "format": "date-time", - "description": "The timestamp of resource last modification (UTC).", - "readOnly": true - } - }, - "description": "Metadata pertaining to creation and last modification of the resource." - }, "Target": { "type": "object", "required": [ @@ -44473,37 +37381,6 @@ }, "description": "Taxonomy sub-category definition." }, - "TensorFlowDistribution": { - "type": "object", - "required": [ - "distributionType" - ], - "properties": { - "distributionType": { - "type": "string", - "enum": [ - "TensorFlow" - ], - "description": "Specifies the type of distribution framework." - }, - "workerCount": { - "type": "integer", - "format": "int32", - "description": "Number of workers. If not specified, will default to the instance count." - }, - "parameterServerCount": { - "type": "integer", - "format": "int32", - "description": "Number of parameter server tasks." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/DistributionConfiguration" - } - ], - "description": "TensorFlow distribution configuration." - }, "ToolCallOutputContent": { "anyOf": [ { @@ -44683,450 +37560,6 @@ ], "description": "Represents a data source for evaluation runs that operate over Agent traces stored in Application Insights." }, - "TrainingAlgorithm": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "Sft", - "Dpo", - "Kto", - "Orpo", - "Cpo", - "SimPo", - "Grpo", - "Ppo", - "Rloo", - "ReinforcePp", - "RewardModel" - ] - } - ], - "description": "Training algorithm used by a declarative training job." - }, - "TrainingColumnMapping": { - "type": "object", - "properties": { - "prompt": { - "type": "string", - "description": "Column containing prompts." - }, - "chosen": { - "type": "string", - "description": "Column containing chosen responses for preference training." - }, - "rejected": { - "type": "string", - "description": "Column containing rejected responses for preference training." - }, - "reference": { - "type": "string", - "description": "Column containing reference answers or reward context." - }, - "messages": { - "type": "string", - "description": "Column containing chat messages." - } - }, - "description": "Mapping from logical training fields to columns in the dataset." - }, - "TrainingConfiguration": { - "type": "object", - "required": [ - "algorithm", - "model", - "dataset" - ], - "properties": { - "algorithm": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingAlgorithm" - } - ], - "description": "Training algorithm." - }, - "framework": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingFramework" - } - ], - "description": "Training framework. If omitted, the service selects a compatible framework." - }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, - "dataset": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingDatasetConfiguration" - } - ], - "description": "Training and optional evaluation datasets." - }, - "reward": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingRewardConfiguration" - } - ], - "description": "Reward signal configuration." - }, - "lora": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingLoraConfiguration" - } - ], - "description": "LoRA adapter configuration." - }, - "rollout": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingRolloutConfiguration" - } - ], - "description": "Rollout generation configuration." - }, - "eval": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingEvalConfiguration" - } - ], - "description": "Evaluation configuration." - } - }, - "description": "Declarative training recipe. When specified, command must be omitted and environmentImageReference is optional." - }, - "TrainingDataFormatConfiguration": { - "type": "object", - "properties": { - "chatTemplate": { - "allOf": [ - { - "$ref": "#/components/schemas/ChatTemplate" - } - ], - "description": "Built-in chat template to apply to the dataset." - }, - "chatTemplatePath": { - "type": "string", - "description": "Path to a custom chat template relative to the job's code directory." - } - }, - "description": "Formatting options for conversational training data." - }, - "TrainingDatasetConfiguration": { - "type": "object", - "required": [ - "train" - ], - "properties": { - "train": { - "type": "string", - "description": "Training dataset asset reference." - }, - "eval": { - "type": "string", - "description": "Optional evaluation dataset asset reference." - }, - "columns": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingColumnMapping" - } - ], - "description": "Mapping from training fields to dataset columns." - }, - "dataFormat": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingDataFormatConfiguration" - } - ], - "description": "Conversational data formatting options." - } - }, - "description": "Dataset configuration for a declarative training job." - }, - "TrainingEntryPointReference": { - "type": "object", - "required": [ - "entryPoint" - ], - "properties": { - "entryPoint": { - "type": "string", - "description": "Path to the Python callable in module/file.py:function format." - } - }, - "description": "Reference to a Python callable relative to the job's code directory." - }, - "TrainingEvalBenchmark": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "Gsm8k", - "Mmlu", - "Humaneval", - "Mbpp", - "Arc", - "Hellaswag" - ] - } - ], - "description": "Built-in evaluation benchmark." - }, - "TrainingEvalConfiguration": { - "type": "object", - "properties": { - "benchmark": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingEvalBenchmark" - } - ], - "description": "Named built-in benchmark. Mutually exclusive with dataset." - }, - "dataset": { - "type": "string", - "description": "Custom evaluation dataset asset reference. Mutually exclusive with benchmark." - }, - "everyNSteps": { - "type": "integer", - "format": "int32", - "description": "Evaluation frequency in training steps. Omit for end-of-training only." - } - }, - "description": "Evaluation configuration for a declarative training job." - }, - "TrainingFramework": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "Trl", - "Verl", - "OpenRlhf", - "NemoRl", - "Slime", - "TorchForge" - ] - } - ], - "description": "Training framework used to lower a declarative training job into an execution command." - }, - "TrainingInlineFunctionConfiguration": { - "type": "object", - "required": [ - "def" - ], - "properties": { - "def": { - "type": "string", - "description": "Python function definition." - }, - "runtime": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingInlineFunctionRuntime" - } - ], - "description": "Runtime dependencies for the inline function." - } - }, - "description": "Inline Python function definition for custom training logic." - }, - "TrainingInlineFunctionRuntime": { - "type": "object", - "properties": { - "pip": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Pip packages to install before invoking the inline function." - } - }, - "description": "Python runtime dependencies for an inline function." - }, - "TrainingJobService": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Service type.", - "readOnly": true - }, - "port": { - "type": "integer", - "format": "int32", - "description": "Service port.", - "readOnly": true - }, - "status": { - "type": "string", - "description": "Service status.", - "readOnly": true - }, - "error": { - "type": "object", - "additionalProperties": {}, - "description": "Terminal error for the service, if any.", - "readOnly": true - }, - "endpoint": { - "type": "string", - "description": "Service endpoint URI.", - "readOnly": true - }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional service properties.", - "readOnly": true - } - }, - "description": "Service endpoint details for a training job." - }, - "TrainingJobServiceCollection": { - "type": "object", - "required": [ - "services" - ], - "properties": { - "services": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TrainingJobService" - }, - "description": "Services keyed by service name.", - "readOnly": true - } - }, - "description": "Services exposed by a training job." - }, - "TrainingLoraConfiguration": { - "type": "object", - "required": [ - "rank" - ], - "properties": { - "rank": { - "type": "integer", - "format": "int32", - "description": "Low-rank dimension." - }, - "alpha": { - "type": "integer", - "format": "int32", - "description": "LoRA scaling factor." - }, - "dropout": { - "type": "number", - "format": "double", - "description": "Dropout applied to adapter inputs.", - "default": 0.05 - }, - "targetModules": { - "type": "string", - "description": "Linear layers that receive adapters. Use 'auto' to let the framework choose defaults.", - "default": "auto" - }, - "quantize": { - "type": "boolean", - "description": "Whether to enable QLoRA 4-bit base weight loading.", - "default": false - } - }, - "description": "LoRA adapter configuration for parameter-efficient fine tuning." - }, - "TrainingRewardConfiguration": { - "type": "object", - "properties": { - "model": { - "type": "string", - "description": "Reward model asset reference." - }, - "function": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingEntryPointReference" - } - ], - "description": "Python callable used to compute reward scores." - }, - "inline_function": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingInlineFunctionConfiguration" - } - ], - "description": "Inline Python function used to compute reward scores." - } - }, - "description": "Reward signal configuration for reinforcement or reward model training." - }, - "TrainingRolloutConfiguration": { - "type": "object", - "required": [ - "engine" - ], - "properties": { - "engine": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingRolloutEngine" - } - ], - "description": "Rollout inference engine." - }, - "tensorParallelSize": { - "type": "integer", - "format": "int32", - "description": "Tensor parallel size used by the rollout engine.", - "default": 1 - }, - "gpuMemoryUtilization": { - "type": "number", - "format": "double", - "description": "GPU memory utilization target for the rollout engine, between 0.0 and 1.0." - } - }, - "description": "Rollout generation configuration for online reinforcement learning." - }, - "TrainingRolloutEngine": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "Vllm", - "Sglang", - "Hf", - "MegatronInference" - ] - } - ], - "description": "Inference engine used for rollout generation during online reinforcement learning." - }, "TreatmentEffectType": { "anyOf": [ { diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index ec41d586df90..4d2fd9278d8d 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -5,24 +5,6 @@ "version": "virtual-public-preview" }, "tags": [ - { - "name": "MLflow Experiments" - }, - { - "name": "MLflow Runs" - }, - { - "name": "MLflow Metrics" - }, - { - "name": "MLflow Artifacts" - }, - { - "name": "MLflow Registered Models" - }, - { - "name": "MLflow Model Versions" - }, { "name": "Agents" }, @@ -85,9 +67,6 @@ }, { "name": "Toolsets" - }, - { - "name": "TrainingJobs" } ], "paths": { @@ -7126,155 +7105,18 @@ } } }, - "/mlflow/api/2.0/mlflow/artifacts/list": { - "get": { - "operationId": "Artifacts_list", - "description": "List MLflow artifacts.", - "parameters": [ - { - "name": "run_id", - "in": "query", - "required": false, - "description": "MLflow run identifier.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "run_uuid", - "in": "query", - "required": false, - "description": "MLflow run UUID.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "path", - "in": "query", - "required": false, - "description": "Artifact path to list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Artifacts" - ] - } - }, - "/mlflow/api/2.0/mlflow/experiments/create": { - "post": { - "operationId": "Experiments_create", - "description": "Create an MLflow experiment.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Experiments" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/experiments/delete": { + "/openai/v1/conversations": { "post": { - "operationId": "Experiments_delete", - "description": "Delete an MLflow experiment.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], + "operationId": "createConversation", + "description": "Create a conversation.", + "parameters": [], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -7291,113 +7133,80 @@ } }, "tags": [ - "MLflow Experiments" + "Conversations" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/OpenAI.CreateConversationBody" } } } } - } - }, - "/mlflow/api/2.0/mlflow/experiments/get": { + }, "get": { - "operationId": "Experiments_get", - "description": "Get an MLflow experiment by ID.", + "operationId": "listConversations", + "description": "Returns the list of all conversations.", "parameters": [ { - "name": "experiment_id", + "name": "limit", "in": "query", "required": false, - "description": "MLflow experiment identifier.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "experiment_name", + "name": "order", "in": "query", "required": false, - "description": "MLflow experiment name.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "string" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, { - "name": "api-version", + "name": "after", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { "type": "string" }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Experiments" - ] - } - }, - "/mlflow/api/2.0/mlflow/experiments/get-by-name": { - "get": { - "operationId": "Experiments_getByName", - "description": "Get an MLflow experiment by name.", - "parameters": [ { - "name": "experiment_id", + "name": "before", "in": "query", "required": false, - "description": "MLflow experiment identifier.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, "explode": false }, { - "name": "experiment_name", + "name": "agent_name", "in": "query", "required": false, - "description": "MLflow experiment name.", + "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", "schema": { "type": "string" }, "explode": false }, { - "name": "api-version", + "name": "agent_id", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", "schema": { "type": "string" }, @@ -7410,7 +7219,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ConversationResource" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -7427,24 +7262,23 @@ } }, "tags": [ - "MLflow Experiments" + "Conversations" ] } }, - "/mlflow/api/2.0/mlflow/experiments/restore": { + "/openai/v1/conversations/{conversation_id}": { "post": { - "operationId": "Experiments_restore", - "description": "Restore a deleted MLflow experiment.", + "operationId": "updateConversation", + "description": "Update a conversation.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation to update.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -7453,7 +7287,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -7470,34 +7304,31 @@ } }, "tags": [ - "MLflow Experiments" + "Conversations" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/OpenAI.UpdateConversationBody" } } } } - } - }, - "/mlflow/api/2.0/mlflow/experiments/search": { - "post": { - "operationId": "Experiments_search", - "description": "Search MLflow experiments.", + }, + "get": { + "operationId": "getConversation", + "description": "Retrieves a conversation.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -7506,7 +7337,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -7523,34 +7354,21 @@ } }, "tags": [ - "MLflow Experiments" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/experiments/set-experiment-tag": { - "post": { - "operationId": "Experiments_setTag", - "description": "Set an MLflow experiment tag.", + "Conversations" + ] + }, + "delete": { + "operationId": "deleteConversation", + "description": "Deletes a conversation.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -7559,7 +7377,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.DeletedConversationResource" } } } @@ -7576,32 +7394,34 @@ } }, "tags": [ - "MLflow Experiments" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Conversations" + ] } }, - "/mlflow/api/2.0/mlflow/experiments/update": { + "/openai/v1/conversations/{conversation_id}/items": { "post": { - "operationId": "Experiments_update", - "description": "Update MLflow experiment metadata.", + "operationId": "createConversationItems", + "description": "Create items in a conversation with the given ID.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation on which the item needs to be created.", "schema": { "type": "string" + } + }, + { + "name": "include", + "in": "query", + "required": false, + "description": "Additional fields to include in the response.\nSee the `include` parameter for listing Conversation items for more information.", + "schema": { + "type": "array", + "items": { + "type": "string" + } }, "explode": false } @@ -7612,7 +7432,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationItemList" } } } @@ -7629,83 +7449,94 @@ } }, "tags": [ - "MLflow Experiments" + "Conversations" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Item" + }, + "maxItems": 20, + "description": "The items to add to the conversation. You may add up to 20 items at a time." + } + }, + "required": [ + "items" + ] } } } } - } - }, - "/mlflow/api/2.0/mlflow/metrics/get-history": { + }, "get": { - "operationId": "Metrics_getHistory", - "description": "Get MLflow metric history.", + "operationId": "listConversationItems", + "description": "List all items for a conversation with the given ID.", "parameters": [ { - "name": "run_id", - "in": "query", - "required": false, - "description": "MLflow run identifier.", + "name": "conversation_id", + "in": "path", + "required": true, + "description": "The id of the conversation on which the items needs to be listed.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "run_uuid", + "name": "limit", "in": "query", "required": false, - "description": "MLflow run UUID.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "metric_key", + "name": "order", "in": "query", "required": false, - "description": "Metric key.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "string" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, { - "name": "max_results", + "name": "after", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, { - "name": "page_token", + "name": "before", "in": "query", "required": false, - "description": "Token used to retrieve the next page of metric points.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, "explode": false }, { - "name": "api-version", + "name": "item_type", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Filter by item type. If provided, only items of the specified type will be returned.", "schema": { - "type": "string" + "$ref": "#/components/schemas/OpenAI.ItemType" }, "explode": false } @@ -7716,7 +7547,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.OutputItem" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -7733,24 +7590,32 @@ } }, "tags": [ - "MLflow Metrics" + "Conversations" ] } }, - "/mlflow/api/2.0/mlflow/model-versions/create": { - "post": { - "operationId": "ModelVersions_create", - "description": "Create an MLflow model version.", + "/openai/v1/conversations/{conversation_id}/items/{item_id}": { + "get": { + "operationId": "getConversationItem", + "description": "Get a single item from a conversation with the given IDs.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "conversation_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the conversation that contains the item.", "schema": { "type": "string" - }, - "explode": false + } + }, + { + "name": "item_id", + "in": "path", + "required": true, + "description": "The id of the conversation item to retrieve.", + "schema": { + "type": "string" + } } ], "responses": { @@ -7759,7 +7624,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.OutputItem" } } } @@ -7776,54 +7641,30 @@ } }, "tags": [ - "MLflow Model Versions" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/model-versions/delete": { + "Conversations" + ] + }, "delete": { - "operationId": "ModelVersions_delete", - "description": "Delete an MLflow model version.", + "operationId": "deleteConversationItem", + "description": "Delete an item from a conversation with the given IDs.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "version", - "in": "query", - "required": false, - "description": "Model version.", + "name": "conversation_id", + "in": "path", + "required": true, + "description": "The id of the conversation on which the item needs to be deleted from.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", - "in": "query", + "name": "item_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation item to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -7832,7 +7673,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -7849,171 +7690,70 @@ } }, "tags": [ - "MLflow Model Versions" + "Conversations" ] } }, - "/mlflow/api/2.0/mlflow/model-versions/delete-tag": { - "delete": { - "operationId": "ModelVersions_deleteTag", - "description": "Delete an MLflow model-version tag.", + "/openai/v1/evals": { + "get": { + "operationId": "Evals_listEvals", + "summary": "List all evaluations", + "description": "List evaluations for a project.", "parameters": [ { - "name": "name", + "name": "after", "in": "query", "required": false, - "description": "Registered model name.", + "description": "Identifier for the last run from the previous pagination request.", "schema": { "type": "string" }, "explode": false }, { - "name": "version", + "name": "limit", "in": "query", "required": false, - "description": "Model version.", + "description": "Number of runs to retrieve.", "schema": { - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 }, "explode": false }, { - "name": "api-version", + "name": "order", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Model Versions" - ] - } - }, - "/mlflow/api/2.0/mlflow/model-versions/get": { - "get": { - "operationId": "ModelVersions_get", - "description": "Get an MLflow model version.", - "parameters": [ - { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" }, "explode": false }, { - "name": "version", + "name": "order_by", "in": "query", "required": false, - "description": "Model version.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "description": "Evals can be ordered by creation time or last updated time.\nUse `created_at` for creation time or `updated_at` for last updated time.", "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } + "type": "string", + "enum": [ + "created_at", + "updated_at" + ], + "default": "created_at" } } - }, - "tags": [ - "MLflow Model Versions" - ] - } - }, - "/mlflow/api/2.0/mlflow/model-versions/get-download-uri": { - "get": { - "operationId": "ModelVersions_getDownloadUri", - "description": "Get an MLflow model version download URI.", - "parameters": [ - { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "version", - "in": "query", - "required": false, - "description": "Model version.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } ], "responses": { "200": { @@ -8021,7 +7761,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Eval" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -8038,33 +7804,21 @@ } }, "tags": [ - "MLflow Model Versions" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/model-versions/get-storage-location-uri": { + }, "post": { - "operationId": "ModelVersions_getStorageLocationUri", - "description": "Get an MLflow model version storage location URI.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], + "operationId": "Evals_createEval", + "summary": "Create evaluation", + "description": "Create the structure of an evaluation that can be used to test a model's performance.\nAn evaluation is a set of testing criteria and the config for a data source, which dictates the schema of the data used in the evaluation. After creating an evaluation, you can run it on different models and model parameters. We support several types of graders and datasources.\nFor more information, see the [Evals guide](https://platform.openai.com/docs/guides/evals).", + "parameters": [], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/Eval" } } } @@ -8081,55 +7835,34 @@ } }, "tags": [ - "MLflow Model Versions" + "Evals" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/CreateEvalRequest" } } } } } }, - "/mlflow/api/2.0/mlflow/model-versions/search": { - "get": { - "operationId": "ModelVersions_search", - "description": "Search MLflow model versions.", + "/openai/v1/evals/{eval_id}": { + "delete": { + "operationId": "Evals_deleteEval", + "summary": "Delete an evaluation", + "description": "Delete an evaluation.", "parameters": [ { - "name": "max_results", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "page_token", - "in": "query", - "required": false, - "description": "Token used to retrieve the next page of results.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8138,7 +7871,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/DeleteEvalResponse" } } } @@ -8155,24 +7888,22 @@ } }, "tags": [ - "MLflow Model Versions" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/model-versions/set-tag": { - "post": { - "operationId": "ModelVersions_setTag", - "description": "Set an MLflow model-version tag.", + }, + "get": { + "operationId": "Evals_getEval", + "summary": "Get an evaluation", + "description": "Get an evaluation by ID.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8181,7 +7912,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/Eval" } } } @@ -8198,34 +7929,22 @@ } }, "tags": [ - "MLflow Model Versions" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/model-versions/transition-stage": { + "Evals" + ] + }, "post": { - "operationId": "ModelVersions_transitionStage", - "description": "Transition an MLflow model version stage.", + "operationId": "Evals_updateEval", + "summary": "Update an evaluation", + "description": "Update certain properties of an evaluation.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to update.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8234,7 +7953,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/Eval" } } } @@ -8251,34 +7970,91 @@ } }, "tags": [ - "MLflow Model Versions" + "Evals" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/UpdateEvalParametersBody" } } } } } }, - "/mlflow/api/2.0/mlflow/model-versions/update": { - "patch": { - "operationId": "ModelVersions_update", - "description": "Update an MLflow model version.", + "/openai/v1/evals/{eval_id}/runs": { + "get": { + "operationId": "Evals_listRuns", + "summary": "Get a list of runs for an evaluation", + "description": "Get a list of runs for an evaluation.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to retrieve runs for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last run from the previous pagination request.", "schema": { "type": "string" }, "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of runs to retrieve.", + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" + }, + "explode": false + }, + { + "name": "status", + "in": "query", + "required": false, + "description": "Filter runs by status. One of `queued` | `in_progress` | `failed` | `completed` | `canceled`.", + "schema": { + "type": "string", + "enum": [ + "queued", + "in_progress", + "completed", + "canceled", + "failed" + ] + }, + "explode": false } ], "responses": { @@ -8287,7 +8063,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRun" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -8304,34 +8106,21 @@ } }, "tags": [ - "MLflow Model Versions" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/registered-models/create": { + "Evals" + ] + }, "post": { - "operationId": "RegisteredModels_create", - "description": "Create an MLflow registered model.", + "operationId": "Evals_createEvalRun", + "summary": "Create evaluation run", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to create a run for.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8340,7 +8129,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRun" } } } @@ -8357,44 +8146,43 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/CreateEvalRunRequest" } } } } } }, - "/mlflow/api/2.0/mlflow/registered-models/delete": { + "/openai/v1/evals/{eval_id}/runs/{run_id}": { "delete": { - "operationId": "RegisteredModels_delete", - "description": "Delete an MLflow registered model.", + "operationId": "Evals_deleteEvalRun", + "summary": "Delete evaluation run", + "description": "Delete an eval run.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation to delete the run from.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", - "in": "query", + "name": "run_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the run to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8403,7 +8191,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/DeleteEvalRunResponse" } } } @@ -8420,34 +8208,31 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/delete-tag": { - "delete": { - "operationId": "RegisteredModels_deleteTag", - "description": "Delete an MLflow registered-model tag.", + }, + "get": { + "operationId": "Evals_getEvalRun", + "summary": "Get an evaluation run", + "description": "Get an evaluation run by ID.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation to retrieve runs for.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", - "in": "query", + "name": "run_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the run to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8456,7 +8241,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRun" } } } @@ -8473,34 +8258,31 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/get": { - "get": { - "operationId": "RegisteredModels_get", - "description": "Get an MLflow registered model.", + }, + "post": { + "operationId": "Evals_cancelEvalRun", + "summary": "Cancel evaluation run", + "description": "Cancel an ongoing evaluation run.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation whose run you want to cancel.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", - "in": "query", + "name": "run_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the run to cancel.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8509,7 +8291,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRun" } } } @@ -8526,141 +8308,85 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] } }, - "/mlflow/api/2.0/mlflow/registered-models/get-latest-versions": { + "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items": { "get": { - "operationId": "RegisteredModels_getLatestVersions", - "description": "Get latest versions for an MLflow registered model.", + "operationId": "Evals_getEvalRunOutputItems", + "summary": "Get evaluation run output items", + "description": "Get a list of output items for an evaluation run.", "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "description": "Registered model name.", + "name": "eval_id", + "in": "path", + "required": true, "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", - "in": "query", + "name": "run_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the run to retrieve output items for.", "schema": { "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Registered Models" - ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/list": { - "get": { - "operationId": "RegisteredModels_list", - "description": "List MLflow registered models.", - "parameters": [ { - "name": "max_results", + "name": "after", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "Identifier for the last run from the previous pagination request.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, { - "name": "page_token", + "name": "limit", "in": "query", "required": false, - "description": "Token used to retrieve the next page of results.", + "description": "Number of runs to retrieve.", "schema": { - "type": "string" - }, - "explode": false - }, + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 + }, + "explode": false + }, { - "name": "api-version", + "name": "order", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Registered Models" - ] - } - }, - "/mlflow/api/2.0/mlflow/registered-models/rename": { - "post": { - "operationId": "RegisteredModels_rename", - "description": "Rename an MLflow registered model.", - "parameters": [ { - "name": "api-version", + "name": "status", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Filter output items by status. Use `failed` to filter by failed output\nitems or `pass` to filter by passed output items.", "schema": { - "type": "string" - }, - "explode": false + "type": "string", + "enum": [ + "fail", + "pass" + ] + } } ], "responses": { @@ -8669,7 +8395,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRunOutputItem" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -8686,55 +8438,42 @@ } }, "tags": [ - "MLflow Registered Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Evals" + ] } }, - "/mlflow/api/2.0/mlflow/registered-models/search": { + "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}": { "get": { - "operationId": "RegisteredModels_search", - "description": "Search MLflow registered models.", + "operationId": "Evals_getEvalRunOutputItem", + "summary": "Get an output item of an evaluation run", + "description": "Get an evaluation run output item by ID.", "parameters": [ { - "name": "max_results", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation to retrieve runs for.", "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false + "type": "string" + } }, { - "name": "page_token", - "in": "query", - "required": false, - "description": "Token used to retrieve the next page of results.", + "name": "run_id", + "in": "path", + "required": true, + "description": "The ID of the run to retrieve.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "api-version", - "in": "query", + "name": "output_item_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the output item to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8743,7 +8482,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/EvalRunOutputItem" } } } @@ -8760,14 +8499,14 @@ } }, "tags": [ - "MLflow Registered Models" + "Evals" ] } }, - "/mlflow/api/2.0/mlflow/registered-models/set-tag": { + "/openai/v1/fine_tuning/jobs": { "post": { - "operationId": "RegisteredModels_setTag", - "description": "Set an MLflow registered-model tag.", + "operationId": "createFineTuningJob", + "description": "Creates a fine-tuning job which begins the process of creating a new model from a given dataset.\n\nResponse includes details of the enqueued job including job status and the name of the fine-tuned models once complete.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", "parameters": [ { "name": "api-version", @@ -8786,7 +8525,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -8803,78 +8542,45 @@ } }, "tags": [ - "MLflow Registered Models" + "Fine-Tuning" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" + "$ref": "#/components/schemas/OpenAI.CreateFineTuningJobRequest" } } } } - } - }, - "/mlflow/api/2.0/mlflow/registered-models/update": { - "patch": { - "operationId": "RegisteredModels_update", - "description": "Update an MLflow registered model.", + }, + "get": { + "operationId": "listPaginatedFineTuningJobs", + "description": "List your organization's fine-tuning jobs", "parameters": [ { - "name": "api-version", + "name": "after", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Identifier for the last job from the previous pagination request.", "schema": { "type": "string" }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Registered Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/create": { - "post": { - "operationId": "Runs_create", - "description": "Create an MLflow run.", - "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of fine-tuning jobs to retrieve.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -8892,7 +8598,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ListPaginatedFineTuningJobsResponse" } } } @@ -8909,25 +8615,24 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/delete": { - "post": { - "operationId": "Runs_delete", - "description": "Delete an MLflow run.", + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}": { + "get": { + "operationId": "retrieveFineTuningJob", + "description": "Get info about a fine-tuning job.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -8945,7 +8650,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -8962,25 +8667,24 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/delete-tag": { + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel": { "post": { - "operationId": "Runs_deleteTag", - "description": "Delete an MLflow run tag.", + "operationId": "cancelFineTuningJob", + "description": "Immediately cancel a fine-tune job.", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to cancel.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -8998,7 +8702,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -9015,42 +8719,43 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/get": { + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints": { "get": { - "operationId": "Runs_get", - "description": "Get an MLflow run.", + "operationId": "listFineTuningJobCheckpoints", + "description": "List checkpoints for a fine-tuning job.", "parameters": [ { - "name": "run_id", + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to get checkpoints for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", "in": "query", "required": false, - "description": "MLflow run identifier.", + "description": "Identifier for the last checkpoint ID from the previous pagination request.", "schema": { "type": "string" }, "explode": false }, { - "name": "run_uuid", + "name": "limit", "in": "query", "required": false, - "description": "MLflow run UUID.", + "description": "Number of checkpoints to retrieve.", "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 10 }, "explode": false }, @@ -9071,7 +8776,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ListFineTuningJobCheckpointsResponse" } } } @@ -9088,121 +8793,46 @@ } }, "tags": [ - "MLflow Runs" + "Fine-Tuning" ] } }, - "/mlflow/api/2.0/mlflow/runs/log-batch": { - "post": { - "operationId": "Runs_logBatch", - "description": "Log a batch of metrics, parameters, and tags to an MLflow run.", + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events": { + "get": { + "operationId": "listFineTuningJobEvents", + "description": "Get fine-grained status updates for a fine-tuning job.", "parameters": [ { - "name": "api-version", - "in": "query", + "name": "fine_tuning_job_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the fine-tuning job to get events for.", "schema": { "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/log-inputs": { - "post": { - "operationId": "Runs_logInputs", - "description": "Log MLflow run input relationships.", - "parameters": [ { - "name": "api-version", + "name": "after", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Identifier for the last event from the previous pagination request.", "schema": { "type": "string" }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/log-metric": { - "post": { - "operationId": "Runs_logMetric", - "description": "Log one metric to an MLflow run.", - "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of events to retrieve.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -9220,7 +8850,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.ListFineTuningJobEventsResponse" } } } @@ -9237,25 +8867,24 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/log-model": { + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause": { "post": { - "operationId": "Runs_logModel", - "description": "Log MLflow model metadata.", + "operationId": "pauseFineTuningJob", + "description": "Pause a running fine-tune job.", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to pause.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -9273,7 +8902,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -9290,25 +8919,24 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/log-parameter": { + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume": { "post": { - "operationId": "Runs_logParameter", - "description": "Log one parameter to an MLflow run.", + "operationId": "resumeFineTuningJob", + "description": "Resume a paused fine-tune job.", "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to resume.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -9326,7 +8954,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.FineTuningJob" } } } @@ -9343,43 +8971,27 @@ } }, "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } + "Fine-Tuning" + ] } }, - "/mlflow/api/2.0/mlflow/runs/restore": { + "/openai/v1/responses": { "post": { - "operationId": "Runs_restore", - "description": "Restore a deleted MLflow run.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], + "operationId": "createResponse_createResponseStream", + "parameters": [], + "description": "Creates a model response. Creates a model response (streaming response).", "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" + "$ref": "#/components/schemas/OpenAI.Response" + } + }, + "text/event-stream": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" } } } @@ -9396,6974 +9008,515 @@ } }, "tags": [ - "MLflow Runs" + "Responses" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/search": { - "post": { - "operationId": "Runs_search", - "description": "Search MLflow runs.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/set-tag": { - "post": { - "operationId": "Runs_setTag", - "description": "Set an MLflow run tag.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/mlflow/api/2.0/mlflow/runs/update": { - "post": { - "operationId": "Runs_update", - "description": "Update MLflow run metadata or status.", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "MLflow Runs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Mlflow.MlflowPayload" - } - } - } - } - } - }, - "/openai/v1/conversations": { - "post": { - "operationId": "createConversation", - "description": "Create a conversation.", - "parameters": [], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateConversationBody" - } - } - } - } - }, - "get": { - "operationId": "listConversations", - "description": "Returns the list of all conversations.", - "parameters": [ - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "agent_name", - "in": "query", - "required": false, - "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "agent_id", - "in": "query", - "required": false, - "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" + "anyOf": [ + { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ] - } - }, - "/openai/v1/conversations/{conversation_id}": { - "post": { - "operationId": "updateConversation", - "description": "Update a conversation.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation to update.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.UpdateConversationBody" - } - } - } - } - }, - "get": { - "operationId": "getConversation", - "description": "Retrieves a conversation.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation to retrieve.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ] - }, - "delete": { - "operationId": "deleteConversation", - "description": "Deletes a conversation.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation to delete.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.DeletedConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ] - } - }, - "/openai/v1/conversations/{conversation_id}/items": { - "post": { - "operationId": "createConversationItems", - "description": "Create items in a conversation with the given ID.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation on which the item needs to be created.", - "schema": { - "type": "string" - } - }, - { - "name": "include", - "in": "query", - "required": false, - "description": "Additional fields to include in the response.\nSee the `include` parameter for listing Conversation items for more information.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationItemList" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Item" - }, - "maxItems": 20, - "description": "The items to add to the conversation. You may add up to 20 items at a time." - } - }, - "required": [ - "items" - ] - } - } - } - } - }, - "get": { - "operationId": "listConversationItems", - "description": "List all items for a conversation with the given ID.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation on which the items needs to be listed.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "item_type", - "in": "query", - "required": false, - "description": "Filter by item type. If provided, only items of the specified type will be returned.", - "schema": { - "$ref": "#/components/schemas/OpenAI.ItemType" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.OutputItem" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ] - } - }, - "/openai/v1/conversations/{conversation_id}/items/{item_id}": { - "get": { - "operationId": "getConversationItem", - "description": "Get a single item from a conversation with the given IDs.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The ID of the conversation that contains the item.", - "schema": { - "type": "string" - } - }, - { - "name": "item_id", - "in": "path", - "required": true, - "description": "The id of the conversation item to retrieve.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.OutputItem" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ] - }, - "delete": { - "operationId": "deleteConversationItem", - "description": "Delete an item from a conversation with the given IDs.", - "parameters": [ - { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation on which the item needs to be deleted from.", - "schema": { - "type": "string" - } - }, - { - "name": "item_id", - "in": "path", - "required": true, - "description": "The id of the conversation item to delete.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ] - } - }, - "/openai/v1/evals": { - "get": { - "operationId": "Evals_listEvals", - "summary": "List all evaluations", - "description": "List evaluations for a project.", - "parameters": [ - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last run from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of runs to retrieve.", - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", - "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" - }, - "explode": false - }, - { - "name": "order_by", - "in": "query", - "required": false, - "description": "Evals can be ordered by creation time or last updated time.\nUse `created_at` for creation time or `updated_at` for last updated time.", - "schema": { - "type": "string", - "enum": [ - "created_at", - "updated_at" - ], - "default": "created_at" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Eval" + "top_logprobs": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - }, - "post": { - "operationId": "Evals_createEval", - "summary": "Create evaluation", - "description": "Create the structure of an evaluation that can be used to test a model's performance.\nAn evaluation is a set of testing criteria and the config for a data source, which dictates the schema of the data used in the evaluation. After creating an evaluation, you can run it on different models and model parameters. We support several types of graders and datasources.\nFor more information, see the [Evals guide](https://platform.openai.com/docs/guides/evals).", - "parameters": [], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Eval" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateEvalRequest" - } - } - } - } - } - }, - "/openai/v1/evals/{eval_id}": { - "delete": { - "operationId": "Evals_deleteEval", - "summary": "Delete an evaluation", - "description": "Delete an evaluation.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to delete.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteEvalResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - }, - "get": { - "operationId": "Evals_getEval", - "summary": "Get an evaluation", - "description": "Get an evaluation by ID.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to retrieve.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Eval" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - }, - "post": { - "operationId": "Evals_updateEval", - "summary": "Update an evaluation", - "description": "Update certain properties of an evaluation.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to update.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Eval" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateEvalParametersBody" - } - } - } - } - } - }, - "/openai/v1/evals/{eval_id}/runs": { - "get": { - "operationId": "Evals_listRuns", - "summary": "Get a list of runs for an evaluation", - "description": "Get a list of runs for an evaluation.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to retrieve runs for.", - "schema": { - "type": "string" - } - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last run from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of runs to retrieve.", - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", - "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" - }, - "explode": false - }, - { - "name": "status", - "in": "query", - "required": false, - "description": "Filter runs by status. One of `queued` | `in_progress` | `failed` | `completed` | `canceled`.", - "schema": { - "type": "string", - "enum": [ - "queued", - "in_progress", - "completed", - "canceled", - "failed" - ] - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRun" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - }, - "post": { - "operationId": "Evals_createEvalRun", - "summary": "Create evaluation run", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to create a run for.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EvalRun" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateEvalRunRequest" - } - } - } - } - } - }, - "/openai/v1/evals/{eval_id}/runs/{run_id}": { - "delete": { - "operationId": "Evals_deleteEvalRun", - "summary": "Delete evaluation run", - "description": "Delete an eval run.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to delete the run from.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", - "required": true, - "description": "The ID of the run to delete.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteEvalRunResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - }, - "get": { - "operationId": "Evals_getEvalRun", - "summary": "Get an evaluation run", - "description": "Get an evaluation run by ID.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to retrieve runs for.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", - "required": true, - "description": "The ID of the run to retrieve.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EvalRun" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - }, - "post": { - "operationId": "Evals_cancelEvalRun", - "summary": "Cancel evaluation run", - "description": "Cancel an ongoing evaluation run.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation whose run you want to cancel.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", - "required": true, - "description": "The ID of the run to cancel.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EvalRun" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - } - }, - "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items": { - "get": { - "operationId": "Evals_getEvalRunOutputItems", - "summary": "Get evaluation run output items", - "description": "Get a list of output items for an evaluation run.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", - "required": true, - "description": "The ID of the run to retrieve output items for.", - "schema": { - "type": "string" - } - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last run from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of runs to retrieve.", - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", - "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" - }, - "explode": false - }, - { - "name": "status", - "in": "query", - "required": false, - "description": "Filter output items by status. Use `failed` to filter by failed output\nitems or `pass` to filter by passed output items.", - "schema": { - "type": "string", - "enum": [ - "fail", - "pass" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRunOutputItem" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - } - }, - "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}": { - "get": { - "operationId": "Evals_getEvalRunOutputItem", - "summary": "Get an output item of an evaluation run", - "description": "Get an evaluation run output item by ID.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to retrieve runs for.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", - "required": true, - "description": "The ID of the run to retrieve.", - "schema": { - "type": "string" - } - }, - { - "name": "output_item_id", - "in": "path", - "required": true, - "description": "The ID of the output item to retrieve.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/EvalRunOutputItem" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Evals" - ] - } - }, - "/openai/v1/fine_tuning/jobs": { - "post": { - "operationId": "createFineTuningJob", - "description": "Creates a fine-tuning job which begins the process of creating a new model from a given dataset.\n\nResponse includes details of the enqueued job including job status and the name of the fine-tuned models once complete.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", - "parameters": [ - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateFineTuningJobRequest" - } - } - } - } - }, - "get": { - "operationId": "listPaginatedFineTuningJobs", - "description": "List your organization's fine-tuning jobs", - "parameters": [ - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last job from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of fine-tuning jobs to retrieve.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ListPaginatedFineTuningJobsResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}": { - "get": { - "operationId": "retrieveFineTuningJob", - "description": "Get info about a fine-tuning job.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", - "parameters": [ - { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel": { - "post": { - "operationId": "cancelFineTuningJob", - "description": "Immediately cancel a fine-tune job.", - "parameters": [ - { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to cancel.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints": { - "get": { - "operationId": "listFineTuningJobCheckpoints", - "description": "List checkpoints for a fine-tuning job.", - "parameters": [ - { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to get checkpoints for.", - "schema": { - "type": "string" - } - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last checkpoint ID from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of checkpoints to retrieve.", - "schema": { - "type": "integer", - "format": "int32", - "default": 10 - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ListFineTuningJobCheckpointsResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events": { - "get": { - "operationId": "listFineTuningJobEvents", - "description": "Get fine-grained status updates for a fine-tuning job.", - "parameters": [ - { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to get events for.", - "schema": { - "type": "string" - } - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last event from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of events to retrieve.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ListFineTuningJobEventsResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause": { - "post": { - "operationId": "pauseFineTuningJob", - "description": "Pause a running fine-tune job.", - "parameters": [ - { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to pause.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume": { - "post": { - "operationId": "resumeFineTuningJob", - "description": "Resume a paused fine-tune job.", - "parameters": [ - { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to resume.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Fine-Tuning" - ] - } - }, - "/openai/v1/responses": { - "post": { - "operationId": "createResponse_createResponseStream", - "parameters": [], - "description": "Creates a model response. Creates a model response (streaming response).", - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.Response" - } - }, - "text/event-stream": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "anyOf": [ - { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "top_logprobs": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "temperature": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "top_p": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "user": { - "type": "string", - "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", - "deprecated": true - }, - "safety_identifier": { - "type": "string", - "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." - }, - "prompt_cache_key": { - "type": "string", - "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." - }, - "service_tier": { - "$ref": "#/components/schemas/OpenAI.ServiceTier" - }, - "prompt_cache_retention": { - "type": "string", - "enum": [ - "in-memory", - "24h" - ], - "nullable": true - }, - "previous_response_id": { - "type": "string", - "nullable": true - }, - "model": { - "type": "string", - "description": "The model deployment to use for the creation of this response." - }, - "reasoning": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Reasoning" - } - ], - "nullable": true - }, - "background": { - "type": "boolean", - "nullable": true - }, - "max_output_tokens": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "max_tool_calls": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "text": { - "$ref": "#/components/schemas/OpenAI.ResponseTextParam" - }, - "tools": { - "$ref": "#/components/schemas/OpenAI.ToolsArray" - }, - "tool_choice": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" - }, - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" - } - ] - }, - "prompt": { - "$ref": "#/components/schemas/OpenAI.Prompt" - }, - "truncation": { - "type": "string", - "enum": [ - "auto", - "disabled" - ], - "nullable": true, - "default": "disabled" - }, - "input": { - "$ref": "#/components/schemas/OpenAI.InputParam" - }, - "include": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "nullable": true - }, - "parallel_tool_calls": { - "type": "boolean", - "nullable": true, - "default": true - }, - "store": { - "type": "boolean", - "nullable": true, - "default": true - }, - "instructions": { - "type": "string", - "nullable": true - }, - "stream": { - "type": "boolean", - "nullable": true - }, - "stream_options": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" - } - ], - "nullable": true - }, - "conversation": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ConversationParam" - } - ], - "nullable": true - }, - "context_management": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ContextManagementParam" - }, - "nullable": true, - "description": "Context management configuration for this request." - }, - "agent": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "(Deprecated) Use agent_reference instead.\nThe agent to use for generating the response." - }, - "agent_session_id": { - "type": "string", - "description": "Optional session identifier for sandbox affinity. Currently only relevant for hosted agents.\nWhen provided, the request is routed to the same sandbox. When omitted, auto-derived from\nconversation_id/prev_response_id or a new UUID is generated." - }, - "agent_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "The agent to use for generating the response." - }, - "structured_inputs": { - "type": "object", - "additionalProperties": {}, - "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." - } - } - }, - { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "top_logprobs": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "temperature": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "top_p": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "user": { - "type": "string", - "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", - "deprecated": true - }, - "safety_identifier": { - "type": "string", - "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." - }, - "prompt_cache_key": { - "type": "string", - "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." - }, - "service_tier": { - "$ref": "#/components/schemas/OpenAI.ServiceTier" - }, - "prompt_cache_retention": { - "type": "string", - "enum": [ - "in-memory", - "24h" - ], - "nullable": true - }, - "previous_response_id": { - "type": "string", - "nullable": true - }, - "model": { - "type": "string", - "description": "The model deployment to use for the creation of this response." - }, - "reasoning": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Reasoning" - } - ], - "nullable": true - }, - "background": { - "type": "boolean", - "nullable": true - }, - "max_output_tokens": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "max_tool_calls": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "text": { - "$ref": "#/components/schemas/OpenAI.ResponseTextParam" - }, - "tools": { - "$ref": "#/components/schemas/OpenAI.ToolsArray" - }, - "tool_choice": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" - }, - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" - } - ] - }, - "prompt": { - "$ref": "#/components/schemas/OpenAI.Prompt" - }, - "truncation": { - "type": "string", - "enum": [ - "auto", - "disabled" - ], - "nullable": true, - "default": "disabled" - }, - "input": { - "$ref": "#/components/schemas/OpenAI.InputParam" - }, - "include": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "nullable": true - }, - "parallel_tool_calls": { - "type": "boolean", - "nullable": true, - "default": true - }, - "store": { - "type": "boolean", - "nullable": true, - "default": true - }, - "instructions": { - "type": "string", - "nullable": true - }, - "stream": { - "type": "boolean", - "nullable": true - }, - "stream_options": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" - } - ], - "nullable": true - }, - "conversation": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ConversationParam" - } - ], - "nullable": true - }, - "context_management": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ContextManagementParam" - }, - "nullable": true, - "description": "Context management configuration for this request." - }, - "agent": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "(Deprecated) Use agent_reference instead.\nThe agent to use for generating the response." - }, - "agent_session_id": { - "type": "string", - "description": "Optional session identifier for sandbox affinity. Currently only relevant for hosted agents.\nWhen provided, the request is routed to the same sandbox. When omitted, auto-derived from\nconversation_id/prev_response_id or a new UUID is generated." - }, - "agent_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "The agent to use for generating the response." - }, - "structured_inputs": { - "type": "object", - "additionalProperties": {}, - "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." - } - } - } - ] - } - } - } - } - }, - "get": { - "operationId": "listResponses", - "description": "Returns the list of all responses.", - "parameters": [ - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "agent_name", - "in": "query", - "required": false, - "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "agent_id", - "in": "query", - "required": false, - "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "conversation_id", - "in": "query", - "required": false, - "description": "Filter by conversation ID. If provided, only responses associated with the specified conversation will be returned.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Response" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ] - } - }, - "/openai/v1/responses/compact": { - "post": { - "operationId": "compactResponseConversation", - "description": "Produces a compaction of a responses conversation.", - "parameters": [], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CompactResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CompactResponseMethodPublicBody" - } - } - } - } - } - }, - "/openai/v1/responses/{response_id}": { - "get": { - "operationId": "getResponse_getResponseStream", - "parameters": [ - { - "name": "response_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "include[]", - "in": "query", - "required": false, - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "default": [] - } - }, - { - "name": "stream", - "in": "query", - "required": false, - "schema": { - "type": "boolean", - "default": false - }, - "explode": false - }, - { - "name": "starting_after", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "accept", - "in": "header", - "required": false, - "schema": { - "type": "string", - "enum": [ - "text/event-stream" - ] - } - } - ], - "description": "Retrieves a model response with the given ID. Retrieves a model response with the given ID (streaming response).", - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.Response" - } - }, - "text/event-stream": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ] - }, - "delete": { - "operationId": "deleteResponse", - "description": "Deletes a model response.", - "parameters": [ - { - "name": "response_id", - "in": "path", - "required": true, - "description": "The ID of the response to delete.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteResponseResult" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ] - } - }, - "/openai/v1/responses/{response_id}/cancel": { - "post": { - "operationId": "cancelResponse", - "description": "Cancels a model response.", - "parameters": [ - { - "name": "response_id", - "in": "path", - "required": true, - "description": "The ID of the response to cancel.", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.Response" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ] - } - }, - "/openai/v1/responses/{response_id}/input_items": { - "get": { - "operationId": "listInputItems", - "description": "Returns a list of input items for a given response.", - "parameters": [ - { - "name": "response_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ItemResource" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Responses" - ] - } - }, - "/redTeams/runs": { - "get": { - "operationId": "RedTeams_list", - "description": "List a redteam by name.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "RedTeams=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedRedTeam" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Redteams" - ] - } - }, - "/redTeams/runs/{name}": { - "get": { - "operationId": "RedTeams_get", - "description": "Get a redteam by name.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", - "in": "path", - "required": true, - "description": "Identifier of the red team run.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "RedTeams=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RedTeam" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Redteams" - ] - } - }, - "/redTeams/runs:run": { - "post": { - "operationId": "RedTeams_create", - "description": "Creates a redteam run.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "RedTeams=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RedTeam" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Redteams" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RedTeam" - } - } - }, - "description": "Redteam to be run" - } - } - }, - "/schedules": { - "get": { - "operationId": "Schedules_list", - "description": "List all schedules.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "type", - "in": "query", - "required": false, - "description": "Filter by the type of schedule.", - "schema": { - "$ref": "#/components/schemas/ScheduleTaskType" - }, - "explode": false - }, - { - "name": "enabled", - "in": "query", - "required": false, - "description": "Filter by the enabled status.", - "schema": { - "type": "boolean" - }, - "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedSchedule" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - } - }, - "/schedules/{id}": { - "delete": { - "operationId": "Schedules_delete", - "description": "Delete a schedule.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "id", - "in": "path", - "required": true, - "description": "Identifier of the schedule.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - } - ], - "responses": { - "204": { - "description": "There is no content to send for this request, but the headers may be useful." - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - }, - "get": { - "operationId": "Schedules_get", - "description": "Get a schedule by id.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "id", - "in": "path", - "required": true, - "description": "Identifier of the schedule.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - }, - "put": { - "operationId": "Schedules_createOrUpdate", - "description": "Create or update operation template.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "id", - "in": "path", - "required": true, - "description": "Identifier of the schedule.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - } - }, - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Schedules" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - }, - "description": "The resource instance." - } - } - }, - "/schedules/{id}/runs": { - "get": { - "operationId": "Schedules_listRuns", - "description": "List all schedule runs.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "id", - "in": "path", - "required": true, - "description": "Identifier of the schedule.", - "schema": { - "type": "string" - } - }, - { - "name": "type", - "in": "query", - "required": false, - "description": "Filter by the type of schedule.", - "schema": { - "$ref": "#/components/schemas/ScheduleTaskType" - }, - "explode": false - }, - { - "name": "enabled", - "in": "query", - "required": false, - "description": "Filter by the enabled status.", - "schema": { - "type": "boolean" - }, - "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedScheduleRun" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - } - }, - "/schedules/{schedule_id}/runs/{run_id}": { - "get": { - "operationId": "Schedules_getRun", - "description": "Get a schedule run by id.", - "parameters": [ - { - "name": "schedule_id", - "in": "path", - "required": true, - "description": "The unique identifier of the schedule.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", - "required": true, - "description": "The unique identifier of the schedule run.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ScheduleRun" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - } - }, - "/skills": { - "post": { - "operationId": "Skills_createSkill", - "description": "Creates a skill.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillObject" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 63, - "description": "The unique name of the skill." - }, - "description": { - "type": "string", - "maxLength": 1024, - "description": "A human-readable description of the skill." - }, - "instructions": { - "type": "string", - "maxLength": 102400, - "description": "Instructions that define the behavior of the skill." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of key-value pairs associated with the skill." - } - }, - "required": [ - "name" - ] - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - }, - "get": { - "operationId": "Skills_listSkills", - "description": "Returns the list of all skills.", - "parameters": [ - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SkillObject" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - } - }, - "/skills/{skill_name}": { - "get": { - "operationId": "Skills_getSkill", - "description": "Retrieves a skill.", - "parameters": [ - { - "name": "skill_name", - "in": "path", - "required": true, - "description": "The unique name of the skill.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillObject" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - }, - "post": { - "operationId": "Skills_updateSkill", - "description": "Updates an existing skill.", - "parameters": [ - { - "name": "skill_name", - "in": "path", - "required": true, - "description": "The unique name of the skill.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillObject" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 1024, - "description": "A human-readable description of the skill." - }, - "instructions": { - "type": "string", - "maxLength": 102400, - "description": "Instructions that define the behavior of the skill." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of key-value pairs associated with the skill." - } - } - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - }, - "delete": { - "operationId": "Skills_deleteSkill", - "description": "Deletes a skill.", - "parameters": [ - { - "name": "skill_name", - "in": "path", - "required": true, - "description": "The unique name of the skill.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteSkillResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - } - }, - "/skills/{skill_name}:download": { - "get": { - "operationId": "Skills_downloadSkill", - "description": "Downloads a skill package.", - "parameters": [ - { - "name": "skill_name", - "in": "path", - "required": true, - "description": "The unique name of the skill.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The response body for downloading a skill package.", - "content": { - "application/gzip": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - } - }, - "/skills:import": { - "post": { - "operationId": "Skills_createSkillFromPackage", - "description": "Creates a skill from a GZip package.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SkillObject" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/gzip": { - "schema": { - "type": "string", - "format": "binary" - } - } - }, - "description": "The GZip package used to create the skill." - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - } - }, - "/toolsets": { - "post": { - "operationId": "createToolset", - "description": "Create a toolset.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ToolsetObject" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Toolsets" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the toolset." - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the toolset." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the toolset." - }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" - }, - "description": "The list of tools to include in the toolset." - } - }, - "required": [ - "name", - "tools" - ] - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - }, - "get": { - "operationId": "listToolsets", - "description": "List all toolsets.", - "parameters": [ - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ToolsetObject" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - } - }, - "/toolsets/{tool_set_name}": { - "post": { - "operationId": "updateToolset", - "description": "Update a toolset.", - "parameters": [ - { - "name": "tool_set_name", - "in": "path", - "required": true, - "description": "The name of the toolset to update.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ToolsetObject" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Toolsets" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the toolset." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the toolset." - }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" - }, - "description": "The list of tools to include in the toolset." - } - }, - "required": [ - "tools" - ] - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - }, - "get": { - "operationId": "getToolset", - "description": "Retrieve a toolset.", - "parameters": [ - { - "name": "tool_set_name", - "in": "path", - "required": true, - "description": "The name of the toolset to retrieve.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ToolsetObject" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - }, - "delete": { - "operationId": "deleteToolset", - "description": "Delete a toolset.", - "parameters": [ - { - "name": "tool_set_name", - "in": "path", - "required": true, - "description": "The name of the toolset to delete.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DeleteToolsetResponse" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - } - }, - "/trainingJobs": { - "get": { - "operationId": "TrainingJobs_list", - "description": "List training jobs.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "jobType", - "in": "query", - "required": false, - "description": "Filter by job type (e.g. 'Command').", - "schema": { - "$ref": "#/components/schemas/JobType" - }, - "explode": false - }, - { - "name": "tag", - "in": "query", - "required": false, - "description": "Filter jobs by tag in the format 'key=value' (e.g., 'framework=pytorch').", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "listViewType", - "in": "query", - "required": false, - "description": "Specifies which view type to apply when listing jobs.", - "schema": { - "$ref": "#/components/schemas/ListViewType" - }, - "explode": false - }, - { - "name": "properties", - "in": "query", - "required": false, - "description": "Comma-separated user property names and optionally values. Example: prop1,prop2=value2.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJob" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - }, - "post": { - "operationId": "TrainingJobs_create", - "description": "Create and execute a model training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry job creation.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Job" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobCreate" - } - } - }, - "description": "The training job to create." - } - } - }, - "/trainingJobs/operations/{operationId}/result": { - "get": { - "operationId": "TrainingJobOperations_getOperationResult", - "description": "Poll the result of an asynchronous training job operation.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "operationId", - "in": "path", - "required": true, - "description": "The operation identifier returned by a training job create, cancel, or delete request.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobOperationResource" - } - } - } - }, - "202": { - "description": "Response returned when a training job operation is still in progress.", - "headers": { - "Location": { - "required": false, - "description": "URL to poll for the operation result.", - "schema": { - "type": "string" - } - }, - "Operation-Location": { - "required": false, - "description": "URL to poll for the operation status.", - "schema": { - "type": "string" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/operations/{operationId}/status": { - "get": { - "operationId": "TrainingJobOperations_getOperationStatus", - "description": "Poll the status of an asynchronous training job operation.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "operationId", - "in": "path", - "required": true, - "description": "The operation identifier returned by a training job create, cancel, or delete request.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobOperationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/artifacts": { - "get": { - "operationId": "TrainingJobArtifacts_listArtifacts", - "description": "List artifacts for the current view of a training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "pathPrefix", - "in": "query", - "required": false, - "description": "Artifact path prefix to list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/artifacts:content": { - "get": { - "operationId": "TrainingJobArtifacts_downloadArtifact", - "description": "Download training job artifact content.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/octet-stream": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/artifacts:contentInfo": { - "get": { - "operationId": "TrainingJobArtifacts_getArtifactContentInfo", - "description": "Get download information for a training job artifact.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobArtifactContentInfo" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/artifacts:contentInfoByPrefix": { - "get": { - "operationId": "TrainingJobArtifacts_getArtifactContentInfoByPrefix", - "description": "List download information for training job artifacts under a path prefix.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "pathPrefix", - "in": "query", - "required": false, - "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobArtifactContentInfo" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/artifacts:metadata": { - "get": { - "operationId": "TrainingJobArtifacts_getArtifactMetadata", - "description": "Get metadata for a training job artifact.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobArtifact" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/metrics": { - "get": { - "operationId": "TrainingJobMetrics_listMetrics", - "description": "List metrics emitted by the current view of a training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobMetric" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/metrics/{metricName}": { - "get": { - "operationId": "TrainingJobMetrics_getMetric", - "description": "Get the full history for a training job metric.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/metrics/{metricName}:aggregates": { - "get": { - "operationId": "TrainingJobMetrics_getMetricAggregates", - "description": "Get aggregate values for a training job metric.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/metrics/{metricName}:sample": { - "get": { - "operationId": "TrainingJobMetrics_getMetricSample", - "description": "Get one sampled value or window for a training job metric.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobMetricSample" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/metrics/{metricName}:samples": { - "get": { - "operationId": "TrainingJobMetrics_getMetricSamples", - "description": "Get sampled values for a training job metric.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobMetricSample" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/metrics:lastValues": { - "get": { - "operationId": "TrainingJobMetrics_getMetricLastValues", - "description": "Get the latest values for metrics emitted by the current view of a training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/outputs": { - "get": { - "operationId": "TrainingJobOutputs_listOutputs", - "description": "List outputs produced by a training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/outputs/{outputName}": { - "get": { - "operationId": "TrainingJobOutputs_getOutput", - "description": "Get one output produced by a training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "outputName", - "in": "path", - "required": true, - "description": "The output name.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobOutputReference" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/runs": { - "get": { - "operationId": "TrainingJobRuns_listRuns", - "description": "List runs for a training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobRun" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/runs/{runId}": { - "get": { - "operationId": "TrainingJobRuns_getRun", - "description": "Get one run for a training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobRun" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/runs/{runId}/artifacts": { - "get": { - "operationId": "TrainingJobRunArtifacts_listRunArtifacts", - "description": "List artifacts for a specific training job run.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "pathPrefix", - "in": "query", - "required": false, - "description": "Artifact path prefix to list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/runs/{runId}/artifacts:content": { - "get": { - "operationId": "TrainingJobRunArtifacts_downloadRunArtifact", - "description": "Download artifact content from a specific training job run.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/octet-stream": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/runs/{runId}/artifacts:contentInfo": { - "get": { - "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfo", - "description": "Get download information for an artifact from a specific training job run.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobArtifactContentInfo" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/runs/{runId}/artifacts:contentInfoByPrefix": { - "get": { - "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfoByPrefix", - "description": "List download information for artifacts under a path prefix from a specific training job run.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "pathPrefix", - "in": "query", - "required": false, - "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobArtifactContentInfo" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/runs/{runId}/artifacts:metadata": { - "get": { - "operationId": "TrainingJobRunArtifacts_getRunArtifactMetadata", - "description": "Get metadata for an artifact from a specific training job run.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobArtifact" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } + "temperature": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "top_p": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "user": { + "type": "string", + "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", + "deprecated": true + }, + "safety_identifier": { + "type": "string", + "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." + }, + "prompt_cache_key": { + "type": "string", + "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." + }, + "service_tier": { + "$ref": "#/components/schemas/OpenAI.ServiceTier" + }, + "prompt_cache_retention": { + "type": "string", + "enum": [ + "in-memory", + "24h" + ], + "nullable": true + }, + "previous_response_id": { + "type": "string", + "nullable": true + }, + "model": { + "type": "string", + "description": "The model deployment to use for the creation of this response." + }, + "reasoning": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Reasoning" + } + ], + "nullable": true + }, + "background": { + "type": "boolean", + "nullable": true + }, + "max_output_tokens": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "max_tool_calls": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "text": { + "$ref": "#/components/schemas/OpenAI.ResponseTextParam" + }, + "tools": { + "$ref": "#/components/schemas/OpenAI.ToolsArray" + }, + "tool_choice": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" + }, + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" + } + ] + }, + "prompt": { + "$ref": "#/components/schemas/OpenAI.Prompt" + }, + "truncation": { + "type": "string", + "enum": [ + "auto", + "disabled" + ], + "nullable": true, + "default": "disabled" + }, + "input": { + "$ref": "#/components/schemas/OpenAI.InputParam" + }, + "include": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "nullable": true + }, + "parallel_tool_calls": { + "type": "boolean", + "nullable": true, + "default": true + }, + "store": { + "type": "boolean", + "nullable": true, + "default": true + }, + "instructions": { + "type": "string", + "nullable": true + }, + "stream": { + "type": "boolean", + "nullable": true + }, + "stream_options": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" + } + ], + "nullable": true + }, + "conversation": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ConversationParam" + } + ], + "nullable": true + }, + "context_management": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ContextManagementParam" + }, + "nullable": true, + "description": "Context management configuration for this request." + }, + "agent": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "(Deprecated) Use agent_reference instead.\nThe agent to use for generating the response." + }, + "agent_session_id": { + "type": "string", + "description": "Optional session identifier for sandbox affinity. Currently only relevant for hosted agents.\nWhen provided, the request is routed to the same sandbox. When omitted, auto-derived from\nconversation_id/prev_response_id or a new UUID is generated." + }, + "agent_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "The agent to use for generating the response." + }, + "structured_inputs": { + "type": "object", + "additionalProperties": {}, + "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." + } + } + }, + { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true + }, + "top_logprobs": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "temperature": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "top_p": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "user": { + "type": "string", + "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", + "deprecated": true + }, + "safety_identifier": { + "type": "string", + "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." + }, + "prompt_cache_key": { + "type": "string", + "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." + }, + "service_tier": { + "$ref": "#/components/schemas/OpenAI.ServiceTier" + }, + "prompt_cache_retention": { + "type": "string", + "enum": [ + "in-memory", + "24h" + ], + "nullable": true + }, + "previous_response_id": { + "type": "string", + "nullable": true + }, + "model": { + "type": "string", + "description": "The model deployment to use for the creation of this response." + }, + "reasoning": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Reasoning" + } + ], + "nullable": true + }, + "background": { + "type": "boolean", + "nullable": true + }, + "max_output_tokens": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "max_tool_calls": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "text": { + "$ref": "#/components/schemas/OpenAI.ResponseTextParam" + }, + "tools": { + "$ref": "#/components/schemas/OpenAI.ToolsArray" + }, + "tool_choice": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" + }, + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" + } + ] + }, + "prompt": { + "$ref": "#/components/schemas/OpenAI.Prompt" + }, + "truncation": { + "type": "string", + "enum": [ + "auto", + "disabled" + ], + "nullable": true, + "default": "disabled" + }, + "input": { + "$ref": "#/components/schemas/OpenAI.InputParam" + }, + "include": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "nullable": true + }, + "parallel_tool_calls": { + "type": "boolean", + "nullable": true, + "default": true + }, + "store": { + "type": "boolean", + "nullable": true, + "default": true + }, + "instructions": { + "type": "string", + "nullable": true + }, + "stream": { + "type": "boolean", + "nullable": true + }, + "stream_options": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" + } + ], + "nullable": true + }, + "conversation": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ConversationParam" + } + ], + "nullable": true + }, + "context_management": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ContextManagementParam" + }, + "nullable": true, + "description": "Context management configuration for this request." + }, + "agent": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "(Deprecated) Use agent_reference instead.\nThe agent to use for generating the response." + }, + "agent_session_id": { + "type": "string", + "description": "Optional session identifier for sandbox affinity. Currently only relevant for hosted agents.\nWhen provided, the request is routed to the same sandbox. When omitted, auto-derived from\nconversation_id/prev_response_id or a new UUID is generated." + }, + "agent_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "The agent to use for generating the response." + }, + "structured_inputs": { + "type": "object", + "additionalProperties": {}, + "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." + } + } + } + ] } } } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/runs/{runId}/metrics": { + } + }, "get": { - "operationId": "TrainingJobRunMetrics_listRunMetrics", - "description": "List metrics emitted by a specific training job run.", + "operationId": "listResponses", + "description": "Returns the list of all responses.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "limit", "in": "query", "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobMetric" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}": { - "get": { - "operationId": "TrainingJobRunMetrics_getRunMetric", - "description": "Get the full history for a metric from a specific training job run.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false }, { - "name": "startTimeUtc", + "name": "order", "in": "query", "required": false, - "description": "Start of the metric time range.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "string", - "format": "date-time" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, { - "name": "endTimeUtc", + "name": "after", "in": "query", "required": false, - "description": "End of the metric time range.", + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { - "type": "string", - "format": "date-time" + "type": "string" }, "explode": false }, { - "name": "minStep", + "name": "before", "in": "query", "required": false, - "description": "Minimum metric step to include.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "maxStep", + "name": "agent_name", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "agent_id", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, { - "name": "api-version", + "name": "conversation_id", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Filter by conversation ID. If provided, only responses associated with the specified conversation will be returned.", "schema": { "type": "string" }, @@ -16376,7 +9529,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Response" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -16393,103 +9572,90 @@ } }, "tags": [ - "TrainingJobs" + "Responses" ] } }, - "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:aggregates": { - "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricAggregates", - "description": "Get aggregate metric values from a specific training job run.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] + "/openai/v1/responses/compact": { + "post": { + "operationId": "compactResponseConversation", + "description": "Produces a compaction of a responses conversation.", + "parameters": [], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CompactResource" + } + } } }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" + } + }, + "tags": [ + "Responses" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CompactResponseMethodPublicBody" + } } - }, + } + } + } + }, + "/openai/v1/responses/{response_id}": { + "get": { + "operationId": "getResponse_getResponseStream", + "parameters": [ { - "name": "metricName", + "name": "response_id", "in": "path", "required": true, - "description": "The metric name.", "schema": { "type": "string" } }, { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", + "name": "include[]", "in": "query", "required": false, - "description": "Minimum metric step to include.", "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "default": [] + } }, { - "name": "maxStep", + "name": "stream", "in": "query", "required": false, - "description": "Maximum metric step to include.", "schema": { - "type": "integer", - "format": "int64" + "type": "boolean", + "default": false }, "explode": false }, { - "name": "limit", + "name": "starting_after", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", "schema": { "type": "integer", "format": "int32" @@ -16497,23 +9663,30 @@ "explode": false }, { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "name": "accept", + "in": "header", + "required": false, "schema": { - "type": "string" - }, - "explode": false + "type": "string", + "enum": [ + "text/event-stream" + ] + } } ], + "description": "Retrieves a model response with the given ID. Retrieves a model response with the given ID (streaming response).", "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" + "$ref": "#/components/schemas/OpenAI.Response" + } + }, + "text/event-stream": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" } } } @@ -16530,118 +9703,21 @@ } }, "tags": [ - "TrainingJobs" + "Responses" ] - } - }, - "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:sample": { - "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricSample", - "description": "Get one sampled value or window from a specific training job run.", + }, + "delete": { + "operationId": "deleteResponse", + "description": "Deletes a model response.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", + "name": "response_id", "in": "path", "required": true, - "description": "The metric name.", + "description": "The ID of the response to delete.", "schema": { "type": "string" } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { @@ -16650,7 +9726,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/DeleteResponseResult" } } } @@ -16667,118 +9743,23 @@ } }, "tags": [ - "TrainingJobs" + "Responses" ] } }, - "/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:samples": { - "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricSamples", - "description": "Get sampled metric values from a specific training job run.", + "/openai/v1/responses/{response_id}/cancel": { + "post": { + "operationId": "cancelResponse", + "description": "Cancels a model response.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", + "name": "response_id", "in": "path", "required": true, - "description": "The metric name.", + "description": "The ID of the response to cancel.", "schema": { "type": "string" } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { @@ -16787,7 +9768,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/OpenAI.Response" } } } @@ -16804,50 +9785,60 @@ } }, "tags": [ - "TrainingJobs" + "Responses" ] } }, - "/trainingJobs/{jobName}/runs/{runId}/metrics:lastValues": { + "/openai/v1/responses/{response_id}/input_items": { "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricLastValues", - "description": "Get latest metric values for a specific training job run.", + "operationId": "listInputItems", + "description": "Returns a list of input items for a given response.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", + "name": "response_id", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] + "type": "string" } }, { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false }, { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "api-version", + "name": "before", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, @@ -16860,7 +9851,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ItemResource" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -16877,15 +9894,18 @@ } }, "tags": [ - "TrainingJobs" + "Responses" ] } }, - "/trainingJobs/{jobName}/runs/{runId}/outputs": { + "/redTeams/runs": { "get": { - "operationId": "TrainingJobRunOutputs_listRunOutputs", - "description": "List outputs produced by a specific training job run.", + "operationId": "RedTeams_list", + "description": "List a redteam by name.", "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, { "name": "Foundry-Features", "in": "header", @@ -16894,37 +9914,9 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "RedTeams=V1Preview" ] } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { @@ -16933,80 +9925,64 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" + "$ref": "#/components/schemas/PagedRedTeam" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "TrainingJobs" + "Redteams" ] } }, - "/trainingJobs/{jobName}/runs/{runId}/outputs/{outputName}": { + "/redTeams/runs/{name}": { "get": { - "operationId": "TrainingJobRunOutputs_getRunOutput", - "description": "Get one output produced by a specific training job run.", + "operationId": "RedTeams_get", + "description": "Get a redteam by name.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "outputName", + "name": "name", "in": "path", "required": true, - "description": "The output name.", + "description": "Identifier of the red team run.", "schema": { "type": "string" } }, { - "name": "api-version", - "in": "query", + "name": "Foundry-Features", + "in": "header", "required": true, - "description": "The API version to use for this operation.", + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "string" - }, - "explode": false + "type": "string", + "enum": [ + "RedTeams=V1Preview" + ] + } } ], "responses": { @@ -17015,31 +9991,40 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/RedTeam" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "TrainingJobs" + "Redteams" ] } }, - "/trainingJobs/{jobName}/services": { - "get": { - "operationId": "TrainingJobs_showServices", - "description": "List service endpoints for the current view of a training job.", + "/redTeams/runs:run": { + "post": { + "operationId": "RedTeams_create", + "description": "Creates a redteam run.", "parameters": [ { "name": "Foundry-Features", @@ -17049,30 +10034,10 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "RedTeams=V1Preview" ] } }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "nodeId", - "in": "query", - "required": false, - "description": "Node identifier whose service endpoints should be returned. If omitted, leader-node services are returned.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -17085,12 +10050,12 @@ } ], "responses": { - "200": { - "description": "The request has succeeded.", + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrainingJobServiceCollection" + "$ref": "#/components/schemas/RedTeam" } } } @@ -17107,26 +10072,48 @@ } }, "tags": [ - "TrainingJobs" - ] + "Redteams" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RedTeam" + } + } + }, + "description": "Redteam to be run" + } } }, - "/trainingJobs/{name}": { + "/schedules": { "get": { - "operationId": "TrainingJobs_get", - "description": "Get a training job by name.", + "operationId": "Schedules_list", + "description": "List all schedules.", "parameters": [ { "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the training job. This is case-sensitive.", + "name": "type", + "in": "query", + "required": false, + "description": "Filter by the type of schedule.", "schema": { - "type": "string" - } + "$ref": "#/components/schemas/ScheduleTaskType" + }, + "explode": false + }, + { + "name": "enabled", + "in": "query", + "required": false, + "description": "Filter by the enabled status.", + "schema": { + "type": "boolean" + }, + "explode": false }, { "name": "Foundry-Features", @@ -17136,7 +10123,7 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "Schedules=V1Preview" ] } } @@ -17147,7 +10134,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/PagedSchedule" } } } @@ -17173,21 +10160,23 @@ } }, "tags": [ - "TrainingJobs" + "Schedules" ] - }, + } + }, + "/schedules/{id}": { "delete": { - "operationId": "TrainingJobs_beginDelete", - "description": "Delete a training job by name. Returns 202 Accepted with Location and Operation-Location headers to poll for completion, or 204 if the job does not exist.", + "operationId": "Schedules_delete", + "description": "Delete a schedule.", "parameters": [ { "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "name", + "name": "id", "in": "path", "required": true, - "description": "The name of the training job. This is case-sensitive.", + "description": "Identifier of the schedule.", "schema": { "type": "string" } @@ -17200,39 +10189,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "Schedules=V1Preview" ] } } ], "responses": { - "202": { - "description": "Response returned when a job delete operation is accepted asynchronously.", - "headers": { - "Location": { - "required": true, - "description": "URL to poll for the final result of the delete operation.", - "schema": { - "type": "string" - } - }, - "Operation-Location": { - "required": false, - "description": "URL to poll for the status of the delete operation.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "required": false, - "description": "Suggested delay in seconds before polling.", - "schema": { - "type": "integer", - "format": "int32" - } - } - } - }, "204": { "description": "There is no content to send for this request, but the headers may be useful." }, @@ -17257,23 +10219,21 @@ } }, "tags": [ - "TrainingJobs" + "Schedules" ] - } - }, - "/trainingJobs/{name}:cancel": { - "post": { - "operationId": "TrainingJobs_beginCancel", - "description": "Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with Location and Operation-Location headers to poll for completion.", + }, + "get": { + "operationId": "Schedules_get", + "description": "Get a schedule by id.", "parameters": [ { "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "name", + "name": "id", "in": "path", "required": true, - "description": "The name of the training job. This is case-sensitive.", + "description": "Identifier of the schedule.", "schema": { "type": "string" } @@ -17286,38 +10246,18 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "Schedules=V1Preview" ] } } ], "responses": { "200": { - "description": "The request has succeeded." - }, - "202": { - "description": "Response returned when a job cancel operation is accepted asynchronously.", - "headers": { - "Location": { - "required": true, - "description": "URL to poll for the final result of the cancel operation.", - "schema": { - "type": "string" - } - }, - "Operation-Location": { - "required": false, - "description": "URL to poll for the status of the cancel operation.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "required": false, - "description": "Suggested delay in seconds before polling.", + "description": "The request has succeeded.", + "content": { + "application/json": { "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/Schedule" } } } @@ -17343,1513 +10283,1350 @@ } }, "tags": [ - "TrainingJobs" + "Schedules" ] - } - } - }, - "security": [ - { - "ApiKeyAuth": [] - }, - { - "OAuth2Auth": [ - "https://ai.azure.com/.default" - ] - } - ], - "components": { - "parameters": { - "Azure.Core.ClientRequestIdHeader": { - "name": "x-ms-client-request-id", - "in": "header", - "required": false, - "description": "An opaque, globally-unique, client-generated string identifier for the request.", - "schema": { - "$ref": "#/components/schemas/Azure.Core.uuid" - } }, - "Azure.Core.Foundations.ApiVersionParameter": { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string", - "minLength": 1 - }, - "explode": false - } - }, - "schemas": { - "A2APreviewTool": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "a2a_preview" - ], - "description": "The type of the tool. Always `\"a2a_preview`." - }, - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "base_url": { - "type": "string", - "format": "uri", - "description": "Base URL of the agent." - }, - "agent_card_path": { - "type": "string", - "description": "The path to the agent card relative to the `base_url`.\nIf not provided, defaults to `/.well-known/agent-card.json`" - }, - "project_connection_id": { - "type": "string", - "description": "The connection ID in the project for the A2A server.\nThe connection stores authentication and other connection details needed to connect to the A2A server." - } - }, - "allOf": [ + "put": { + "operationId": "Schedules_createOrUpdate", + "description": "Create or update operation template.", + "parameters": [ { - "$ref": "#/components/schemas/OpenAI.Tool" - } - ], - "description": "An agent implementing the A2A protocol." - }, - "A2AToolCall": { - "type": "object", - "required": [ - "type", - "call_id", - "name", - "arguments", - "status" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "a2a_preview_call" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "name": { - "type": "string", - "description": "The name of the A2A agent card being called." - }, - "arguments": { - "type": "string", - "description": "A JSON string of the arguments to pass to the tool." + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } - ], - "description": "The status of the tool call." - } - }, - "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" - } - ], - "description": "An A2A (Agent-to-Agent) tool call." - }, - "A2AToolCallOutput": { - "type": "object", - "required": [ - "type", - "call_id", - "name", - "status" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "a2a_preview_call_output" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "name": { - "type": "string", - "description": "The name of the A2A agent card that was called." - }, - "output": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallOutputContent" - } - ], - "description": "The output from the A2A tool call." + "name": "id", + "in": "path", + "required": true, + "description": "Identifier of the schedule.", + "schema": { + "type": "string" + } }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } - ], - "description": "The status of the tool call." - } - }, - "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } } ], - "description": "The output of an A2A (Agent-to-Agent) tool call." - }, - "AISearchIndexResource": { - "type": "object", - "properties": { - "project_connection_id": { - "type": "string", - "description": "An index connection ID in an IndexResource attached to this agent." - }, - "index_name": { - "type": "string", - "description": "The name of an index in an IndexResource attached to this agent." - }, - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "query_type": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureAISearchQueryType" + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Schedule" + } } - ], - "description": "Type of query in an AIIndexResource attached to this agent." - }, - "top_k": { - "type": "integer", - "format": "int32", - "description": "Number of documents to retrieve from search and present to the model." - }, - "filter": { - "type": "string", - "description": "filter string for search resource. [Learn more here](https://learn.microsoft.com/azure/search/search-filters)." - }, - "index_asset_id": { - "type": "string", - "description": "Index asset id for search resource." - } - }, - "description": "A AI Search Index resource." - }, - "AgentBlueprintReference": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "$ref": "#/components/schemas/AgentBlueprintReferenceType" - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "ManagedAgentIdentityBlueprint": "#/components/schemas/ManagedAgentIdentityBlueprintReference" - } - }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "AgentBlueprintReferenceType": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "ManagedAgentIdentityBlueprint" - ] - } - ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "AgentCard": { - "type": "object", - "required": [ - "version", - "skills" - ], - "properties": { - "version": { - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "The version of the agent card." - }, - "description": { - "type": "string", - "maxLength": 2048, - "description": "The description of the agent card." - }, - "skills": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AgentCardSkill" - }, - "maxItems": 16, - "description": "The set of skills that an agent can perform." - } - }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "AgentCardSkill": { - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "type": "string", - "minLength": 1, - "maxLength": 64, - "description": "a unique identifier for the skill" - }, - "name": { - "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "The name of the skill" - }, - "description": { - "type": "string", - "maxLength": 2048, - "description": "A description of the skill" - }, - "tags": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AgentCardSkillTag" - }, - "maxItems": 5, - "description": "set of tagwords describing classes of capabilities for the skill" + } }, - "examples": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AgentCardSkillExample" + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Schedule" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } }, - "maxItems": 5, - "description": "A list of example scenarios that the skill can perform." + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "AgentCardSkillExample": { - "type": "string", - "maxLength": 1024, - "description": "A skill example string with a maximum length of 1024 characters.", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "AgentCardSkillTag": { - "type": "string", - "maxLength": 32, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] + "tags": [ + "Schedules" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Schedule" + } + } + }, + "description": "The resource instance." } - }, - "AgentCardUpdate": { - "type": "object", - "properties": { - "version": { - "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "The version of the agent card." + } + }, + "/schedules/{id}/runs": { + "get": { + "operationId": "Schedules_listRuns", + "description": "List all schedule runs.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, - "description": { - "type": "string", - "maxLength": 2048, - "description": "The description of the agent card." + { + "name": "id", + "in": "path", + "required": true, + "description": "Identifier of the schedule.", + "schema": { + "type": "string" + } }, - "skills": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AgentCardSkill" + { + "name": "type", + "in": "query", + "required": false, + "description": "Filter by the type of schedule.", + "schema": { + "$ref": "#/components/schemas/ScheduleTaskType" }, - "maxItems": 16, - "description": "The set of skills that an agent can perform." + "explode": false + }, + { + "name": "enabled", + "in": "query", + "required": false, + "description": "Filter by the enabled status.", + "schema": { + "type": "boolean" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } } - }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "AgentClusterInsightRequest": { - "type": "object", - "required": [ - "type", - "agentName" ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AgentClusterInsight" - ], - "description": "The type of request." - }, - "agentName": { - "type": "string", - "description": "Identifier for the agent." + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedScheduleRun" + } + } + } }, - "modelConfiguration": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightModelConfiguration" + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } } - ], - "description": "Configuration of the model used in the insight generation." + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } } }, - "allOf": [ + "tags": [ + "Schedules" + ] + } + }, + "/schedules/{schedule_id}/runs/{run_id}": { + "get": { + "operationId": "Schedules_getRun", + "description": "Get a schedule run by id.", + "parameters": [ { - "$ref": "#/components/schemas/InsightRequest" + "name": "schedule_id", + "in": "path", + "required": true, + "description": "The unique identifier of the schedule.", + "schema": { + "type": "string" + } + }, + { + "name": "run_id", + "in": "path", + "required": true, + "description": "The unique identifier of the schedule run.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], - "description": "Insights on set of Agent Evaluation Results" - }, - "AgentClusterInsightResult": { - "type": "object", - "required": [ - "type", - "clusterInsight" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AgentClusterInsight" - ], - "description": "The type of insights result." + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScheduleRun" + } + } + } }, - "clusterInsight": { - "$ref": "#/components/schemas/ClusterInsightResult" + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } } }, - "allOf": [ + "tags": [ + "Schedules" + ] + } + }, + "/skills": { + "post": { + "operationId": "Skills_createSkill", + "description": "Creates a skill.", + "parameters": [ { - "$ref": "#/components/schemas/InsightResult" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], - "description": "Insights from the agent cluster analysis." - }, - "AgentContainerObject": { - "type": "object", - "required": [ - "object", - "status", - "created_at", - "updated_at" - ], - "properties": { - "object": { - "type": "string", - "enum": [ - "agent.container" - ], - "description": "The object type, which is always 'agent.container'.", - "readOnly": true - }, - "id": { - "type": "string", - "description": "The identifier of the container.", - "readOnly": true - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentContainerStatus" + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillObject" + } } - ], - "description": "The status of the container of a specific version of an agent.", - "readOnly": true - }, - "max_replicas": { - "type": "integer", - "format": "int32", - "description": "The maximum number of replicas for the container. Default is 1.", - "example": 10 - }, - "min_replicas": { - "type": "integer", - "format": "int32", - "description": "The minimum number of replicas for the container. Default is 1.", - "example": 1 - }, - "error_message": { - "type": "string", - "description": "The error message if the container failed to operate, if any.", - "readOnly": true - }, - "created_at": { - "type": "string", - "format": "date-time", - "description": "The creation time of the container.", - "readOnly": true - }, - "updated_at": { - "type": "string", - "format": "date-time", - "description": "The last update time of the container.", - "readOnly": true + } }, - "container": { - "allOf": [ - { - "$ref": "#/components/schemas/ContainerDetails" + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } } - ], - "description": "The detailed container information.", - "readOnly": true + } } }, - "description": "The details of the container of a specific version of an agent.", - "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" - ] - } - }, - "AgentContainerOperationError": { - "type": "object", - "required": [ - "code", - "type", - "message" + "tags": [ + "Skills" ], - "properties": { - "code": { - "type": "string", - "description": "The error code of the container operation." - }, - "type": { - "type": "string", - "description": "The error type of the container operation." - }, - "message": { - "type": "string", - "description": "The error message of the container operation." + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 63, + "description": "The unique name of the skill." + }, + "description": { + "type": "string", + "maxLength": 1024, + "description": "A human-readable description of the skill." + }, + "instructions": { + "type": "string", + "maxLength": 102400, + "description": "Instructions that define the behavior of the skill." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of key-value pairs associated with the skill." + } + }, + "required": [ + "name" + ] + } + } } }, - "description": "The error details of the container operation, if any.", "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" + "conditional_previews": [ + "Skills=V1Preview" ] } }, - "AgentContainerOperationObject": { - "type": "object", - "required": [ - "id", - "agent_id", - "agent_version_id", - "status" - ], - "properties": { - "id": { - "type": "string", - "description": "The ID of the container operation. This id is a globally unique identifier." + "get": { + "operationId": "Skills_listSkills", + "description": "Returns the list of all skills.", + "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false }, - "agent_id": { - "type": "string", - "description": "The ID of the agent." + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false }, - "agent_version_id": { - "type": "string", - "description": "The ID of the agent version." + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentContainerOperationStatus" - } - ], - "description": "The status of the container operation." + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false }, - "error": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentContainerOperationError" + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SkillObject" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } } - ], - "description": "The error of the container operation, if any." + } }, - "container": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentContainerObject" + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } } - ], - "description": "The container of the specific version of an agent." + } } }, - "description": "The container operation for a specific version of an agent.", - "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" - ] - } - }, - "AgentContainerOperationStatus": { - "type": "string", - "enum": [ - "NotStarted", - "InProgress", - "Succeeded", - "Failed" + "tags": [ + "Skills" ], - "description": "Status of the container operation for a specific version of an agent.", "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" + "conditional_previews": [ + "Skills=V1Preview" ] } - }, - "AgentContainerStatus": { - "anyOf": [ + } + }, + "/skills/{skill_name}": { + "get": { + "operationId": "Skills_getSkill", + "description": "Retrieves a skill.", + "parameters": [ { - "type": "string" + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", + "schema": { + "type": "string" + } }, { - "type": "string", - "enum": [ - "Starting", - "Running", - "Stopping", - "Stopped", - "Failed", - "Deleting", - "Deleted", - "Updating" - ] + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], - "description": "Status of the container of a specific version of an agent.", - "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" - ] - } - }, - "AgentDefinition": { - "type": "object", - "required": [ - "kind" - ], - "properties": { - "kind": { - "$ref": "#/components/schemas/AgentKind" + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillObject" + } + } + } }, - "rai_config": { - "allOf": [ - { - "$ref": "#/components/schemas/RaiConfig" + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } } - ], - "description": "Configuration for Responsible AI (RAI) content filtering and safety features." - } - }, - "discriminator": { - "propertyName": "kind", - "mapping": { - "prompt": "#/components/schemas/PromptAgentDefinition", - "workflow": "#/components/schemas/WorkflowAgentDefinition", - "hosted": "#/components/schemas/HostedAgentDefinition", - "container_app": "#/components/schemas/ContainerAppAgentDefinition" + } } }, + "tags": [ + "Skills" + ], "x-ms-foundry-meta": { "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" + "Skills=V1Preview" ] } }, - "AgentDefinitionOptInKeys": { - "type": "string", - "enum": [ - "HostedAgents=V1Preview", - "WorkflowAgents=V1Preview", - "ContainerAgents=V1Preview" - ], - "description": "Opt-in keys for defining preview Hosted or Workflow Agents." - }, - "AgentEndpoint": { - "type": "object", - "properties": { - "version_selector": { - "allOf": [ - { - "$ref": "#/components/schemas/VersionSelector" - } - ], - "description": "The version selector of the agent endpoint determines how traffic is routed to different versions of the agent." + "post": { + "operationId": "Skills_updateSkill", + "description": "Updates an existing skill.", + "parameters": [ + { + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", + "schema": { + "type": "string" + } }, - "protocols": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AgentEndpointProtocol" - }, - "description": "The protocols that the agent supports" + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } }, - "authorization_schemes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" }, - "description": "The authorization schemes supported by the agent endpoint" + "explode": false } - }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "AgentEndpointAuthorizationScheme": { - "type": "object", - "required": [ - "type" ], - "properties": { - "type": { - "$ref": "#/components/schemas/AgentEndpointAuthorizationSchemeType" + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } } }, - "discriminator": { - "propertyName": "type", - "mapping": { - "Entra": "#/components/schemas/EntraAuthorizationScheme", - "BotService": "#/components/schemas/BotServiceAuthorizationScheme", - "BotServiceRbac": "#/components/schemas/BotServiceRbacAuthorizationScheme" + "tags": [ + "Skills" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 1024, + "description": "A human-readable description of the skill." + }, + "instructions": { + "type": "string", + "maxLength": 102400, + "description": "Instructions that define the behavior of the skill." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of key-value pairs associated with the skill." + } + } + } + } } }, "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" + "conditional_previews": [ + "Skills=V1Preview" ] } }, - "AgentEndpointAuthorizationSchemeType": { - "anyOf": [ + "delete": { + "operationId": "Skills_deleteSkill", + "description": "Deletes a skill.", + "parameters": [ { - "type": "string" + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", + "schema": { + "type": "string" + } }, { - "type": "string", - "enum": [ - "Entra", - "BotService", - "BotServiceRbac" - ] - } - ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "AgentEndpointProtocol": { - "anyOf": [ - { - "type": "string" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } }, { - "type": "string", - "enum": [ - "activity", - "responses", - "a2a", - "invocations" - ] + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } - ] - }, - "AgentEndpointUpdate": { - "type": "object", - "properties": { - "version_selector": { - "allOf": [ - { - "$ref": "#/components/schemas/VersionSelectorUpdate" + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteSkillResponse" + } } - ], - "description": "The version selector of the agent endpoint determines how traffic is routed to different versions of the agent." - }, - "protocols": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AgentEndpointProtocol" - }, - "description": "The protocols that the agent supports" + } }, - "authorization_schemes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" - }, - "description": "The authorization schemes supported by the agent endpoint" + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } } }, + "tags": [ + "Skills" + ], "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" + "conditional_previews": [ + "Skills=V1Preview" ] } - }, - "AgentEvaluation": { - "type": "object", - "required": [ - "id", - "status" - ], - "properties": { - "id": { - "type": "string", - "description": "Identifier of the agent evaluation run." - }, - "status": { - "type": "string", - "description": "Status of the agent evaluation. Options: Running, Completed, Failed." - }, - "error": { - "type": "string", - "description": "The reason of the request failure for the long running process, if applicable." - }, - "result": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AgentEvaluationResult" - }, - "description": "The agent evaluation result." - } - }, - "description": "Evaluation response for agent evaluation run." - }, - "AgentEvaluationRedactionConfiguration": { - "type": "object", - "properties": { - "redactScoreProperties": { - "type": "boolean", - "description": "Redact score properties. If not specified, the default is to redact in production." - } - }, - "description": "The redaction configuration will allow the user to control what is redacted." - }, - "AgentEvaluationRequest": { - "type": "object", - "required": [ - "runId", - "evaluators", - "appInsightsConnectionString" - ], - "properties": { - "runId": { - "type": "string", - "description": "Identifier of the agent run." + } + }, + "/skills/{skill_name}:download": { + "get": { + "operationId": "Skills_downloadSkill", + "description": "Downloads a skill package.", + "parameters": [ + { + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", + "schema": { + "type": "string" + } }, - "threadId": { - "type": "string", - "description": "Identifier of the agent thread. This field is mandatory currently, but it will be optional in the future." + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } }, - "evaluators": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/EvaluatorConfiguration" + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" }, - "description": "Evaluators to be used for the evaluation." - }, - "samplingConfiguration": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentEvaluationSamplingConfiguration" + "explode": false + } + ], + "responses": { + "200": { + "description": "The response body for downloading a skill package.", + "content": { + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" + } } - ], - "description": "Sampling configuration for the evaluation." + } }, - "redactionConfiguration": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentEvaluationRedactionConfiguration" + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } } - ], - "description": "Redaction configuration for the evaluation." - }, - "appInsightsConnectionString": { - "type": "string", - "description": "Pass the AppInsights connection string to the agent evaluation for the evaluation results and the errors logs." + } } }, - "description": "Evaluation request for agent run." - }, - "AgentEvaluationResult": { - "type": "object", - "required": [ - "evaluator", - "evaluatorId", - "score", - "status", - "runId" + "tags": [ + "Skills" ], - "properties": { - "evaluator": { - "type": "string", - "description": "Evaluator's name. This is the name of the evaluator that was used to evaluate the agent's completion." - }, - "evaluatorId": { - "type": "string", - "description": "Identifier of the evaluator." - }, - "score": { - "type": "number", - "format": "float", - "description": "Score of the given evaluator. No restriction on range." - }, - "status": { - "type": "string", - "description": "Status of the evaluator result. Options: Running, Completed, Failed, NotApplicable." - }, - "reason": { - "type": "string", - "description": "Reasoning for the evaluation result." - }, - "version": { - "type": "string", - "description": "Version of the evaluator that was used to evaluate the agent's completion." - }, - "threadId": { - "type": "string", - "description": "The unique identifier of the thread." - }, - "runId": { - "type": "string", - "description": "The unique identifier of the run." - }, - "error": { - "type": "string", - "description": "A string explaining why there was an error, if applicable." + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + } + }, + "/skills:import": { + "post": { + "operationId": "Skills_createSkillFromPackage", + "description": "Creates a skill from a GZip package.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } }, - "additionalDetails": { - "type": "object", - "additionalProperties": { + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { "type": "string" }, - "description": "Additional properties relevant to the evaluator. These will differ between evaluators." + "explode": false } - }, - "description": "Result for the agent evaluation evaluator run." - }, - "AgentEvaluationSamplingConfiguration": { - "type": "object", - "required": [ - "name", - "samplingPercent", - "maxRequestRate" ], - "properties": { - "name": { - "type": "string", - "description": "Name of the sampling strategy." - }, - "samplingPercent": { - "type": "number", - "format": "float", - "description": "Percentage of sampling per hour (0-100)." + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillObject" + } + } + } }, - "maxRequestRate": { - "type": "number", - "format": "float", - "description": "Maximum request rate per hour (0 to 1000)." + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } } }, - "description": "Definition for sampling strategy." - }, - "AgentId": { - "type": "object", - "required": [ - "type", - "name", - "version" + "tags": [ + "Skills" ], - "properties": { - "type": { - "type": "string", - "enum": [ - "agent_id" - ] + "requestBody": { + "required": true, + "content": { + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" + } + } }, - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the agent." + "description": "The GZip package used to create the skill." + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + } + }, + "/toolsets": { + "post": { + "operationId": "createToolset", + "description": "Create a toolset.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } }, - "version": { - "type": "string", - "description": "The version identifier of the agent." + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } - } - }, - "AgentIdentity": { - "type": "object", - "required": [ - "principal_id", - "client_id" ], - "properties": { - "principal_id": { - "type": "string", - "description": "The principal ID of the agent instance" + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToolsetObject" + } + } + } }, - "client_id": { - "type": "string", - "description": "The client ID of the agent instance. Also referred to as the instance ID" + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Toolsets" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the toolset." + }, + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the toolset." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the toolset." + }, + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" + }, + "description": "The list of tools to include in the toolset." + } + }, + "required": [ + "name", + "tools" + ] + } + } } }, "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" + "conditional_previews": [ + "Toolsets=V1Preview" ] } }, - "AgentKind": { - "anyOf": [ + "get": { + "operationId": "listToolsets", + "description": "List all toolsets.", + "parameters": [ { - "type": "string" + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false }, { - "type": "string", - "enum": [ - "prompt", - "hosted", - "workflow", - "container_app" - ] - } - ] - }, - "AgentObject": { - "type": "object", - "required": [ - "object", - "id", - "name", - "versions" - ], - "properties": { - "object": { - "type": "string", - "enum": [ - "agent" - ], - "description": "The object type, which is always 'agent'." - }, - "id": { - "type": "string", - "description": "The unique identifier of the agent." - }, - "name": { - "type": "string", - "maxLength": 63, - "description": "The name of the agent." - }, - "versions": { - "type": "object", - "properties": { - "latest": { - "$ref": "#/components/schemas/AgentVersionObject" - } + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" }, - "required": [ - "latest" - ], - "description": "The latest version of the agent." + "explode": false }, - "agent_endpoint": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentEndpoint" - } - ], - "description": "The endpoint configuration for the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false }, - "instance_identity": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentIdentity" - } - ], - "description": "The instance identity of the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false }, - "blueprint": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentIdentity" - } - ], - "description": "The blueprint for the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" ] } }, - "blueprint_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentBlueprintReference" + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolsetObject" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } } - ], - "description": "The blueprint for the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] } }, - "agent_card": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentCard" + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } } - ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] } } + }, + "tags": [ + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] } - }, - "AgentProtocol": { - "anyOf": [ + } + }, + "/toolsets/{tool_set_name}": { + "post": { + "operationId": "updateToolset", + "description": "Update a toolset.", + "parameters": [ { - "type": "string" + "name": "tool_set_name", + "in": "path", + "required": true, + "description": "The name of the toolset to update.", + "schema": { + "type": "string" + } }, { - "type": "string", - "enum": [ - "activity_protocol", - "responses", - "invocations" - ] - } - ] - }, - "AgentReference": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "agent_reference" - ] - }, - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the agent." + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } }, - "version": { - "type": "string", - "description": "The version identifier of the agent." + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } - } - }, - "AgentSessionResource": { - "type": "object", - "required": [ - "agent_session_id", - "version_indicator", - "status", - "created_at", - "last_accessed_at", - "expires_at" ], - "properties": { - "agent_session_id": { - "type": "string", - "description": "The session identifier." - }, - "version_indicator": { - "allOf": [ - { - "$ref": "#/components/schemas/VersionIndicator" + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToolsetObject" + } } - ], - "description": "The version indicator determining which agent version backs this session." + } }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentSessionStatus" + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } } - ], - "description": "The current status of the session." - }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "The Unix timestamp (in seconds) when the session was created.", - "readOnly": true - }, - "last_accessed_at": { - "type": "integer", - "format": "unixtime", - "description": "The Unix timestamp (in seconds) when the session was last accessed.", - "readOnly": true - }, - "expires_at": { - "type": "integer", - "format": "unixtime", - "description": "The Unix timestamp (in seconds) when the session expires (rolling, 30 days from last activity).", - "readOnly": true + } + } + }, + "tags": [ + "Toolsets" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the toolset." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the toolset." + }, + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" + }, + "description": "The list of tools to include in the toolset." + } + }, + "required": [ + "tools" + ] + } + } } }, - "description": "An agent session providing a long-lived compute sandbox for hosted agent invocations.", "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" + "conditional_previews": [ + "Toolsets=V1Preview" ] } }, - "AgentSessionStatus": { - "anyOf": [ + "get": { + "operationId": "getToolset", + "description": "Retrieve a toolset.", + "parameters": [ { - "type": "string" + "name": "tool_set_name", + "in": "path", + "required": true, + "description": "The name of the toolset to retrieve.", + "schema": { + "type": "string" + } }, { - "type": "string", - "enum": [ - "creating", - "active", - "idle", - "updating", - "failed", - "deleting", - "deleted", - "expired" - ] - } - ], - "description": "The status of an agent session.", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "AgentTaxonomyInput": { - "type": "object", - "required": [ - "type", - "target", - "riskCategories" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "agent" - ], - "description": "Input type of the evaluation taxonomy." - }, - "target": { - "allOf": [ - { - "$ref": "#/components/schemas/Target" - } - ], - "description": "Target configuration for the agent." + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } }, - "riskCategories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RiskCategory" - }, - "description": "List of risk categories to evaluate against." - } - }, - "allOf": [ { - "$ref": "#/components/schemas/EvaluationTaxonomyInput" + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], - "description": "Input configuration for the evaluation taxonomy when the input type is agent." - }, - "AgentTaxonomyInputUpdate": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "agent" - ], - "description": "Input type of the evaluation taxonomy." - }, - "target": { - "allOf": [ - { - "$ref": "#/components/schemas/TargetUpdate" + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToolsetObject" + } } - ], - "description": "Target configuration for the agent." + } }, - "riskCategories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RiskCategory" - }, - "description": "List of risk categories to evaluate against." + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } } }, - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationTaxonomyInputUpdate" - } + "tags": [ + "Toolsets" ], - "description": "Input configuration for the evaluation taxonomy when the input type is agent." + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } }, - "AgentVersionObject": { - "type": "object", - "required": [ - "metadata", - "object", - "id", - "name", - "version", - "created_at", - "definition", - "status" - ], - "properties": { - "metadata": { - "type": "object", - "additionalProperties": { + "delete": { + "operationId": "deleteToolset", + "description": "Delete a toolset.", + "parameters": [ + { + "name": "tool_set_name", + "in": "path", + "required": true, + "description": "The name of the toolset to delete.", + "schema": { "type": "string" - }, - "nullable": true, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" - }, - "object": { - "type": "string", - "enum": [ - "agent.version" - ], - "description": "The object type, which is always 'agent.version'." - }, - "id": { - "type": "string", - "description": "The unique identifier of the agent version." - }, - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the agent. Name can be used to retrieve/update/delete the agent." - }, - "version": { - "type": "string", - "description": "The version identifier of the agent. Agents are immutable and every update creates a new version while keeping the name same." - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." - }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "The Unix timestamp (seconds) when the agent was created." - }, - "definition": { - "$ref": "#/components/schemas/AgentDefinition" - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentVersionStatus" - } - ], - "description": "The provisioning status of the agent version. Defaults to 'active' for non-hosted agents. For hosted agents, reflects infrastructure readiness.", - "default": "active" - }, - "error": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Error" - } - ], - "description": "Error details if the agent version provisioning failed." - }, - "instance_identity": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentIdentity" - } - ], - "description": "The instance identity of the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - }, - "readOnly": true - }, - "blueprint": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentIdentity" - } - ], - "description": "The blueprint for the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - }, - "readOnly": true - }, - "blueprint_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentBlueprintReference" - } - ], - "description": "The blueprint for the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - }, - "readOnly": true + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } }, - "agent_guid": { - "type": "string", - "description": "The unique GUID identifier of the agent.", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - }, - "readOnly": true - } - } - }, - "AgentVersionStatus": { - "type": "string", - "enum": [ - "creating", - "active", - "failed", - "deleting", - "deleted" - ], - "description": "The provisioning status of an agent version." - }, - "AgenticIdentityPreviewCredentials": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AgenticIdentityToken_Preview" - ], - "description": "The credential type", - "readOnly": true - } - }, - "allOf": [ { - "$ref": "#/components/schemas/BaseCredentials" + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false } ], - "description": "Agentic identity credential definition" - }, - "ApiErrorResponse": { - "type": "object", - "required": [ - "error" - ], - "properties": { - "error": { - "$ref": "#/components/schemas/OpenAI.Error" + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteToolsetResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } } }, - "description": "Error response for API failures." + "tags": [ + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + } + } + }, + "security": [ + { + "ApiKeyAuth": [] + }, + { + "OAuth2Auth": [ + "https://ai.azure.com/.default" + ] + } + ], + "components": { + "parameters": { + "Azure.Core.ClientRequestIdHeader": { + "name": "x-ms-client-request-id", + "in": "header", + "required": false, + "description": "An opaque, globally-unique, client-generated string identifier for the request.", + "schema": { + "$ref": "#/components/schemas/Azure.Core.uuid" + } }, - "ApiKeyCredentials": { + "Azure.Core.Foundations.ApiVersionParameter": { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string", + "minLength": 1 + }, + "explode": false + } + }, + "schemas": { + "A2APreviewTool": { "type": "object", "required": [ "type" @@ -18858,1070 +11635,1197 @@ "type": { "type": "string", "enum": [ - "ApiKey" + "a2a_preview" ], - "description": "The credential type", - "readOnly": true + "description": "The type of the tool. Always `\"a2a_preview`." }, - "key": { + "name": { "type": "string", - "description": "API Key", - "readOnly": true - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/BaseCredentials" - } - ], - "description": "API Key Credential definition" - }, - "AssetCredentialResponse": { - "type": "object", - "required": [ - "blobReference" - ], - "properties": { - "blobReference": { - "allOf": [ - { - "$ref": "#/components/schemas/BlobReference" - } - ], - "description": "Credential info to access the storage account." - } - }, - "description": "Represents a reference to a blob for consumption" - }, - "AssetId": { - "type": "string", - "description": "Identifier of a saved asset." - }, - "AssetTypes": { - "anyOf": [ - { - "type": "string" + "description": "Optional user-defined name for this tool or configuration." }, - { + "description": { "type": "string", - "enum": [ - "uri_file", - "uri_folder", - "safetensors_model", - "literal" - ] - } - ], - "description": "Type of job input/output asset." - }, - "AssistantMessage": { - "type": "object", - "required": [ - "role", - "content" - ], - "properties": { - "role": { + "description": "Optional user-defined description for this tool or configuration." + }, + "base_url": { "type": "string", - "enum": [ - "assistant" - ], - "description": "Indicates this is an assistant message." + "format": "uri", + "description": "Base URL of the agent." }, - "content": { + "agent_card_path": { "type": "string", - "description": "Response content generated by the assistant." + "description": "The path to the agent card relative to the `base_url`.\nIf not provided, defaults to `/.well-known/agent-card.json`" + }, + "project_connection_id": { + "type": "string", + "description": "The connection ID in the project for the A2A server.\nThe connection stores authentication and other connection details needed to connect to the A2A server." } }, "allOf": [ { - "$ref": "#/components/schemas/Message" - } - ], - "description": "A message generated by the assistant in response to previous messages." - }, - "AttackStrategy": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "easy", - "moderate", - "difficult", - "ascii_art", - "ascii_smuggler", - "atbash", - "base64", - "binary", - "caesar", - "character_space", - "jailbreak", - "ansi_attack", - "character_swap", - "suffix_append", - "string_join", - "unicode_confusable", - "unicode_substitution", - "diacritic", - "flip", - "leetspeak", - "rot13", - "morse", - "url", - "baseline", - "indirect_jailbreak", - "tense", - "multi_turn", - "crescendo" - ] + "$ref": "#/components/schemas/OpenAI.Tool" } ], - "description": "Strategies for attacks." + "description": "An agent implementing the A2A protocol." }, - "Azure.Core.Foundations.Error": { + "A2AToolCall": { "type": "object", "required": [ - "code", - "message" + "type", + "call_id", + "name", + "arguments", + "status" ], "properties": { - "code": { + "type": { "type": "string", - "description": "One of a server-defined set of error codes." + "enum": [ + "a2a_preview_call" + ] }, - "message": { + "call_id": { "type": "string", - "description": "A human-readable representation of the error." + "description": "The unique ID of the tool call generated by the model." }, - "target": { + "name": { "type": "string", - "description": "The target of the error." - }, - "details": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Azure.Core.Foundations.Error" - }, - "description": "An array of details about specific errors that led to this reported error." + "description": "The name of the A2A agent card being called." }, - "innererror": { - "allOf": [ - { - "$ref": "#/components/schemas/Azure.Core.Foundations.InnerError" - } - ], - "description": "An object containing more specific information than the current object about the error." - } - }, - "description": "The error object." - }, - "Azure.Core.Foundations.ErrorResponse": { - "type": "object", - "required": [ - "error" - ], - "properties": { - "error": { - "allOf": [ - { - "$ref": "#/components/schemas/Azure.Core.Foundations.Error" - } - ], - "description": "The error object." - } - }, - "description": "A response containing error details." - }, - "Azure.Core.Foundations.InnerError": { - "type": "object", - "properties": { - "code": { + "arguments": { "type": "string", - "description": "One of a server-defined set of error codes." + "description": "A JSON string of the arguments to pass to the tool." }, - "innererror": { + "status": { "allOf": [ { - "$ref": "#/components/schemas/Azure.Core.Foundations.InnerError" + "$ref": "#/components/schemas/ToolCallStatus" } ], - "description": "Inner error." + "description": "The status of the tool call." } }, - "description": "An object containing more specific information about the error. As per Azure REST API guidelines - https://aka.ms/AzureRestApiGuidelines#handling-errors." - }, - "Azure.Core.Foundations.OperationState": { - "anyOf": [ - { - "type": "string", - "enum": [ - "NotStarted", - "Running", - "Succeeded", - "Failed", - "Canceled" - ] - }, + "allOf": [ { - "type": "string" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "Enum describing allowed operation states." - }, - "Azure.Core.uuid": { - "type": "string", - "format": "uuid", - "description": "Universally Unique Identifier" + "description": "An A2A (Agent-to-Agent) tool call." }, - "AzureAIAgentTarget": { + "A2AToolCallOutput": { "type": "object", "required": [ "type", - "name" + "call_id", + "name", + "status" ], "properties": { "type": { "type": "string", "enum": [ - "azure_ai_agent" - ], - "description": "The type of target, always `azure_ai_agent`." + "a2a_preview_call_output" + ] }, - "name": { + "call_id": { "type": "string", - "description": "The unique identifier of the Azure AI agent." + "description": "The unique ID of the tool call generated by the model." }, - "version": { + "name": { "type": "string", - "description": "The version of the Azure AI agent." + "description": "The name of the A2A agent card that was called." }, - "tool_descriptions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ToolDescription" - }, - "description": "The parameters used to control the sampling behavior of the agent during text generation." + "output": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallOutputContent" + } + ], + "description": "The output from the A2A tool call." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/Target" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "Represents a target specifying an Azure AI agent." + "description": "The output of an A2A (Agent-to-Agent) tool call." }, - "AzureAIAgentTargetUpdate": { + "AISearchIndexResource": { "type": "object", "properties": { - "type": { + "project_connection_id": { "type": "string", - "enum": [ - "azure_ai_agent" - ], - "description": "The type of target, always `azure_ai_agent`." + "description": "An index connection ID in an IndexResource attached to this agent." }, - "name": { + "index_name": { "type": "string", - "description": "The unique identifier of the Azure AI agent." + "description": "The name of an index in an IndexResource attached to this agent." }, - "version": { + "name": { "type": "string", - "description": "The version of the Azure AI agent." + "description": "Optional user-defined name for this tool or configuration." }, - "tool_descriptions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ToolDescription" - }, - "description": "The parameters used to control the sampling behavior of the agent during text generation." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/TargetUpdate" - } - ], - "description": "Represents a target specifying an Azure AI agent." - }, - "AzureAIBenchmarkDataSourceConfig": { - "type": "object", - "required": [ - "scenario", - "benchmark_name" - ], - "properties": { - "scenario": { + "description": { "type": "string", - "enum": [ - "benchmark_preview" - ], - "description": "Data schema scenario, always `benchmark` for benchmark evaluations." + "description": "Optional user-defined description for this tool or configuration." }, - "benchmark_name": { + "query_type": { "allOf": [ { - "$ref": "#/components/schemas/BenchmarkName" + "$ref": "#/components/schemas/AzureAISearchQueryType" } ], - "description": "The name of the benchmark specification." + "description": "Type of query in an AIIndexResource attached to this agent." }, - "benchmark_version": { + "top_k": { + "type": "integer", + "format": "int32", + "description": "Number of documents to retrieve from search and present to the model." + }, + "filter": { "type": "string", - "description": "The version of the benchmark specification (e.g., '0.1'). Latest version if not specified." + "description": "filter string for search resource. [Learn more here](https://learn.microsoft.com/azure/search/search-filters)." }, - "grader_model": { + "index_asset_id": { "type": "string", - "description": "Optional grader model for benchmarks that use model graders, Required when the benchmark's testing_criteria uses a model grader type." + "description": "Index asset id for search resource." } }, - "allOf": [ - { - "$ref": "#/components/schemas/AzureAIDataSourceConfig" - } - ], - "description": "Data source configuration for benchmark evaluations." + "description": "A AI Search Index resource." }, - "AzureAIBenchmarkPreviewEvalRunDataSource": { + "AgentBlueprintReference": { "type": "object", "required": [ - "type", - "target" + "type" ], "properties": { "type": { - "type": "string", - "enum": [ - "azure_ai_benchmark_preview" - ], - "description": "The type of data source, always `azure_ai_benchmark_preview`." - }, - "input_messages": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSourceInputMessagesItemReference" - } - ], - "description": "Input messages configuration." - }, - "target": { - "anyOf": [ - { - "$ref": "#/components/schemas/AzureAIModelTarget" - }, - { - "$ref": "#/components/schemas/AzureAIAgentTarget" - } - ], - "description": "The target model or agent to evaluate against the benchmark.\nWhen using `azure_ai_model` target, `sampling_params` must not be provided;\ninference parameters are auto-filled from the benchmark specification stored in eval group properties." + "$ref": "#/components/schemas/AgentBlueprintReferenceType" } }, - "allOf": [ + "discriminator": { + "propertyName": "type", + "mapping": { + "ManagedAgentIdentityBlueprint": "#/components/schemas/ManagedAgentIdentityBlueprintReference" + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentBlueprintReferenceType": { + "anyOf": [ { - "$ref": "#/components/schemas/EvalRunDataSource" + "type": "string" + }, + { + "type": "string", + "enum": [ + "ManagedAgentIdentityBlueprint" + ] } ], - "description": "Represents a data source for benchmark evaluation runs." + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "AzureAIDataSourceConfig": { + "AgentCard": { "type": "object", "required": [ - "type", - "scenario" + "version", + "skills" ], "properties": { - "type": { + "version": { "type": "string", - "enum": [ - "azure_ai_source" - ], - "description": "The object type, which is always `azure_ai_source`." + "minLength": 1, + "maxLength": 32, + "description": "The version of the agent card." }, - "scenario": { + "description": { "type": "string", - "enum": [ - "red_team", - "responses", - "traces_preview", - "synthetic_data_gen_preview", - "benchmark_preview" - ], - "description": "Data schema scenario." - } - }, - "discriminator": { - "propertyName": "scenario", - "mapping": { - "benchmark_preview": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" + "maxLength": 2048, + "description": "The description of the agent card." + }, + "skills": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentCardSkill" + }, + "maxItems": 16, + "description": "The set of skills that an agent can perform." } }, - "allOf": [ - { - "$ref": "#/components/schemas/DataSourceConfig" - } - ] + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "AzureAIModelTarget": { + "AgentCardSkill": { "type": "object", "required": [ - "type" + "id", + "name" ], "properties": { - "type": { + "id": { "type": "string", - "enum": [ - "azure_ai_model" - ], - "description": "The type of target, always `azure_ai_model`." + "minLength": 1, + "maxLength": 64, + "description": "a unique identifier for the skill" }, - "model": { + "name": { "type": "string", - "description": "The unique identifier of the Azure AI model." + "minLength": 1, + "maxLength": 128, + "description": "The name of the skill" }, - "sampling_params": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelSamplingParams" - } - ], - "description": "The parameters used to control the sampling behavior of the model during text generation." + "description": { + "type": "string", + "maxLength": 2048, + "description": "A description of the skill" + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentCardSkillTag" + }, + "maxItems": 5, + "description": "set of tagwords describing classes of capabilities for the skill" + }, + "examples": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentCardSkillExample" + }, + "maxItems": 5, + "description": "A list of example scenarios that the skill can perform." } }, - "allOf": [ - { - "$ref": "#/components/schemas/Target" - } - ], - "description": "Represents a target specifying an Azure AI model for operations requiring model selection." + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "AzureAIModelTargetUpdate": { + "AgentCardSkillExample": { + "type": "string", + "maxLength": 1024, + "description": "A skill example string with a maximum length of 1024 characters.", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentCardSkillTag": { + "type": "string", + "maxLength": 32, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentCardUpdate": { "type": "object", "properties": { - "type": { + "version": { "type": "string", - "enum": [ - "azure_ai_model" - ], - "description": "The type of target, always `azure_ai_model`." + "minLength": 1, + "maxLength": 32, + "description": "The version of the agent card." }, - "model": { + "description": { "type": "string", - "description": "The unique identifier of the Azure AI model." + "maxLength": 2048, + "description": "The description of the agent card." }, - "sampling_params": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelSamplingParamsUpdate" - } - ], - "description": "The parameters used to control the sampling behavior of the model during text generation." + "skills": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentCardSkill" + }, + "maxItems": 16, + "description": "The set of skills that an agent can perform." } }, - "allOf": [ - { - "$ref": "#/components/schemas/TargetUpdate" - } - ], - "description": "Represents a target specifying an Azure AI model for operations requiring model selection." + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "AzureAIResponsesEvalRunDataSource": { + "AgentClusterInsightRequest": { "type": "object", "required": [ "type", - "item_generation_params", - "max_runs_hourly", - "event_configuration_id" + "agentName" ], "properties": { "type": { "type": "string", "enum": [ - "azure_ai_responses" + "AgentClusterInsight" ], - "description": "The type of data source, always `azure_ai_responses`." + "description": "The type of request." }, - "item_generation_params": { + "agentName": { + "type": "string", + "description": "Identifier for the agent." + }, + "modelConfiguration": { "allOf": [ { - "$ref": "#/components/schemas/ResponseRetrievalItemGenerationParams" + "$ref": "#/components/schemas/InsightModelConfiguration" } ], - "description": "The parameters for item generation." - }, - "max_runs_hourly": { - "type": "integer", - "format": "int32", - "description": "Maximum number of evaluation runs allowed per hour." - }, - "event_configuration_id": { - "type": "string", - "description": "The event configuration name associated with this evaluation run." + "description": "Configuration of the model used in the insight generation." } }, "allOf": [ { - "$ref": "#/components/schemas/EvalRunDataSource" + "$ref": "#/components/schemas/InsightRequest" } ], - "description": "Represents a data source for evaluation runs that are specific to Continuous Evaluation scenarios." + "description": "Insights on set of Agent Evaluation Results" }, - "AzureAISearchIndex": { + "AgentClusterInsightResult": { "type": "object", "required": [ - "type" + "type", + "clusterInsight" ], "properties": { "type": { "type": "string", "enum": [ - "AzureSearch" + "AgentClusterInsight" ], - "description": "Type of index" + "description": "The type of insights result." + }, + "clusterInsight": { + "$ref": "#/components/schemas/ClusterInsightResult" } }, "allOf": [ { - "$ref": "#/components/schemas/Index" + "$ref": "#/components/schemas/InsightResult" } ], - "description": "Azure AI Search Index Definition" + "description": "Insights from the agent cluster analysis." }, - "AzureAISearchIndexUpdate": { + "AgentContainerObject": { "type": "object", "required": [ - "type" + "object", + "status", + "created_at", + "updated_at" ], "properties": { - "type": { + "object": { "type": "string", "enum": [ - "AzureSearch" + "agent.container" ], - "description": "Type of index" - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/IndexUpdate" - } - ], - "description": "Azure AI Search Index Definition" - }, - "AzureAISearchQueryType": { - "anyOf": [ - { - "type": "string" + "description": "The object type, which is always 'agent.container'.", + "readOnly": true }, - { - "type": "string", - "enum": [ - "simple", - "semantic", - "vector", - "vector_simple_hybrid", - "vector_semantic_hybrid" - ] - } - ], - "description": "Available query types for Azure AI Search tool." - }, - "AzureAISearchTool": { - "type": "object", - "required": [ - "type", - "azure_ai_search" - ], - "properties": { - "type": { + "id": { "type": "string", - "enum": [ - "azure_ai_search" + "description": "The identifier of the container.", + "readOnly": true + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentContainerStatus" + } ], - "description": "The object type, which is always 'azure_ai_search'." + "description": "The status of the container of a specific version of an agent.", + "readOnly": true }, - "name": { + "max_replicas": { + "type": "integer", + "format": "int32", + "description": "The maximum number of replicas for the container. Default is 1.", + "example": 10 + }, + "min_replicas": { + "type": "integer", + "format": "int32", + "description": "The minimum number of replicas for the container. Default is 1.", + "example": 1 + }, + "error_message": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "description": "The error message if the container failed to operate, if any.", + "readOnly": true }, - "description": { + "created_at": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "format": "date-time", + "description": "The creation time of the container.", + "readOnly": true }, - "azure_ai_search": { + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The last update time of the container.", + "readOnly": true + }, + "container": { "allOf": [ { - "$ref": "#/components/schemas/AzureAISearchToolResource" + "$ref": "#/components/schemas/ContainerDetails" } ], - "description": "The azure ai search index resource." + "description": "The detailed container information.", + "readOnly": true } }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Tool" - } - ], - "description": "The input definition information for an Azure AI search tool as used to configure an agent." + "description": "The details of the container of a specific version of an agent.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } }, - "AzureAISearchToolCall": { + "AgentContainerOperationError": { "type": "object", "required": [ + "code", "type", - "call_id", - "arguments", - "status" + "message" ], "properties": { - "type": { + "code": { "type": "string", - "enum": [ - "azure_ai_search_call" - ] + "description": "The error code of the container operation." }, - "call_id": { + "type": { "type": "string", - "description": "The unique ID of the tool call generated by the model." + "description": "The error type of the container operation." }, - "arguments": { + "message": { "type": "string", - "description": "A JSON string of the arguments to pass to the tool." - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } - ], - "description": "The status of the tool call." + "description": "The error message of the container operation." } }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.OutputItem" - } - ], - "description": "An Azure AI Search tool call." + "description": "The error details of the container operation, if any.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } }, - "AzureAISearchToolCallOutput": { + "AgentContainerOperationObject": { "type": "object", "required": [ - "type", - "call_id", + "id", + "agent_id", + "agent_version_id", "status" ], "properties": { - "type": { + "id": { "type": "string", - "enum": [ - "azure_ai_search_call_output" - ] + "description": "The ID of the container operation. This id is a globally unique identifier." }, - "call_id": { + "agent_id": { "type": "string", - "description": "The unique ID of the tool call generated by the model." + "description": "The ID of the agent." }, - "output": { + "agent_version_id": { + "type": "string", + "description": "The ID of the agent version." + }, + "status": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallOutputContent" + "$ref": "#/components/schemas/AgentContainerOperationStatus" } ], - "description": "The output from the Azure AI Search tool call." + "description": "The status of the container operation." }, - "status": { + "error": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/AgentContainerOperationError" } ], - "description": "The status of the tool call." + "description": "The error of the container operation, if any." + }, + "container": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentContainerObject" + } + ], + "description": "The container of the specific version of an agent." } }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.OutputItem" - } - ], - "description": "The output of an Azure AI Search tool call." + "description": "The container operation for a specific version of an agent.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } }, - "AzureAISearchToolResource": { - "type": "object", - "required": [ - "indexes" + "AgentContainerOperationStatus": { + "type": "string", + "enum": [ + "NotStarted", + "InProgress", + "Succeeded", + "Failed" ], - "properties": { - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "description": "Status of the container operation for a specific version of an agent.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } + }, + "AgentContainerStatus": { + "anyOf": [ + { + "type": "string" }, - "description": { + { "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "indexes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AISearchIndexResource" - }, - "maxItems": 1, - "description": "The indices attached to this agent. There can be a maximum of 1 index\nresource attached to the agent." + "enum": [ + "Starting", + "Running", + "Stopping", + "Stopped", + "Failed", + "Deleting", + "Deleted", + "Updating" + ] } - }, - "description": "A set of index resources used by the `azure_ai_search` tool." + ], + "description": "Status of the container of a specific version of an agent.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } }, - "AzureContentFilterBlocklistIdResult": { + "AgentDefinition": { "type": "object", "required": [ - "id", - "filtered" + "kind" ], "properties": { - "id": { - "type": "string", - "description": "The ID of the custom blocklist." + "kind": { + "$ref": "#/components/schemas/AgentKind" }, - "filtered": { - "type": "boolean", - "description": "Whether the blocklist resulted in filtering." + "rai_config": { + "allOf": [ + { + "$ref": "#/components/schemas/RaiConfig" + } + ], + "description": "Configuration for Responsible AI (RAI) content filtering and safety features." } }, - "description": "A content filter blocklist ID result." + "discriminator": { + "propertyName": "kind", + "mapping": { + "prompt": "#/components/schemas/PromptAgentDefinition", + "workflow": "#/components/schemas/WorkflowAgentDefinition", + "hosted": "#/components/schemas/HostedAgentDefinition", + "container_app": "#/components/schemas/ContainerAppAgentDefinition" + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } }, - "AzureContentFilterBlocklistResult": { - "type": "object", - "required": [ - "filtered" + "AgentDefinitionOptInKeys": { + "type": "string", + "enum": [ + "HostedAgents=V1Preview", + "WorkflowAgents=V1Preview", + "ContainerAgents=V1Preview" ], + "description": "Opt-in keys for defining preview Hosted or Workflow Agents." + }, + "AgentEndpoint": { + "type": "object", "properties": { - "filtered": { - "type": "boolean", - "description": "Whether any blocklist resulted in filtering." + "version_selector": { + "allOf": [ + { + "$ref": "#/components/schemas/VersionSelector" + } + ], + "description": "The version selector of the agent endpoint determines how traffic is routed to different versions of the agent." + }, + "protocols": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentEndpointProtocol" + }, + "description": "The protocols that the agent supports" }, - "details": { + "authorization_schemes": { "type": "array", "items": { - "$ref": "#/components/schemas/AzureContentFilterBlocklistIdResult" + "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" }, - "description": "The pairs of individual blocklist IDs and their filtering results." + "description": "The authorization schemes supported by the agent endpoint" } }, - "description": "A collection of filtering results for configured custom blocklists." + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "AzureContentFilterCitation": { + "AgentEndpointAuthorizationScheme": { "type": "object", + "required": [ + "type" + ], "properties": { - "license": { + "type": { + "$ref": "#/components/schemas/AgentEndpointAuthorizationSchemeType" + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "Entra": "#/components/schemas/EntraAuthorizationScheme", + "BotService": "#/components/schemas/BotServiceAuthorizationScheme", + "BotServiceRbac": "#/components/schemas/BotServiceRbacAuthorizationScheme" + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentEndpointAuthorizationSchemeType": { + "anyOf": [ + { + "type": "string" + }, + { "type": "string", - "description": "The license associated with the detection." + "enum": [ + "Entra", + "BotService", + "BotServiceRbac" + ] + } + ], + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentEndpointProtocol": { + "anyOf": [ + { + "type": "string" }, - "url": { + { "type": "string", - "format": "uri", - "description": "The URL associated with the license." + "enum": [ + "activity", + "responses", + "a2a", + "invocations" + ] } - }, - "description": "Citation details for protected material detection." + ] }, - "AzureContentFilterCompletionTextSpan": { + "AgentEndpointUpdate": { "type": "object", - "required": [ - "completion_start_offset", - "completion_end_offset" - ], "properties": { - "completion_start_offset": { - "type": "integer", - "format": "int32", - "description": "Offset of the UTF32 code point which begins the span." + "version_selector": { + "allOf": [ + { + "$ref": "#/components/schemas/VersionSelectorUpdate" + } + ], + "description": "The version selector of the agent endpoint determines how traffic is routed to different versions of the agent." }, - "completion_end_offset": { - "type": "integer", - "format": "int32", - "description": "Offset of the first UTF32 code point which is excluded from the span." + "protocols": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentEndpointProtocol" + }, + "description": "The protocols that the agent supports" + }, + "authorization_schemes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" + }, + "description": "The authorization schemes supported by the agent endpoint" } }, - "description": "A representation of a span of completion text as used by Azure OpenAI content filter results." + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "AzureContentFilterCompletionTextSpanDetectionResult": { + "AgentEvaluation": { "type": "object", "required": [ - "filtered", - "detected", - "details" + "id", + "status" ], "properties": { - "filtered": { - "type": "boolean", - "description": "Whether the content was filtered." + "id": { + "type": "string", + "description": "Identifier of the agent evaluation run." }, - "detected": { - "type": "boolean", - "description": "Whether the content category was detected." + "status": { + "type": "string", + "description": "Status of the agent evaluation. Options: Running, Completed, Failed." }, - "details": { + "error": { + "type": "string", + "description": "The reason of the request failure for the long running process, if applicable." + }, + "result": { "type": "array", "items": { - "$ref": "#/components/schemas/AzureContentFilterCompletionTextSpan" + "$ref": "#/components/schemas/AgentEvaluationResult" }, - "description": "Detailed information about the detected completion text spans." + "description": "The agent evaluation result." } }, - "description": "A content filter detection result with completion text span details." + "description": "Evaluation response for agent evaluation run." }, - "AzureContentFilterDetectionResult": { + "AgentEvaluationRedactionConfiguration": { "type": "object", - "required": [ - "filtered", - "detected" - ], "properties": { - "filtered": { - "type": "boolean", - "description": "Whether the content was filtered." - }, - "detected": { + "redactScoreProperties": { "type": "boolean", - "description": "Whether the content category was detected." + "description": "Redact score properties. If not specified, the default is to redact in production." } }, - "description": "A content filter result indicating whether the content was detected and filtered." + "description": "The redaction configuration will allow the user to control what is redacted." }, - "AzureContentFilterDetectionWithCitationResult": { + "AgentEvaluationRequest": { "type": "object", "required": [ - "filtered", - "detected" + "runId", + "evaluators", + "appInsightsConnectionString" ], "properties": { - "filtered": { - "type": "boolean", - "description": "Whether the content was filtered." + "runId": { + "type": "string", + "description": "Identifier of the agent run." }, - "detected": { - "type": "boolean", - "description": "Whether the content category was detected." + "threadId": { + "type": "string", + "description": "Identifier of the agent thread. This field is mandatory currently, but it will be optional in the future." }, - "citation": { + "evaluators": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/EvaluatorConfiguration" + }, + "description": "Evaluators to be used for the evaluation." + }, + "samplingConfiguration": { "allOf": [ { - "$ref": "#/components/schemas/AzureContentFilterCitation" + "$ref": "#/components/schemas/AgentEvaluationSamplingConfiguration" } ], - "description": "Citation details describing the associated license and its location." + "description": "Sampling configuration for the evaluation." + }, + "redactionConfiguration": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentEvaluationRedactionConfiguration" + } + ], + "description": "Redaction configuration for the evaluation." + }, + "appInsightsConnectionString": { + "type": "string", + "description": "Pass the AppInsights connection string to the agent evaluation for the evaluation results and the errors logs." } }, - "description": "A content filter detection result that includes citation information for protected material." + "description": "Evaluation request for agent run." }, - "AzureContentFilterDetectionWithReasonResult": { + "AgentEvaluationResult": { "type": "object", "required": [ - "filtered", - "detected" + "evaluator", + "evaluatorId", + "score", + "status", + "runId" ], "properties": { - "filtered": { - "type": "boolean", - "description": "Whether the content was filtered." + "evaluator": { + "type": "string", + "description": "Evaluator's name. This is the name of the evaluator that was used to evaluate the agent's completion." }, - "detected": { - "type": "boolean", - "description": "Whether the content category was detected." + "evaluatorId": { + "type": "string", + "description": "Identifier of the evaluator." + }, + "score": { + "type": "number", + "format": "float", + "description": "Score of the given evaluator. No restriction on range." + }, + "status": { + "type": "string", + "description": "Status of the evaluator result. Options: Running, Completed, Failed, NotApplicable." }, "reason": { "type": "string", - "description": "A human-readable explanation of why the detection result was produced." + "description": "Reasoning for the evaluation result." + }, + "version": { + "type": "string", + "description": "Version of the evaluator that was used to evaluate the agent's completion." + }, + "threadId": { + "type": "string", + "description": "The unique identifier of the thread." + }, + "runId": { + "type": "string", + "description": "The unique identifier of the run." + }, + "error": { + "type": "string", + "description": "A string explaining why there was an error, if applicable." + }, + "additionalDetails": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional properties relevant to the evaluator. These will differ between evaluators." } }, - "description": "A content filter detection result that includes a reason description." + "description": "Result for the agent evaluation evaluator run." }, - "AzureContentFilterError": { + "AgentEvaluationSamplingConfiguration": { "type": "object", "required": [ - "code", - "message" + "name", + "samplingPercent", + "maxRequestRate" ], "properties": { - "code": { - "type": "integer", - "format": "int32", - "description": "A machine-readable error code." - }, - "message": { + "name": { "type": "string", - "description": "A human-readable error message." + "description": "Name of the sampling strategy." + }, + "samplingPercent": { + "type": "number", + "format": "float", + "description": "Percentage of sampling per hour (0-100)." + }, + "maxRequestRate": { + "type": "number", + "format": "float", + "description": "Maximum request rate per hour (0 to 1000)." } }, - "description": "Error details from the content filtering system." + "description": "Definition for sampling strategy." }, - "AzureContentFilterPersonallyIdentifiableInformationResult": { + "AgentId": { "type": "object", "required": [ - "filtered", - "detected" + "type", + "name", + "version" ], "properties": { - "filtered": { - "type": "boolean", - "description": "Whether the content was filtered." + "type": { + "type": "string", + "enum": [ + "agent_id" + ] }, - "detected": { - "type": "boolean", - "description": "Whether PII was detected in the content." + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the agent." }, - "sub_categories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AzureContentFilterPiiSubCategoryResult" - }, - "description": "Detailed results for individual PII subcategories." + "version": { + "type": "string", + "description": "The version identifier of the agent." } - }, - "description": "A content filter detection result for Personally Identifiable Information." + } }, - "AzureContentFilterPiiSubCategoryResult": { + "AgentIdentity": { "type": "object", "required": [ - "sub_category", - "filtered", - "detected" + "principal_id", + "client_id" ], "properties": { - "sub_category": { + "principal_id": { "type": "string", - "description": "The PII subcategory that was evaluated." - }, - "filtered": { - "type": "boolean", - "description": "Whether the content was filtered for this subcategory." + "description": "The principal ID of the agent instance" }, - "detected": { - "type": "boolean", - "description": "Whether the subcategory was detected in the content." + "client_id": { + "type": "string", + "description": "The client ID of the agent instance. Also referred to as the instance ID" } }, - "description": "Result details for an individual PII subcategory." + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "AzureContentFilterResultsForResponses": { + "AgentKind": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "prompt", + "hosted", + "workflow", + "container_app" + ] + } + ] + }, + "AgentObject": { "type": "object", + "required": [ + "object", + "id", + "name", + "versions" + ], "properties": { - "sexual": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterSeverityResult" - } + "object": { + "type": "string", + "enum": [ + "agent" ], - "description": "Severity result for sexual content." + "description": "The object type, which is always 'agent'." }, - "hate": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterSeverityResult" - } - ], - "description": "Severity result for hate content." + "id": { + "type": "string", + "description": "The unique identifier of the agent." }, - "violence": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterSeverityResult" - } - ], - "description": "Severity result for violence content." + "name": { + "type": "string", + "maxLength": 63, + "description": "The name of the agent." }, - "self_harm": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterSeverityResult" + "versions": { + "type": "object", + "properties": { + "latest": { + "$ref": "#/components/schemas/AgentVersionObject" } + }, + "required": [ + "latest" ], - "description": "Severity result for self-harm content." + "description": "The latest version of the agent." }, - "profanity": { + "agent_endpoint": { "allOf": [ { - "$ref": "#/components/schemas/AzureContentFilterDetectionResult" + "$ref": "#/components/schemas/AgentEndpoint" } ], - "description": "Detection result for profanity." + "description": "The endpoint configuration for the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "custom_blocklists": { + "instance_identity": { "allOf": [ { - "$ref": "#/components/schemas/AzureContentFilterBlocklistResult" + "$ref": "#/components/schemas/AgentIdentity" } ], - "description": "Results for configured custom blocklists." + "description": "The instance identity of the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "jailbreak": { + "blueprint": { "allOf": [ { - "$ref": "#/components/schemas/AzureContentFilterDetectionResult" + "$ref": "#/components/schemas/AgentIdentity" } ], - "description": "Detection result for jailbreak attempts." + "description": "The blueprint for the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "task_adherence": { + "blueprint_reference": { "allOf": [ { - "$ref": "#/components/schemas/AzureContentFilterDetectionWithReasonResult" + "$ref": "#/components/schemas/AgentBlueprintReference" } ], - "description": "Detection result for task adherence evaluation." + "description": "The blueprint for the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "protected_material_text": { + "agent_card": { "allOf": [ { - "$ref": "#/components/schemas/AzureContentFilterDetectionResult" + "$ref": "#/components/schemas/AgentCard" } ], - "description": "Detection result for protected material text." + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + } + } + }, + "AgentProtocol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "activity_protocol", + "responses", + "invocations" + ] + } + ] + }, + "AgentReference": { + "type": "object", + "required": [ + "type", + "name" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "agent_reference" + ] + }, + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the agent." }, - "protected_material_code": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterDetectionWithCitationResult" - } - ], - "description": "Detection result for protected material code with citation." + "version": { + "type": "string", + "description": "The version identifier of the agent." + } + } + }, + "AgentSessionResource": { + "type": "object", + "required": [ + "agent_session_id", + "version_indicator", + "status", + "created_at", + "last_accessed_at", + "expires_at" + ], + "properties": { + "agent_session_id": { + "type": "string", + "description": "The session identifier." }, - "ungrounded_material": { + "version_indicator": { "allOf": [ { - "$ref": "#/components/schemas/AzureContentFilterCompletionTextSpanDetectionResult" + "$ref": "#/components/schemas/VersionIndicator" } ], - "description": "Detection result for ungrounded material with completion text span details." + "description": "The version indicator determining which agent version backs this session." }, - "personally_identifiable_information": { + "status": { "allOf": [ { - "$ref": "#/components/schemas/AzureContentFilterPersonallyIdentifiableInformationResult" + "$ref": "#/components/schemas/AgentSessionStatus" } ], - "description": "Detection result for Personally Identifiable Information." + "description": "The current status of the session." }, - "indirect_attack": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterDetectionResult" - } - ], - "description": "Detection result for indirect attacks." + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "The Unix timestamp (in seconds) when the session was created.", + "readOnly": true }, - "error": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterError" - } - ], - "description": "Error details if content filtering evaluation failed." + "last_accessed_at": { + "type": "integer", + "format": "unixtime", + "description": "The Unix timestamp (in seconds) when the session was last accessed.", + "readOnly": true + }, + "expires_at": { + "type": "integer", + "format": "unixtime", + "description": "The Unix timestamp (in seconds) when the session expires (rolling, 30 days from last activity).", + "readOnly": true } }, - "description": "Content filter results for the Responses API." + "description": "An agent session providing a long-lived compute sandbox for hosted agent invocations.", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "AzureContentFilterSeverity": { + "AgentSessionStatus": { "anyOf": [ { "type": "string" @@ -19929,726 +12833,768 @@ { "type": "string", "enum": [ - "safe", - "low", - "medium", - "high" + "creating", + "active", + "idle", + "updating", + "failed", + "deleting", + "deleted", + "expired" ] } ], - "description": "Ratings for the intensity and risk level of harmful content." + "description": "The status of an agent session.", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "AzureContentFilterSeverityResult": { + "AgentTaxonomyInput": { "type": "object", "required": [ - "filtered", - "severity" + "type", + "target", + "riskCategories" ], "properties": { - "filtered": { - "type": "boolean", - "description": "Whether the content was filtered." + "type": { + "type": "string", + "enum": [ + "agent" + ], + "description": "Input type of the evaluation taxonomy." }, - "severity": { + "target": { "allOf": [ { - "$ref": "#/components/schemas/AzureContentFilterSeverity" + "$ref": "#/components/schemas/Target" } ], - "description": "The severity level of the content." + "description": "Target configuration for the agent." + }, + "riskCategories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RiskCategory" + }, + "description": "List of risk categories to evaluate against." } }, - "description": "A content filter result indicating severity level and whether content was filtered." + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationTaxonomyInput" + } + ], + "description": "Input configuration for the evaluation taxonomy when the input type is agent." }, - "AzureFunctionBinding": { + "AgentTaxonomyInputUpdate": { "type": "object", - "required": [ - "type", - "storage_queue" - ], "properties": { "type": { "type": "string", "enum": [ - "storage_queue" + "agent" ], - "description": "The type of binding, which is always 'storage_queue'." + "description": "Input type of the evaluation taxonomy." }, - "storage_queue": { + "target": { "allOf": [ { - "$ref": "#/components/schemas/AzureFunctionStorageQueue" + "$ref": "#/components/schemas/TargetUpdate" } ], - "description": "Storage queue." + "description": "Target configuration for the agent." + }, + "riskCategories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RiskCategory" + }, + "description": "List of risk categories to evaluate against." } }, - "description": "The structure for keeping storage queue name and URI." + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationTaxonomyInputUpdate" + } + ], + "description": "Input configuration for the evaluation taxonomy when the input type is agent." }, - "AzureFunctionDefinition": { + "AgentVersionObject": { "type": "object", "required": [ - "function", - "input_binding", - "output_binding" + "metadata", + "object", + "id", + "name", + "version", + "created_at", + "definition", + "status" ], "properties": { - "function": { + "metadata": { "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the function to be called." - }, - "description": { - "type": "string", - "description": "A description of what the function does, used by the model to choose when and how to call the function." - }, - "parameters": { - "type": "object", - "additionalProperties": {}, - "description": "The parameters the functions accepts, described as a JSON Schema object." - } + "additionalProperties": { + "type": "string" }, - "required": [ - "name", - "parameters" + "nullable": true, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" + }, + "object": { + "type": "string", + "enum": [ + "agent.version" ], - "description": "The definition of azure function and its parameters." + "description": "The object type, which is always 'agent.version'." }, - "input_binding": { + "id": { + "type": "string", + "description": "The unique identifier of the agent version." + }, + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the agent. Name can be used to retrieve/update/delete the agent." + }, + "version": { + "type": "string", + "description": "The version identifier of the agent. Agents are immutable and every update creates a new version while keeping the name same." + }, + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the agent." + }, + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "The Unix timestamp (seconds) when the agent was created." + }, + "definition": { + "$ref": "#/components/schemas/AgentDefinition" + }, + "status": { "allOf": [ { - "$ref": "#/components/schemas/AzureFunctionBinding" + "$ref": "#/components/schemas/AgentVersionStatus" } ], - "description": "Input storage queue. The queue storage trigger runs a function as messages are added to it." + "description": "The provisioning status of the agent version. Defaults to 'active' for non-hosted agents. For hosted agents, reflects infrastructure readiness.", + "default": "active" }, - "output_binding": { + "error": { "allOf": [ { - "$ref": "#/components/schemas/AzureFunctionBinding" + "$ref": "#/components/schemas/OpenAI.Error" } ], - "description": "Output storage queue. The function writes output to this queue when the input items are processed." + "description": "Error details if the agent version provisioning failed." + }, + "instance_identity": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentIdentity" + } + ], + "description": "The instance identity of the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + }, + "readOnly": true + }, + "blueprint": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentIdentity" + } + ], + "description": "The blueprint for the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + }, + "readOnly": true + }, + "blueprint_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentBlueprintReference" + } + ], + "description": "The blueprint for the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + }, + "readOnly": true + }, + "agent_guid": { + "type": "string", + "description": "The unique GUID identifier of the agent.", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + }, + "readOnly": true } - }, - "description": "The definition of Azure function." + } }, - "AzureFunctionStorageQueue": { + "AgentVersionStatus": { + "type": "string", + "enum": [ + "creating", + "active", + "failed", + "deleting", + "deleted" + ], + "description": "The provisioning status of an agent version." + }, + "AgenticIdentityPreviewCredentials": { "type": "object", "required": [ - "queue_service_endpoint", - "queue_name" + "type" ], "properties": { - "queue_service_endpoint": { - "type": "string", - "description": "URI to the Azure Storage Queue service allowing you to manipulate a queue." - }, - "queue_name": { + "type": { "type": "string", - "description": "The name of an Azure function storage queue." + "enum": [ + "AgenticIdentityToken_Preview" + ], + "description": "The credential type", + "readOnly": true } }, - "description": "The structure for keeping storage queue name and URI." + "allOf": [ + { + "$ref": "#/components/schemas/BaseCredentials" + } + ], + "description": "Agentic identity credential definition" }, - "AzureFunctionTool": { + "ApiErrorResponse": { "type": "object", "required": [ - "type", - "azure_function" + "error" + ], + "properties": { + "error": { + "$ref": "#/components/schemas/OpenAI.Error" + } + }, + "description": "Error response for API failures." + }, + "ApiKeyCredentials": { + "type": "object", + "required": [ + "type" ], "properties": { "type": { "type": "string", "enum": [ - "azure_function" + "ApiKey" ], - "description": "The object type, which is always 'browser_automation'." + "description": "The credential type", + "readOnly": true }, - "azure_function": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureFunctionDefinition" - } - ], - "description": "The Azure Function Tool definition." + "key": { + "type": "string", + "description": "API Key", + "readOnly": true } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.Tool" + "$ref": "#/components/schemas/BaseCredentials" } ], - "description": "The input definition information for an Azure Function Tool, as used to configure an Agent." + "description": "API Key Credential definition" }, - "AzureFunctionToolCall": { + "AssetCredentialResponse": { "type": "object", "required": [ - "type", - "call_id", - "name", - "arguments", - "status" + "blobReference" ], "properties": { - "type": { - "type": "string", - "enum": [ - "azure_function_call" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "name": { - "type": "string", - "description": "The name of the Azure Function being called." - }, - "arguments": { - "type": "string", - "description": "A JSON string of the arguments to pass to the tool." - }, - "status": { + "blobReference": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/BlobReference" } ], - "description": "The status of the tool call." + "description": "Credential info to access the storage account." + } + }, + "description": "Represents a reference to a blob for consumption" + }, + "AssetId": { + "type": "string", + "description": "Identifier of a saved asset." + }, + "AssistantMessage": { + "type": "object", + "required": [ + "role", + "content" + ], + "properties": { + "role": { + "type": "string", + "enum": [ + "assistant" + ], + "description": "Indicates this is an assistant message." + }, + "content": { + "type": "string", + "description": "Response content generated by the assistant." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/Message" } ], - "description": "An Azure Function tool call." + "description": "A message generated by the assistant in response to previous messages." }, - "AzureFunctionToolCallOutput": { + "AttackStrategy": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "easy", + "moderate", + "difficult", + "ascii_art", + "ascii_smuggler", + "atbash", + "base64", + "binary", + "caesar", + "character_space", + "jailbreak", + "ansi_attack", + "character_swap", + "suffix_append", + "string_join", + "unicode_confusable", + "unicode_substitution", + "diacritic", + "flip", + "leetspeak", + "rot13", + "morse", + "url", + "baseline", + "indirect_jailbreak", + "tense", + "multi_turn", + "crescendo" + ] + } + ], + "description": "Strategies for attacks." + }, + "Azure.Core.Foundations.Error": { "type": "object", "required": [ - "type", - "call_id", - "name", - "status" + "code", + "message" ], "properties": { - "type": { + "code": { "type": "string", - "enum": [ - "azure_function_call_output" - ] + "description": "One of a server-defined set of error codes." }, - "call_id": { + "message": { "type": "string", - "description": "The unique ID of the tool call generated by the model." + "description": "A human-readable representation of the error." }, - "name": { + "target": { "type": "string", - "description": "The name of the Azure Function that was called." + "description": "The target of the error." }, - "output": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallOutputContent" - } - ], - "description": "The output from the Azure Function tool call." + "details": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Azure.Core.Foundations.Error" + }, + "description": "An array of details about specific errors that led to this reported error." }, - "status": { + "innererror": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/Azure.Core.Foundations.InnerError" } ], - "description": "The status of the tool call." + "description": "An object containing more specific information than the current object about the error." } }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.OutputItem" - } - ], - "description": "The output of an Azure Function tool call." + "description": "The error object." }, - "AzureOpenAIModelConfiguration": { + "Azure.Core.Foundations.ErrorResponse": { "type": "object", "required": [ - "type", - "modelDeploymentName" + "error" ], "properties": { - "type": { - "type": "string", - "enum": [ - "AzureOpenAIModel" - ] - }, - "modelDeploymentName": { - "type": "string", - "description": "Deployment name for AOAI model. Example: gpt-4o if in AIServices or connection based `connection_name/deployment_name` (e.g. `my-aoai-connection/gpt-4o`)." + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/Azure.Core.Foundations.Error" + } + ], + "description": "The error object." } }, - "allOf": [ - { - "$ref": "#/components/schemas/TargetConfig" - } - ], - "description": "Azure OpenAI model configuration. The API version would be selected by the service for querying the model." + "description": "A response containing error details." }, - "BaseCredentials": { + "Azure.Core.Foundations.InnerError": { "type": "object", - "required": [ - "type" - ], "properties": { - "type": { + "code": { + "type": "string", + "description": "One of a server-defined set of error codes." + }, + "innererror": { "allOf": [ { - "$ref": "#/components/schemas/CredentialType" + "$ref": "#/components/schemas/Azure.Core.Foundations.InnerError" } ], - "description": "The type of credential used by the connection", - "readOnly": true - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "ApiKey": "#/components/schemas/ApiKeyCredentials", - "AAD": "#/components/schemas/EntraIDCredentials", - "CustomKeys": "#/components/schemas/CustomCredential", - "SAS": "#/components/schemas/SASCredentials", - "None": "#/components/schemas/NoAuthenticationCredentials", - "AgenticIdentityToken_Preview": "#/components/schemas/AgenticIdentityPreviewCredentials" + "description": "Inner error." } }, - "description": "A base class for connection credentials" + "description": "An object containing more specific information about the error. As per Azure REST API guidelines - https://aka.ms/AzureRestApiGuidelines#handling-errors." }, - "BenchmarkName": { + "Azure.Core.Foundations.OperationState": { "anyOf": [ - { - "type": "string" - }, { "type": "string", "enum": [ - "builtin.gpqa_diamond", - "builtin.bbeh", - "builtin.bigbenchhard", - "builtin.frontierscience", - "builtin.musr", - "builtin.truthful_qa", - "builtin.inspect_ai.gpqa_diamond", - "builtin.inspect_ai.chembench", - "builtin.inspect_ai.aime_2025", - "builtin.inspect_ai.musr" + "NotStarted", + "Running", + "Succeeded", + "Failed", + "Canceled" ] + }, + { + "type": "string" } ], - "description": "The set of available benchmark specifications." + "description": "Enum describing allowed operation states." }, - "BingCustomSearchConfiguration": { + "Azure.Core.uuid": { + "type": "string", + "format": "uuid", + "description": "Universally Unique Identifier" + }, + "AzureAIAgentTarget": { "type": "object", "required": [ - "project_connection_id", - "instance_name" + "type", + "name" ], "properties": { - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "project_connection_id": { - "type": "string", - "description": "Project connection id for grounding with bing search" - }, - "instance_name": { + "type": { "type": "string", - "description": "Name of the custom configuration instance given to config." + "enum": [ + "azure_ai_agent" + ], + "description": "The type of target, always `azure_ai_agent`." }, - "market": { + "name": { "type": "string", - "description": "The market where the results come from." + "description": "The unique identifier of the Azure AI agent." }, - "set_lang": { + "version": { "type": "string", - "description": "The language to use for user interface strings when calling Bing API." - }, - "count": { - "type": "integer", - "format": "int64", - "description": "The number of search results to return in the bing api response" + "description": "The version of the Azure AI agent." }, - "freshness": { - "type": "string", - "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." + "tool_descriptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolDescription" + }, + "description": "The parameters used to control the sampling behavior of the agent during text generation." } }, - "description": "A bing custom search configuration." + "allOf": [ + { + "$ref": "#/components/schemas/Target" + } + ], + "description": "Represents a target specifying an Azure AI agent." }, - "BingCustomSearchPreviewTool": { + "AzureAIAgentTargetUpdate": { "type": "object", - "required": [ - "type", - "bing_custom_search_preview" - ], "properties": { "type": { "type": "string", "enum": [ - "bing_custom_search_preview" + "azure_ai_agent" ], - "description": "The object type, which is always 'bing_custom_search_preview'." + "description": "The type of target, always `azure_ai_agent`." }, "name": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "description": "The unique identifier of the Azure AI agent." }, - "description": { + "version": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "description": "The version of the Azure AI agent." }, - "bing_custom_search_preview": { - "allOf": [ - { - "$ref": "#/components/schemas/BingCustomSearchToolParameters" - } - ], - "description": "The bing custom search tool parameters." + "tool_descriptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolDescription" + }, + "description": "The parameters used to control the sampling behavior of the agent during text generation." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.Tool" + "$ref": "#/components/schemas/TargetUpdate" } ], - "description": "The input definition information for a Bing custom search tool as used to configure an agent." + "description": "Represents a target specifying an Azure AI agent." }, - "BingCustomSearchToolCall": { + "AzureAIBenchmarkDataSourceConfig": { "type": "object", "required": [ - "type", - "call_id", - "arguments", - "status" + "scenario", + "benchmark_name" ], "properties": { - "type": { + "scenario": { "type": "string", "enum": [ - "bing_custom_search_preview_call" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "arguments": { - "type": "string", - "description": "A JSON string of the arguments to pass to the tool." + "benchmark_preview" + ], + "description": "Data schema scenario, always `benchmark` for benchmark evaluations." }, - "status": { + "benchmark_name": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/BenchmarkName" } ], - "description": "The status of the tool call." + "description": "The name of the benchmark specification." + }, + "benchmark_version": { + "type": "string", + "description": "The version of the benchmark specification (e.g., '0.1'). Latest version if not specified." + }, + "grader_model": { + "type": "string", + "description": "Optional grader model for benchmarks that use model graders, Required when the benchmark's testing_criteria uses a model grader type." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/AzureAIDataSourceConfig" } ], - "description": "A Bing custom search tool call." + "description": "Data source configuration for benchmark evaluations." }, - "BingCustomSearchToolCallOutput": { + "AzureAIBenchmarkPreviewEvalRunDataSource": { "type": "object", "required": [ "type", - "call_id", - "status" + "target" ], "properties": { "type": { "type": "string", "enum": [ - "bing_custom_search_preview_call_output" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." + "azure_ai_benchmark_preview" + ], + "description": "The type of data source, always `azure_ai_benchmark_preview`." }, - "output": { + "input_messages": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallOutputContent" + "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSourceInputMessagesItemReference" } ], - "description": "The output from the Bing custom search tool call." + "description": "Input messages configuration." }, - "status": { - "allOf": [ + "target": { + "anyOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/AzureAIModelTarget" + }, + { + "$ref": "#/components/schemas/AzureAIAgentTarget" } ], - "description": "The status of the tool call." + "description": "The target model or agent to evaluate against the benchmark.\nWhen using `azure_ai_model` target, `sampling_params` must not be provided;\ninference parameters are auto-filled from the benchmark specification stored in eval group properties." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/EvalRunDataSource" } ], - "description": "The output of a Bing custom search tool call." + "description": "Represents a data source for benchmark evaluation runs." }, - "BingCustomSearchToolParameters": { + "AzureAIDataSourceConfig": { "type": "object", "required": [ - "search_configurations" + "type", + "scenario" ], "properties": { - "name": { + "type": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "enum": [ + "azure_ai_source" + ], + "description": "The object type, which is always `azure_ai_source`." }, - "description": { + "scenario": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "search_configurations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BingCustomSearchConfiguration" - }, - "maxItems": 1, - "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." + "enum": [ + "red_team", + "responses", + "traces_preview", + "synthetic_data_gen_preview", + "benchmark_preview" + ], + "description": "Data schema scenario." } }, - "description": "The bing custom search tool parameters." - }, - "BingGroundingSearchConfiguration": { - "type": "object", - "required": [ - "project_connection_id" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "project_connection_id": { - "type": "string", - "description": "Project connection id for grounding with bing search" - }, - "market": { - "type": "string", - "description": "The market where the results come from." - }, - "set_lang": { - "type": "string", - "description": "The language to use for user interface strings when calling Bing API." - }, - "count": { - "type": "integer", - "format": "int64", - "description": "The number of search results to return in the bing api response" - }, - "freshness": { - "type": "string", - "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." + "discriminator": { + "propertyName": "scenario", + "mapping": { + "benchmark_preview": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" } }, - "description": "Search configuration for Bing Grounding" - }, - "BingGroundingSearchToolParameters": { - "type": "object", - "required": [ - "search_configurations" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "search_configurations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BingGroundingSearchConfiguration" - }, - "maxItems": 1, - "description": "The search configurations attached to this tool. There can be a maximum of 1\nsearch configuration resource attached to the tool." + "allOf": [ + { + "$ref": "#/components/schemas/DataSourceConfig" } - }, - "description": "The bing grounding search tool parameters." + ] }, - "BingGroundingTool": { + "AzureAIModelTarget": { "type": "object", "required": [ - "type", - "bing_grounding" + "type" ], "properties": { "type": { "type": "string", "enum": [ - "bing_grounding" + "azure_ai_model" ], - "description": "The object type, which is always 'bing_grounding'." - }, - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "description": "The type of target, always `azure_ai_model`." }, - "description": { + "model": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "description": "The unique identifier of the Azure AI model." }, - "bing_grounding": { + "sampling_params": { "allOf": [ { - "$ref": "#/components/schemas/BingGroundingSearchToolParameters" + "$ref": "#/components/schemas/ModelSamplingParams" } ], - "description": "The bing grounding search tool parameters." + "description": "The parameters used to control the sampling behavior of the model during text generation." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.Tool" + "$ref": "#/components/schemas/Target" } ], - "description": "The input definition information for a bing grounding search tool as used to configure an agent." + "description": "Represents a target specifying an Azure AI model for operations requiring model selection." }, - "BingGroundingToolCall": { + "AzureAIModelTargetUpdate": { "type": "object", - "required": [ - "type", - "call_id", - "arguments", - "status" - ], "properties": { "type": { "type": "string", "enum": [ - "bing_grounding_call" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." + "azure_ai_model" + ], + "description": "The type of target, always `azure_ai_model`." }, - "arguments": { + "model": { "type": "string", - "description": "A JSON string of the arguments to pass to the tool." + "description": "The unique identifier of the Azure AI model." }, - "status": { + "sampling_params": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/ModelSamplingParamsUpdate" } ], - "description": "The status of the tool call." + "description": "The parameters used to control the sampling behavior of the model during text generation." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/TargetUpdate" } ], - "description": "A Bing grounding tool call." + "description": "Represents a target specifying an Azure AI model for operations requiring model selection." }, - "BingGroundingToolCallOutput": { + "AzureAIResponsesEvalRunDataSource": { "type": "object", "required": [ "type", - "call_id", - "status" + "item_generation_params", + "max_runs_hourly", + "event_configuration_id" ], "properties": { "type": { "type": "string", "enum": [ - "bing_grounding_call_output" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "output": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallOutputContent" - } + "azure_ai_responses" ], - "description": "The output from the Bing grounding tool call." + "description": "The type of data source, always `azure_ai_responses`." }, - "status": { + "item_generation_params": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/ResponseRetrievalItemGenerationParams" } ], - "description": "The status of the tool call." + "description": "The parameters for item generation." + }, + "max_runs_hourly": { + "type": "integer", + "format": "int32", + "description": "Maximum number of evaluation runs allowed per hour." + }, + "event_configuration_id": { + "type": "string", + "description": "The event configuration name associated with this evaluation run." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/EvalRunDataSource" } ], - "description": "The output of a Bing grounding tool call." - }, - "BlobReference": { - "type": "object", - "required": [ - "blobUri", - "storageAccountArmId", - "credential" - ], - "properties": { - "blobUri": { - "type": "string", - "format": "uri", - "description": "Blob URI path for client to upload data. Example: `https://blob.windows.core.net/Container/Path`" - }, - "storageAccountArmId": { - "type": "string", - "description": "ARM ID of the storage account to use." - }, - "credential": { - "allOf": [ - { - "$ref": "#/components/schemas/SasCredential" - } - ], - "description": "Credential info to access the storage account." - } - }, - "description": "Blob reference details." + "description": "Represents a data source for evaluation runs that are specific to Continuous Evaluation scenarios." }, - "BotServiceAuthorizationScheme": { + "AzureAISearchIndex": { "type": "object", "required": [ "type" @@ -20657,22 +13603,19 @@ "type": { "type": "string", "enum": [ - "BotService" - ] + "AzureSearch" + ], + "description": "Type of index" } }, "allOf": [ { - "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" + "$ref": "#/components/schemas/Index" } ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "Azure AI Search Index Definition" }, - "BotServiceRbacAuthorizationScheme": { + "AzureAISearchIndexUpdate": { "type": "object", "required": [ "type" @@ -20681,34 +13624,49 @@ "type": { "type": "string", "enum": [ - "BotServiceRbac" - ] + "AzureSearch" + ], + "description": "Type of index" } }, "allOf": [ { - "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" + "$ref": "#/components/schemas/IndexUpdate" } ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "Azure AI Search Index Definition" }, - "BrowserAutomationPreviewTool": { + "AzureAISearchQueryType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "simple", + "semantic", + "vector", + "vector_simple_hybrid", + "vector_semantic_hybrid" + ] + } + ], + "description": "Available query types for Azure AI Search tool." + }, + "AzureAISearchTool": { "type": "object", "required": [ "type", - "browser_automation_preview" + "azure_ai_search" ], "properties": { "type": { "type": "string", "enum": [ - "browser_automation_preview" + "azure_ai_search" ], - "description": "The object type, which is always 'browser_automation_preview'." + "description": "The object type, which is always 'azure_ai_search'." }, "name": { "type": "string", @@ -20718,13 +13676,13 @@ "type": "string", "description": "Optional user-defined description for this tool or configuration." }, - "browser_automation_preview": { + "azure_ai_search": { "allOf": [ { - "$ref": "#/components/schemas/BrowserAutomationToolParameters" + "$ref": "#/components/schemas/AzureAISearchToolResource" } ], - "description": "The Browser Automation Tool parameters." + "description": "The azure ai search index resource." } }, "allOf": [ @@ -20732,9 +13690,9 @@ "$ref": "#/components/schemas/OpenAI.Tool" } ], - "description": "The input definition information for a Browser Automation Tool, as used to configure an Agent." + "description": "The input definition information for an Azure AI search tool as used to configure an agent." }, - "BrowserAutomationToolCall": { + "AzureAISearchToolCall": { "type": "object", "required": [ "type", @@ -20746,7 +13704,7 @@ "type": { "type": "string", "enum": [ - "browser_automation_preview_call" + "azure_ai_search_call" ] }, "call_id": { @@ -20771,9 +13729,9 @@ "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "A browser automation tool call." + "description": "An Azure AI Search tool call." }, - "BrowserAutomationToolCallOutput": { + "AzureAISearchToolCallOutput": { "type": "object", "required": [ "type", @@ -20784,7 +13742,7 @@ "type": { "type": "string", "enum": [ - "browser_automation_preview_call_output" + "azure_ai_search_call_output" ] }, "call_id": { @@ -20797,7 +13755,7 @@ "$ref": "#/components/schemas/ToolCallOutputContent" } ], - "description": "The output from the browser automation tool call." + "description": "The output from the Azure AI Search tool call." }, "status": { "allOf": [ @@ -20813,12 +13771,12 @@ "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "The output of a browser automation tool call." + "description": "The output of an Azure AI Search tool call." }, - "BrowserAutomationToolConnectionParameters": { + "AzureAISearchToolResource": { "type": "object", "required": [ - "project_connection_id" + "indexes" ], "properties": { "name": { @@ -20829,1814 +13787,2098 @@ "type": "string", "description": "Optional user-defined description for this tool or configuration." }, - "project_connection_id": { - "type": "string", - "description": "The ID of the project connection to your Azure Playwright resource." + "indexes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AISearchIndexResource" + }, + "maxItems": 1, + "description": "The indices attached to this agent. There can be a maximum of 1 index\nresource attached to the agent." } }, - "description": "Definition of input parameters for the connection used by the Browser Automation Tool." + "description": "A set of index resources used by the `azure_ai_search` tool." }, - "BrowserAutomationToolParameters": { + "AzureContentFilterBlocklistIdResult": { "type": "object", "required": [ - "connection" + "id", + "filtered" ], "properties": { - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { + "id": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "description": "The ID of the custom blocklist." }, - "connection": { - "allOf": [ - { - "$ref": "#/components/schemas/BrowserAutomationToolConnectionParameters" - } - ], - "description": "The project connection parameters associated with the Browser Automation Tool." + "filtered": { + "type": "boolean", + "description": "Whether the blocklist resulted in filtering." } }, - "description": "Definition of input parameters for the Browser Automation Tool." + "description": "A content filter blocklist ID result." }, - "CaptureStructuredOutputsTool": { + "AzureContentFilterBlocklistResult": { "type": "object", "required": [ - "type", - "outputs" + "filtered" ], "properties": { - "type": { - "type": "string", - "enum": [ - "capture_structured_outputs" - ], - "description": "The type of the tool. Always `capture_structured_outputs`." + "filtered": { + "type": "boolean", + "description": "Whether any blocklist resulted in filtering." }, - "outputs": { - "allOf": [ - { - "$ref": "#/components/schemas/StructuredOutputDefinition" - } - ], - "description": "The structured outputs to capture from the model." + "details": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AzureContentFilterBlocklistIdResult" + }, + "description": "The pairs of individual blocklist IDs and their filtering results." } }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Tool" + "description": "A collection of filtering results for configured custom blocklists." + }, + "AzureContentFilterCitation": { + "type": "object", + "properties": { + "license": { + "type": "string", + "description": "The license associated with the detection." + }, + "url": { + "type": "string", + "format": "uri", + "description": "The URL associated with the license." } - ], - "description": "A tool for capturing structured outputs" + }, + "description": "Citation details for protected material detection." }, - "ChartCoordinate": { + "AzureContentFilterCompletionTextSpan": { "type": "object", "required": [ - "x", - "y", - "size" + "completion_start_offset", + "completion_end_offset" ], "properties": { - "x": { - "type": "integer", - "format": "int32", - "description": "X-axis coordinate." - }, - "y": { + "completion_start_offset": { "type": "integer", "format": "int32", - "description": "Y-axis coordinate." + "description": "Offset of the UTF32 code point which begins the span." }, - "size": { + "completion_end_offset": { "type": "integer", "format": "int32", - "description": "Size of the chart element." + "description": "Offset of the first UTF32 code point which is excluded from the span." } }, - "description": "Coordinates for the analysis chart." + "description": "A representation of a span of completion text as used by Azure OpenAI content filter results." }, - "ChatSummaryMemoryItem": { + "AzureContentFilterCompletionTextSpanDetectionResult": { "type": "object", "required": [ - "kind" + "filtered", + "detected", + "details" ], "properties": { - "kind": { - "type": "string", - "enum": [ - "chat_summary" - ], - "description": "The kind of the memory item." + "filtered": { + "type": "boolean", + "description": "Whether the content was filtered." + }, + "detected": { + "type": "boolean", + "description": "Whether the content category was detected." + }, + "details": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AzureContentFilterCompletionTextSpan" + }, + "description": "Detailed information about the detected completion text spans." } }, - "allOf": [ - { - "$ref": "#/components/schemas/MemoryItem" - } - ], - "description": "A memory item containing a summary extracted from conversations.", - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] - } + "description": "A content filter detection result with completion text span details." }, - "ChatTemplate": { - "anyOf": [ - { - "type": "string" + "AzureContentFilterDetectionResult": { + "type": "object", + "required": [ + "filtered", + "detected" + ], + "properties": { + "filtered": { + "type": "boolean", + "description": "Whether the content was filtered." }, - { - "type": "string", - "enum": [ - "Chatml", - "llama-3", - "Zephyr", - "Gemma", - "phi-3" - ] + "detected": { + "type": "boolean", + "description": "Whether the content category was detected." } - ], - "description": "Chat template used to format conversational training data." + }, + "description": "A content filter result indicating whether the content was detected and filtered." }, - "ClusterInsightResult": { + "AzureContentFilterDetectionWithCitationResult": { "type": "object", "required": [ - "summary", - "clusters" + "filtered", + "detected" ], "properties": { - "summary": { + "filtered": { + "type": "boolean", + "description": "Whether the content was filtered." + }, + "detected": { + "type": "boolean", + "description": "Whether the content category was detected." + }, + "citation": { "allOf": [ { - "$ref": "#/components/schemas/InsightSummary" + "$ref": "#/components/schemas/AzureContentFilterCitation" } ], - "description": "Summary of the insights report." + "description": "Citation details describing the associated license and its location." + } + }, + "description": "A content filter detection result that includes citation information for protected material." + }, + "AzureContentFilterDetectionWithReasonResult": { + "type": "object", + "required": [ + "filtered", + "detected" + ], + "properties": { + "filtered": { + "type": "boolean", + "description": "Whether the content was filtered." }, - "clusters": { - "type": "array", - "items": { - "$ref": "#/components/schemas/InsightCluster" - }, - "description": "List of clusters identified in the insights." + "detected": { + "type": "boolean", + "description": "Whether the content category was detected." }, - "coordinates": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/ChartCoordinate" - }, - "description": " Optional mapping of IDs to 2D coordinates used by the UX for visualization.\n\n The map keys are string identifiers (for example, a cluster id or a sample id)\n and the values are the coordinates and visual size for rendering on a 2D chart.\n\n This property is omitted unless the client requests coordinates (for example,\n by passing `includeCoordinates=true` as a query parameter).\n\n Example:\n ```\n {\n \"cluster-1\": { \"x\": 12, \"y\": 34, \"size\": 8 },\n \"sample-123\": { \"x\": 18, \"y\": 22, \"size\": 4 }\n }\n ```\n\n Coordinates are intended only for client-side visualization and do not\n modify the canonical insights results." + "reason": { + "type": "string", + "description": "A human-readable explanation of why the detection result was produced." } }, - "description": "Insights from the cluster analysis." + "description": "A content filter detection result that includes a reason description." }, - "ClusterTokenUsage": { + "AzureContentFilterError": { "type": "object", "required": [ - "inputTokenUsage", - "outputTokenUsage", - "totalTokenUsage" + "code", + "message" ], "properties": { - "inputTokenUsage": { + "code": { "type": "integer", "format": "int32", - "description": "input token usage" + "description": "A machine-readable error code." }, - "outputTokenUsage": { - "type": "integer", - "format": "int32", - "description": "output token usage" + "message": { + "type": "string", + "description": "A human-readable error message." + } + }, + "description": "Error details from the content filtering system." + }, + "AzureContentFilterPersonallyIdentifiableInformationResult": { + "type": "object", + "required": [ + "filtered", + "detected" + ], + "properties": { + "filtered": { + "type": "boolean", + "description": "Whether the content was filtered." }, - "totalTokenUsage": { - "type": "integer", - "format": "int32", - "description": "total token usage" + "detected": { + "type": "boolean", + "description": "Whether PII was detected in the content." + }, + "sub_categories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AzureContentFilterPiiSubCategoryResult" + }, + "description": "Detailed results for individual PII subcategories." } }, - "description": "Token usage for cluster analysis" + "description": "A content filter detection result for Personally Identifiable Information." }, - "CodeBasedEvaluatorDefinition": { + "AzureContentFilterPiiSubCategoryResult": { "type": "object", "required": [ - "type" + "sub_category", + "filtered", + "detected" ], "properties": { - "type": { + "sub_category": { "type": "string", - "enum": [ - "code" - ] + "description": "The PII subcategory that was evaluated." }, - "code_text": { - "type": "string", - "description": "Inline code text for the evaluator" + "filtered": { + "type": "boolean", + "description": "Whether the content was filtered for this subcategory." }, - "entry_point": { - "type": "string", - "description": "The entry point Python file name for the uploaded evaluator code (e.g. 'answer_length_evaluator.py')" + "detected": { + "type": "boolean", + "description": "Whether the subcategory was detected in the content." + } + }, + "description": "Result details for an individual PII subcategory." + }, + "AzureContentFilterResultsForResponses": { + "type": "object", + "properties": { + "sexual": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterSeverityResult" + } + ], + "description": "Severity result for sexual content." }, - "image_tag": { - "type": "string", - "description": "The container image tag to use for evaluator code execution" + "hate": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterSeverityResult" + } + ], + "description": "Severity result for hate content." }, - "blob_uri": { + "violence": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterSeverityResult" + } + ], + "description": "Severity result for violence content." + }, + "self_harm": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterSeverityResult" + } + ], + "description": "Severity result for self-harm content." + }, + "profanity": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterDetectionResult" + } + ], + "description": "Detection result for profanity." + }, + "custom_blocklists": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterBlocklistResult" + } + ], + "description": "Results for configured custom blocklists." + }, + "jailbreak": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterDetectionResult" + } + ], + "description": "Detection result for jailbreak attempts." + }, + "task_adherence": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterDetectionWithReasonResult" + } + ], + "description": "Detection result for task adherence evaluation." + }, + "protected_material_text": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterDetectionResult" + } + ], + "description": "Detection result for protected material text." + }, + "protected_material_code": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterDetectionWithCitationResult" + } + ], + "description": "Detection result for protected material code with citation." + }, + "ungrounded_material": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterCompletionTextSpanDetectionResult" + } + ], + "description": "Detection result for ungrounded material with completion text span details." + }, + "personally_identifiable_information": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterPersonallyIdentifiableInformationResult" + } + ], + "description": "Detection result for Personally Identifiable Information." + }, + "indirect_attack": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterDetectionResult" + } + ], + "description": "Detection result for indirect attacks." + }, + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterError" + } + ], + "description": "Error details if content filtering evaluation failed." + } + }, + "description": "Content filter results for the Responses API." + }, + "AzureContentFilterSeverity": { + "anyOf": [ + { + "type": "string" + }, + { "type": "string", - "description": "The blob URI for the evaluator storage" + "enum": [ + "safe", + "low", + "medium", + "high" + ] + } + ], + "description": "Ratings for the intensity and risk level of harmful content." + }, + "AzureContentFilterSeverityResult": { + "type": "object", + "required": [ + "filtered", + "severity" + ], + "properties": { + "filtered": { + "type": "boolean", + "description": "Whether the content was filtered." + }, + "severity": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterSeverity" + } + ], + "description": "The severity level of the content." } }, - "allOf": [ - { - "$ref": "#/components/schemas/EvaluatorDefinition" - } - ], - "description": "Code-based evaluator definition using python code" + "description": "A content filter result indicating severity level and whether content was filtered." }, - "CommandJob": { + "AzureFunctionBinding": { "type": "object", "required": [ - "jobType", - "computeId" + "type", + "storage_queue" ], "properties": { - "jobType": { + "type": { "type": "string", "enum": [ - "Command" + "storage_queue" ], - "description": "Job type." - }, - "command": { - "type": "string", - "description": "The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified." - }, - "environmentImageReference": { - "type": "string", - "description": "ACR path or Azure ML environment reference. Required when training is not specified." + "description": "The type of binding, which is always 'storage_queue'." }, - "training": { + "storage_queue": { "allOf": [ { - "$ref": "#/components/schemas/TrainingConfiguration" + "$ref": "#/components/schemas/AzureFunctionStorageQueue" } ], - "description": "Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution." - }, - "displayName": { - "type": "string", - "description": "Display name of job." - }, - "description": { - "type": "string", - "description": "The asset description text." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." - }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "The asset property dictionary." - }, - "codeId": { - "type": "string", - "description": "Code asset reference." - }, - "computeId": { - "type": "string", - "description": "Compute resource ID." - }, - "inputs": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Input" - }, - "description": "Mapping of input data bindings used in the job." - }, - "outputs": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Output" - }, - "description": "Mapping of output data bindings used in the job." - }, - "environmentVariables": { + "description": "Storage queue." + } + }, + "description": "The structure for keeping storage queue name and URI." + }, + "AzureFunctionDefinition": { + "type": "object", + "required": [ + "function", + "input_binding", + "output_binding" + ], + "properties": { + "function": { "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Environment variables included in the job." - }, - "resources": { - "allOf": [ - { - "$ref": "#/components/schemas/JobResourceConfiguration" - } - ], - "description": "Compute Resource configuration for the job." - }, - "gpuCount": { - "type": "integer", - "format": "int32", - "description": "Number of GPUs requested by the training job." - }, - "distribution": { - "allOf": [ - { - "$ref": "#/components/schemas/DistributionConfiguration" + "properties": { + "name": { + "type": "string", + "description": "The name of the function to be called." + }, + "description": { + "type": "string", + "description": "A description of what the function does, used by the model to choose when and how to call the function." + }, + "parameters": { + "type": "object", + "additionalProperties": {}, + "description": "The parameters the functions accepts, described as a JSON Schema object." } + }, + "required": [ + "name", + "parameters" ], - "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + "description": "The definition of azure function and its parameters." }, - "limits": { + "input_binding": { "allOf": [ { - "$ref": "#/components/schemas/CommandJobLimits" + "$ref": "#/components/schemas/AzureFunctionBinding" } ], - "description": "Command Job limit." + "description": "Input storage queue. The queue storage trigger runs a function as messages are added to it." }, - "queueSettings": { + "output_binding": { "allOf": [ { - "$ref": "#/components/schemas/QueueSettings" + "$ref": "#/components/schemas/AzureFunctionBinding" } ], - "description": "Queue settings for the job." - }, - "userAssignedIdentityId": { - "type": "string", - "description": "user-assigned managed identity" - }, - "status": { - "type": "string", - "description": "Status of the job.", - "readOnly": true + "description": "Output storage queue. The function writes output to this queue when the input items are processed." } }, - "allOf": [ - { - "$ref": "#/components/schemas/JobProperties" - } - ], - "description": "Properties of a Command Job." + "description": "The definition of Azure function." }, - "CommandJobLimits": { + "AzureFunctionStorageQueue": { "type": "object", "required": [ - "jobLimitsType" + "queue_service_endpoint", + "queue_name" ], "properties": { - "jobLimitsType": { + "queue_service_endpoint": { "type": "string", - "enum": [ - "Command" - ], - "description": "JobLimit type." + "description": "URI to the Azure Storage Queue service allowing you to manipulate a queue." }, - "timeout": { + "queue_name": { "type": "string", - "format": "duration", - "description": "The max run duration in ISO 8601 format, after which the job will be cancelled. Only supports duration with precision as low as Seconds." + "description": "The name of an Azure function storage queue." } }, - "description": "Command Job limit class." + "description": "The structure for keeping storage queue name and URI." }, - "CompletionMessageToolCallChunk": { + "AzureFunctionTool": { "type": "object", "required": [ - "id", - "type" + "type", + "azure_function" ], "properties": { - "id": { - "type": "string", - "description": "The Id for the tool call." - }, "type": { "type": "string", "enum": [ - "function" + "azure_function" ], - "description": "The type of tool call, which is always \"function\"." + "description": "The object type, which is always 'browser_automation'." }, - "function": { + "azure_function": { "allOf": [ { - "$ref": "#/components/schemas/FunctionToolCall" + "$ref": "#/components/schemas/AzureFunctionDefinition" } ], - "description": "Details of the function tool call, if applicable." + "description": "The Azure Function Tool definition." } }, - "description": "Tool call details within a message." + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Tool" + } + ], + "description": "The input definition information for an Azure Function Tool, as used to configure an Agent." }, - "Connection": { + "AzureFunctionToolCall": { "type": "object", "required": [ - "name", - "id", "type", - "target", - "isDefault", - "credentials", - "metadata" + "call_id", + "name", + "arguments", + "status" ], "properties": { + "type": { + "type": "string", + "enum": [ + "azure_function_call" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, "name": { "type": "string", - "description": "The friendly name of the connection, provided by the user.", - "readOnly": true + "description": "The name of the Azure Function being called." }, - "id": { + "arguments": { "type": "string", - "description": "A unique identifier for the connection, generated by the service", - "readOnly": true + "description": "A JSON string of the arguments to pass to the tool." }, - "type": { + "status": { "allOf": [ { - "$ref": "#/components/schemas/ConnectionType" + "$ref": "#/components/schemas/ToolCallStatus" } ], - "description": "Category of the connection", - "readOnly": true + "description": "The status of the tool call." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.OutputItem" + } + ], + "description": "An Azure Function tool call." + }, + "AzureFunctionToolCallOutput": { + "type": "object", + "required": [ + "type", + "call_id", + "name", + "status" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "azure_function_call_output" + ] }, - "target": { + "call_id": { "type": "string", - "description": "The connection URL to be used for this service", - "readOnly": true + "description": "The unique ID of the tool call generated by the model." }, - "isDefault": { - "type": "boolean", - "description": "Whether the connection is tagged as the default connection of its type", - "readOnly": true + "name": { + "type": "string", + "description": "The name of the Azure Function that was called." }, - "credentials": { + "output": { "allOf": [ { - "$ref": "#/components/schemas/BaseCredentials" + "$ref": "#/components/schemas/ToolCallOutputContent" } ], - "description": "The credentials used by the connection", - "readOnly": true + "description": "The output from the Azure Function tool call." }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Metadata of the connection", - "readOnly": true + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." } }, - "description": "Response from the list and get connections operations" - }, - "ConnectionType": { - "anyOf": [ - { - "type": "string" - }, + "allOf": [ { - "type": "string", - "enum": [ - "AzureOpenAI", - "AzureBlob", - "AzureStorageAccount", - "CognitiveSearch", - "CosmosDB", - "ApiKey", - "AppConfig", - "AppInsights", - "CustomKeys", - "RemoteTool_Preview" - ] + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "The Type (or category) of the connection" + "description": "The output of an Azure Function tool call." }, - "ContainerAppAgentDefinition": { + "AzureOpenAIModelConfiguration": { "type": "object", "required": [ - "kind", - "container_protocol_versions", - "container_app_resource_id", - "ingress_subdomain_suffix" + "type", + "modelDeploymentName" ], "properties": { - "kind": { + "type": { "type": "string", "enum": [ - "container_app" - ] - }, - "container_protocol_versions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProtocolVersionRecord" - }, - "description": "The protocols that the agent supports for ingress communication of the containers.", - "example": [ - { - "protocol": "responses", - "version": "v0.1.1" - }, - { - "protocol": "a2a", - "version": "v0.3.0" - } + "AzureOpenAIModel" ] }, - "container_app_resource_id": { - "type": "string", - "description": "The resource ID of the Azure Container App that hosts this agent. Not mutable across versions." - }, - "ingress_subdomain_suffix": { + "modelDeploymentName": { "type": "string", - "description": "The suffix to apply to the app subdomain when sending ingress to the agent. This can be a label (e.g., '---current'), a specific revision (e.g., '--0000001'), or empty to use the default endpoint for the container app.", - "example": "--0000001" + "description": "Deployment name for AOAI model. Example: gpt-4o if in AIServices or connection based `connection_name/deployment_name` (e.g. `my-aoai-connection/gpt-4o`)." } }, "allOf": [ { - "$ref": "#/components/schemas/AgentDefinition" + "$ref": "#/components/schemas/TargetConfig" } ], - "description": "The container app agent definition.", - "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" - ] - } + "description": "Azure OpenAI model configuration. The API version would be selected by the service for querying the model." }, - "ContainerDetails": { + "BaseCredentials": { "type": "object", "required": [ - "provisioning_state", - "state", - "health_state", - "replicas", - "updated_on" + "type" ], "properties": { - "provisioning_state": { - "type": "string", - "description": "The provisioning state of the container." - }, - "provisioning_error": { - "type": "string", - "description": "The provisioning error of the container, if any." - }, - "state": { - "type": "string", - "description": "The state of the container." - }, - "health_state": { - "type": "string", - "description": "The health state of the container." - }, - "replicas": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ContainerReplica" - }, - "description": "The list of replicas in the container." - }, - "updated_on": { - "type": "string", - "format": "date-time", - "description": "The last update time of the container." + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/CredentialType" + } + ], + "description": "The type of credential used by the connection", + "readOnly": true } }, - "description": "Detailed information about the container.", - "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" - ] - } + "discriminator": { + "propertyName": "type", + "mapping": { + "ApiKey": "#/components/schemas/ApiKeyCredentials", + "AAD": "#/components/schemas/EntraIDCredentials", + "CustomKeys": "#/components/schemas/CustomCredential", + "SAS": "#/components/schemas/SASCredentials", + "None": "#/components/schemas/NoAuthenticationCredentials", + "AgenticIdentityToken_Preview": "#/components/schemas/AgenticIdentityPreviewCredentials" + } + }, + "description": "A base class for connection credentials" }, - "ContainerLogKind": { - "type": "string", - "enum": [ - "console", - "system" + "BenchmarkName": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "builtin.gpqa_diamond", + "builtin.bbeh", + "builtin.bigbenchhard", + "builtin.frontierscience", + "builtin.musr", + "builtin.truthful_qa", + "builtin.inspect_ai.gpqa_diamond", + "builtin.inspect_ai.chembench", + "builtin.inspect_ai.aime_2025", + "builtin.inspect_ai.musr" + ] + } ], - "description": "The type of logs to stream from a container.", - "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" - ] - } + "description": "The set of available benchmark specifications." }, - "ContainerReplica": { + "BingCustomSearchConfiguration": { "type": "object", "required": [ - "name", - "state", - "container_state" + "project_connection_id", + "instance_name" ], "properties": { "name": { "type": "string", - "description": "The name of the replica." + "description": "Optional user-defined name for this tool or configuration." }, - "state": { + "description": { "type": "string", - "description": "The state of the replica." + "description": "Optional user-defined description for this tool or configuration." }, - "container_state": { + "project_connection_id": { "type": "string", - "description": "The container state of the replica." - } - }, - "description": "Information about a container replica.", - "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" - ] - } - }, - "ContentFilterResult": { - "type": "object", - "required": [ - "blocked", - "source_type", - "content_filter_results" - ], - "properties": { - "blocked": { - "type": "boolean", - "description": "Whether the content was blocked by the content filter." + "description": "Project connection id for grounding with bing search" }, - "source_type": { + "instance_name": { "type": "string", - "description": "The source type of the content filter evaluation (e.g., 'prompt', 'response', 'pre_tool_call', 'post_tool_call')." + "description": "Name of the custom configuration instance given to config." }, - "content_filter_results": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterResultsForResponses" - } - ], - "description": "The content filter results for this evaluation." + "market": { + "type": "string", + "description": "The market where the results come from." }, - "tool_call_id": { + "set_lang": { "type": "string", - "description": "The ID of the tool call associated with this content filter result, if applicable." + "description": "The language to use for user interface strings when calling Bing API." + }, + "count": { + "type": "integer", + "format": "int64", + "description": "The number of search results to return in the bing api response" + }, + "freshness": { + "type": "string", + "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." } }, - "description": "A content filter evaluation result for a specific source in the response." + "description": "A bing custom search configuration." }, - "ContinuousEvaluationRuleAction": { + "BingCustomSearchPreviewTool": { "type": "object", "required": [ "type", - "evalId" + "bing_custom_search_preview" ], "properties": { "type": { "type": "string", "enum": [ - "continuousEvaluation" - ] + "bing_custom_search_preview" + ], + "description": "The object type, which is always 'bing_custom_search_preview'." }, - "evalId": { + "name": { "type": "string", - "description": "Eval Id to add continuous evaluation runs to." + "description": "Optional user-defined name for this tool or configuration." }, - "maxHourlyRuns": { - "type": "integer", - "format": "int32", - "description": "Maximum number of evaluation runs allowed per hour." + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "bing_custom_search_preview": { + "allOf": [ + { + "$ref": "#/components/schemas/BingCustomSearchToolParameters" + } + ], + "description": "The bing custom search tool parameters." } }, "allOf": [ { - "$ref": "#/components/schemas/EvaluationRuleAction" + "$ref": "#/components/schemas/OpenAI.Tool" } ], - "description": "Evaluation rule action for continuous evaluation." + "description": "The input definition information for a Bing custom search tool as used to configure an agent." }, - "CosmosDBIndex": { + "BingCustomSearchToolCall": { "type": "object", "required": [ - "type" + "type", + "call_id", + "arguments", + "status" ], "properties": { "type": { "type": "string", "enum": [ - "CosmosDBNoSqlVectorStore" + "bing_custom_search_preview_call" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "arguments": { + "type": "string", + "description": "A JSON string of the arguments to pass to the tool." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } ], - "description": "Type of index" + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/Index" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "CosmosDB Vector Store Index Definition" + "description": "A Bing custom search tool call." }, - "CosmosDBIndexUpdate": { + "BingCustomSearchToolCallOutput": { "type": "object", "required": [ - "type" + "type", + "call_id", + "status" ], "properties": { "type": { "type": "string", "enum": [ - "CosmosDBNoSqlVectorStore" + "bing_custom_search_preview_call_output" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "output": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallOutputContent" + } ], - "description": "Type of index" + "description": "The output from the Bing custom search tool call." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/IndexUpdate" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "CosmosDB Vector Store Index Definition" + "description": "The output of a Bing custom search tool call." }, - "CreateAgentFromManifestRequest": { + "BingCustomSearchToolParameters": { "type": "object", "required": [ - "name", - "manifest_id", - "parameter_values" + "search_configurations" ], "properties": { "name": { "type": "string", - "maxLength": 63, - "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" + "description": "Optional user-defined name for this tool or configuration." }, "description": { "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." - }, - "manifest_id": { - "type": "string", - "description": "The manifest ID to import the agent version from." + "description": "Optional user-defined description for this tool or configuration." }, - "parameter_values": { - "type": "object", - "additionalProperties": {}, - "description": "The inputs to the manifest that will result in a fully materialized Agent." + "search_configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BingCustomSearchConfiguration" + }, + "maxItems": 1, + "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." } - } + }, + "description": "The bing custom search tool parameters." }, - "CreateAgentRequest": { + "BingGroundingSearchConfiguration": { "type": "object", "required": [ - "name", - "definition" + "project_connection_id" ], "properties": { "name": { "type": "string", - "maxLength": 63, - "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" + "description": "Optional user-defined name for this tool or configuration." }, "description": { "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." + "description": "Optional user-defined description for this tool or configuration." }, - "definition": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentDefinition" - } - ], - "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", - "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" - ] - } + "project_connection_id": { + "type": "string", + "description": "Project connection id for grounding with bing search" }, - "blueprint_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentBlueprintReference" - } - ], - "description": "The blueprint reference for the agent.", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "market": { + "type": "string", + "description": "The market where the results come from." }, - "agent_endpoint": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentEndpoint" - } - ], - "description": "An optional endpoint configuration. If not specified, a default endpoint configuration will be set for the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "set_lang": { + "type": "string", + "description": "The language to use for user interface strings when calling Bing API." }, - "agent_card": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentCard" - } - ], - "description": "Optional agent card for the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "count": { + "type": "integer", + "format": "int64", + "description": "The number of search results to return in the bing api response" + }, + "freshness": { + "type": "string", + "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." } }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" - ] - } + "description": "Search configuration for Bing Grounding" }, - "CreateAgentSessionRequest": { + "BingGroundingSearchToolParameters": { "type": "object", "required": [ - "version_indicator" + "search_configurations" ], "properties": { - "agent_session_id": { + "name": { "type": "string", - "description": "Optional caller-provided session ID. If specified, it must be unique within the agent endpoint. Auto-generated if omitted." + "description": "Optional user-defined name for this tool or configuration." }, - "version_indicator": { - "allOf": [ - { - "$ref": "#/components/schemas/VersionIndicator" - } - ], - "description": "Determines which agent version backs the session." + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "search_configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BingGroundingSearchConfiguration" + }, + "maxItems": 1, + "description": "The search configurations attached to this tool. There can be a maximum of 1\nsearch configuration resource attached to the tool." } }, - "description": "Request to create a new agent session.", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "The bing grounding search tool parameters." }, - "CreateAgentVersionFromManifestRequest": { + "BingGroundingTool": { "type": "object", "required": [ - "manifest_id", - "parameter_values" + "type", + "bing_grounding" ], "properties": { - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" + "type": { + "type": "string", + "enum": [ + "bing_grounding" + ], + "description": "The object type, which is always 'bing_grounding'." }, - "description": { + "name": { "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." + "description": "Optional user-defined name for this tool or configuration." }, - "manifest_id": { + "description": { "type": "string", - "description": "The manifest ID to import the agent version from." + "description": "Optional user-defined description for this tool or configuration." }, - "parameter_values": { - "type": "object", - "additionalProperties": {}, - "description": "The inputs to the manifest that will result in a fully materialized Agent." + "bing_grounding": { + "allOf": [ + { + "$ref": "#/components/schemas/BingGroundingSearchToolParameters" + } + ], + "description": "The bing grounding search tool parameters." } - } + }, + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Tool" + } + ], + "description": "The input definition information for a bing grounding search tool as used to configure an agent." }, - "CreateAgentVersionRequest": { + "BingGroundingToolCall": { "type": "object", "required": [ - "definition" + "type", + "call_id", + "arguments", + "status" ], "properties": { - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" + "type": { + "type": "string", + "enum": [ + "bing_grounding_call" + ] }, - "description": { + "call_id": { "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." + "description": "The unique ID of the tool call generated by the model." }, - "definition": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentDefinition" - } - ], - "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", - "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" - ] - } + "arguments": { + "type": "string", + "description": "A JSON string of the arguments to pass to the tool." }, - "blueprint_reference": { + "status": { "allOf": [ { - "$ref": "#/components/schemas/AgentBlueprintReference" + "$ref": "#/components/schemas/ToolCallStatus" } ], - "description": "The blueprint reference for the agent.", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "The status of the tool call." } }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" - ] - } + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.OutputItem" + } + ], + "description": "A Bing grounding tool call." }, - "CreateEvalRequest": { + "BingGroundingToolCallOutput": { "type": "object", "required": [ - "data_source_config", - "testing_criteria" + "type", + "call_id", + "status" ], "properties": { - "name": { + "type": { "type": "string", - "description": "The name of the evaluation." + "enum": [ + "bing_grounding_call_output" + ] }, - "metadata": { - "type": "object", + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "output": { "allOf": [ { - "$ref": "#/components/schemas/OpenAI.Metadata" + "$ref": "#/components/schemas/ToolCallOutputContent" } ], - "nullable": true + "description": "The output from the Bing grounding tool call." }, - "data_source_config": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.CreateEvalCustomDataSourceConfig" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalLogsDataSourceConfig" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalStoredCompletionsDataSourceConfig" - }, - { - "$ref": "#/components/schemas/AzureAIDataSourceConfig" - }, + "status": { + "allOf": [ { - "$ref": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" + "$ref": "#/components/schemas/ToolCallStatus" } ], - "description": "The configuration for the data source used for the evaluation runs. Dictates the schema of the data used in the evaluation." - }, - "testing_criteria": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/OpenAI.EvalGraderLabelModel" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderStringCheck" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderTextSimilarity" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderPython" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderScoreModel" - }, - { - "$ref": "#/components/schemas/EvalGraderAzureAIEvaluator" - }, - { - "$ref": "#/components/schemas/EvalGraderInspectAI" - } - ] - }, - "description": "A list of graders for all eval runs in this group. Graders can reference variables in the data source using double curly braces notation, like `{{item.variable_name}}`. To reference the model's output, use the `sample` namespace (ie, `{{sample.output_text}}`)." - }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." + "description": "The status of the tool call." } }, - "title": "CreateEvalRequest" + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.OutputItem" + } + ], + "description": "The output of a Bing grounding tool call." }, - "CreateEvalRunRequest": { + "BlobReference": { "type": "object", "required": [ - "data_source" + "blobUri", + "storageAccountArmId", + "credential" ], "properties": { - "name": { + "blobUri": { "type": "string", - "description": "The name of the run." + "format": "uri", + "description": "Blob URI path for client to upload data. Example: `https://blob.windows.core.net/Container/Path`" }, - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true + "storageAccountArmId": { + "type": "string", + "description": "ARM ID of the storage account to use." }, - "data_source": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" - }, + "credential": { + "allOf": [ { - "$ref": "#/components/schemas/EvalRunDataSource" + "$ref": "#/components/schemas/SasCredential" } ], - "description": "Details about the run's data source." - }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." + "description": "Credential info to access the storage account." } }, - "title": "CreateEvalRunRequest" + "description": "Blob reference details." }, - "CreateOrUpdateManagedAgentIdentityBlueprintRequest": { + "BotServiceAuthorizationScheme": { "type": "object", "required": [ - "name" + "type" ], "properties": { - "name": { + "type": { "type": "string", - "maxLength": 63, - "description": "The unique name that identifies the managed agent identity blueprint.\nName can be used to retrieve/update/delete the managed agent identity blueprint.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." + "enum": [ + "BotService" + ] } }, + "allOf": [ + { + "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" + } + ], "x-ms-foundry-meta": { "required_previews": [ "AgentEndpoints=V1Preview" ] } - }, - "CreatedBy": { - "type": "object", - "properties": { - "agent": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentId" - } - ], - "description": "The agent that created the item." - }, - "response_id": { - "type": "string", - "description": "The response on which the item is created." - } - } - }, - "CredentialType": { - "anyOf": [ - { - "type": "string" - }, - { + }, + "BotServiceRbacAuthorizationScheme": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { "type": "string", "enum": [ - "ApiKey", - "AAD", - "SAS", - "CustomKeys", - "None", - "AgenticIdentityToken_Preview" + "BotServiceRbac" ] } + }, + "allOf": [ + { + "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" + } ], - "description": "The credential type used by the connection" + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "CronTrigger": { + "BrowserAutomationPreviewTool": { "type": "object", "required": [ "type", - "expression" + "browser_automation_preview" ], "properties": { "type": { "type": "string", "enum": [ - "Cron" - ] - }, - "expression": { - "type": "string", - "description": "Cron expression that defines the schedule frequency." + "browser_automation_preview" + ], + "description": "The object type, which is always 'browser_automation_preview'." }, - "timeZone": { + "name": { "type": "string", - "description": "Time zone for the cron schedule.", - "default": "UTC" + "description": "Optional user-defined name for this tool or configuration." }, - "startTime": { + "description": { "type": "string", - "description": "Start time for the cron schedule in ISO 8601 format." + "description": "Optional user-defined description for this tool or configuration." }, - "endTime": { - "type": "string", - "description": "End time for the cron schedule in ISO 8601 format." + "browser_automation_preview": { + "allOf": [ + { + "$ref": "#/components/schemas/BrowserAutomationToolParameters" + } + ], + "description": "The Browser Automation Tool parameters." } }, "allOf": [ { - "$ref": "#/components/schemas/Trigger" + "$ref": "#/components/schemas/OpenAI.Tool" } ], - "description": "Cron based trigger." + "description": "The input definition information for a Browser Automation Tool, as used to configure an Agent." }, - "CustomCredential": { + "BrowserAutomationToolCall": { "type": "object", "required": [ - "type" + "type", + "call_id", + "arguments", + "status" ], "properties": { "type": { "type": "string", "enum": [ - "CustomKeys" + "browser_automation_preview_call" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "arguments": { + "type": "string", + "description": "A JSON string of the arguments to pass to the tool." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } ], - "description": "The credential type", - "readOnly": true + "description": "The status of the tool call." } }, - "additionalProperties": { - "type": "string" - }, "allOf": [ { - "$ref": "#/components/schemas/BaseCredentials" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "Custom credential definition" + "description": "A browser automation tool call." }, - "DailyRecurrenceSchedule": { + "BrowserAutomationToolCallOutput": { "type": "object", "required": [ "type", - "hours" + "call_id", + "status" ], "properties": { "type": { "type": "string", "enum": [ - "Daily" + "browser_automation_preview_call_output" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "output": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallOutputContent" + } ], - "description": "Daily recurrence type." + "description": "The output from the browser automation tool call." }, - "hours": { - "type": "array", - "items": { - "type": "integer", - "format": "int32" - }, - "description": "Hours for the recurrence schedule." + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/RecurrenceSchedule" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "Daily recurrence schedule." + "description": "The output of a browser automation tool call." }, - "DataSourceConfig": { + "BrowserAutomationToolConnectionParameters": { "type": "object", "required": [ - "type", - "schema" + "project_connection_id" ], "properties": { - "type": { + "name": { "type": "string", - "description": "The data source type discriminator." + "description": "Optional user-defined name for this tool or configuration." }, - "schema": { - "type": "object", - "additionalProperties": {}, - "description": "The overall object JSON schema for the run data source items." + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "project_connection_id": { + "type": "string", + "description": "The ID of the project connection to your Azure Playwright resource." } }, - "discriminator": { - "propertyName": "type", - "mapping": {} - }, - "description": "Base class for run data sources with discriminator support." + "description": "Definition of input parameters for the connection used by the Browser Automation Tool." }, - "DatasetType": { - "anyOf": [ - { - "type": "string" + "BrowserAutomationToolParameters": { + "type": "object", + "required": [ + "connection" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional user-defined name for this tool or configuration." }, - { + "description": { "type": "string", - "enum": [ - "uri_file", - "uri_folder" - ] + "description": "Optional user-defined description for this tool or configuration." + }, + "connection": { + "allOf": [ + { + "$ref": "#/components/schemas/BrowserAutomationToolConnectionParameters" + } + ], + "description": "The project connection parameters associated with the Browser Automation Tool." } - ], - "description": "Enum to determine the type of data." + }, + "description": "Definition of input parameters for the Browser Automation Tool." }, - "DatasetVersion": { + "CaptureStructuredOutputsTool": { "type": "object", "required": [ - "dataUri", "type", - "name", - "version" + "outputs" ], "properties": { - "dataUri": { + "type": { "type": "string", - "minLength": 1, - "pattern": "[a-zA-Z0-9_]", - "description": "URI of the data ([example](https://go.microsoft.com/fwlink/?linkid=2202330))" + "enum": [ + "capture_structured_outputs" + ], + "description": "The type of the tool. Always `capture_structured_outputs`." }, - "type": { + "outputs": { "allOf": [ { - "$ref": "#/components/schemas/DatasetType" + "$ref": "#/components/schemas/StructuredOutputDefinition" } ], - "description": "Dataset type" - }, - "isReference": { - "type": "boolean", - "description": "Indicates if the dataset holds a reference to the storage, or the dataset manages storage itself. If true, the underlying data will not be deleted when the dataset version is deleted", - "readOnly": true - }, - "connectionName": { - "type": "string", - "description": "The Azure Storage Account connection name. Required if startPendingUploadVersion was not called before creating the Dataset" - }, - "id": { - "type": "string", - "description": "Asset ID, a unique identifier for the asset", - "readOnly": true + "description": "The structured outputs to capture from the model." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Tool" + } + ], + "description": "A tool for capturing structured outputs" + }, + "ChartCoordinate": { + "type": "object", + "required": [ + "x", + "y", + "size" + ], + "properties": { + "x": { + "type": "integer", + "format": "int32", + "description": "X-axis coordinate." }, - "name": { - "type": "string", - "description": "The name of the resource", - "readOnly": true + "y": { + "type": "integer", + "format": "int32", + "description": "Y-axis coordinate." }, - "version": { - "type": "string", - "description": "The version of the resource", - "readOnly": true + "size": { + "type": "integer", + "format": "int32", + "description": "Size of the chart element." } }, - "discriminator": { - "propertyName": "type", - "mapping": { - "uri_file": "#/components/schemas/FileDatasetVersion", - "uri_folder": "#/components/schemas/FolderDatasetVersion" + "description": "Coordinates for the analysis chart." + }, + "ChatSummaryMemoryItem": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "chat_summary" + ], + "description": "The kind of the memory item." } }, - "description": "DatasetVersion Definition" + "allOf": [ + { + "$ref": "#/components/schemas/MemoryItem" + } + ], + "description": "A memory item containing a summary extracted from conversations.", + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } }, - "DatasetVersionUpdate": { + "ClusterInsightResult": { "type": "object", "required": [ - "type" + "summary", + "clusters" ], "properties": { - "type": { + "summary": { "allOf": [ { - "$ref": "#/components/schemas/DatasetType" + "$ref": "#/components/schemas/InsightSummary" } ], - "description": "Dataset type" + "description": "Summary of the insights report." }, - "description": { - "type": "string", - "description": "The asset description text." + "clusters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InsightCluster" + }, + "description": "List of clusters identified in the insights." }, - "tags": { + "coordinates": { "type": "object", "additionalProperties": { - "type": "string" + "$ref": "#/components/schemas/ChartCoordinate" }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "description": " Optional mapping of IDs to 2D coordinates used by the UX for visualization.\n\n The map keys are string identifiers (for example, a cluster id or a sample id)\n and the values are the coordinates and visual size for rendering on a 2D chart.\n\n This property is omitted unless the client requests coordinates (for example,\n by passing `includeCoordinates=true` as a query parameter).\n\n Example:\n ```\n {\n \"cluster-1\": { \"x\": 12, \"y\": 34, \"size\": 8 },\n \"sample-123\": { \"x\": 18, \"y\": 22, \"size\": 4 }\n }\n ```\n\n Coordinates are intended only for client-side visualization and do not\n modify the canonical insights results." } }, - "discriminator": { - "propertyName": "type", - "mapping": { - "uri_file": "#/components/schemas/FileDatasetVersionUpdate", - "uri_folder": "#/components/schemas/FolderDatasetVersionUpdate" + "description": "Insights from the cluster analysis." + }, + "ClusterTokenUsage": { + "type": "object", + "required": [ + "inputTokenUsage", + "outputTokenUsage", + "totalTokenUsage" + ], + "properties": { + "inputTokenUsage": { + "type": "integer", + "format": "int32", + "description": "input token usage" + }, + "outputTokenUsage": { + "type": "integer", + "format": "int32", + "description": "output token usage" + }, + "totalTokenUsage": { + "type": "integer", + "format": "int32", + "description": "total token usage" } }, - "description": "DatasetVersion Definition" + "description": "Token usage for cluster analysis" }, - "DayOfWeek": { - "anyOf": [ - { - "type": "string" - }, - { + "CodeBasedEvaluatorDefinition": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { "type": "string", "enum": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" + "code" ] + }, + "code_text": { + "type": "string", + "description": "Inline code text for the evaluator" + }, + "entry_point": { + "type": "string", + "description": "The entry point Python file name for the uploaded evaluator code (e.g. 'answer_length_evaluator.py')" + }, + "image_tag": { + "type": "string", + "description": "The container image tag to use for evaluator code execution" + }, + "blob_uri": { + "type": "string", + "description": "The blob URI for the evaluator storage" + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/EvaluatorDefinition" } ], - "description": "Days of the week for recurrence schedule." + "description": "Code-based evaluator definition using python code" }, - "DeleteAgentResponse": { + "CompletionMessageToolCallChunk": { "type": "object", "required": [ - "object", - "name", - "deleted" + "id", + "type" ], "properties": { - "object": { + "id": { "type": "string", - "enum": [ - "agent.deleted" - ], - "description": "The object type. Always 'agent.deleted'." + "description": "The Id for the tool call." }, - "name": { + "type": { "type": "string", - "description": "The name of the agent." + "enum": [ + "function" + ], + "description": "The type of tool call, which is always \"function\"." }, - "deleted": { - "type": "boolean", - "description": "Whether the agent was successfully deleted." + "function": { + "allOf": [ + { + "$ref": "#/components/schemas/FunctionToolCall" + } + ], + "description": "Details of the function tool call, if applicable." } }, - "description": "A deleted agent Object" + "description": "Tool call details within a message." }, - "DeleteAgentVersionResponse": { + "Connection": { "type": "object", "required": [ - "object", "name", - "version", - "deleted" + "id", + "type", + "target", + "isDefault", + "credentials", + "metadata" ], "properties": { - "object": { + "name": { "type": "string", - "enum": [ - "agent.version.deleted" - ], - "description": "The object type. Always 'agent.version.deleted'." + "description": "The friendly name of the connection, provided by the user.", + "readOnly": true }, - "name": { + "id": { "type": "string", - "description": "The name of the agent." + "description": "A unique identifier for the connection, generated by the service", + "readOnly": true }, - "version": { + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/ConnectionType" + } + ], + "description": "Category of the connection", + "readOnly": true + }, + "target": { "type": "string", - "description": "The version identifier of the agent." + "description": "The connection URL to be used for this service", + "readOnly": true }, - "deleted": { + "isDefault": { "type": "boolean", - "description": "Whether the agent was successfully deleted." + "description": "Whether the connection is tagged as the default connection of its type", + "readOnly": true + }, + "credentials": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseCredentials" + } + ], + "description": "The credentials used by the connection", + "readOnly": true + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Metadata of the connection", + "readOnly": true } }, - "description": "A deleted agent version Object" + "description": "Response from the list and get connections operations" + }, + "ConnectionType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "AzureOpenAI", + "AzureBlob", + "AzureStorageAccount", + "CognitiveSearch", + "CosmosDB", + "ApiKey", + "AppConfig", + "AppInsights", + "CustomKeys", + "RemoteTool_Preview" + ] + } + ], + "description": "The Type (or category) of the connection" }, - "DeleteEvalResponse": { + "ContainerAppAgentDefinition": { "type": "object", "required": [ - "object", - "eval_id", - "deleted" + "kind", + "container_protocol_versions", + "container_app_resource_id", + "ingress_subdomain_suffix" ], "properties": { - "object": { + "kind": { "type": "string", "enum": [ - "eval.deleted" - ], - "description": "The object type. Always 'eval.deleted'." + "container_app" + ] }, - "eval_id": { - "type": "string", - "description": "id of the eval." + "container_protocol_versions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProtocolVersionRecord" + }, + "description": "The protocols that the agent supports for ingress communication of the containers.", + "example": [ + { + "protocol": "responses", + "version": "v0.1.1" + }, + { + "protocol": "a2a", + "version": "v0.3.0" + } + ] }, - "deleted": { - "type": "boolean", - "description": "Whether the eval was successfully deleted." - } - }, - "description": "A deleted evaluation Object" - }, - "DeleteEvalRunResponse": { - "type": "object", - "properties": { - "object": { + "container_app_resource_id": { "type": "string", - "enum": [ - "eval.deleted" - ], - "description": "The object type. Always 'eval.deleted'." + "description": "The resource ID of the Azure Container App that hosts this agent. Not mutable across versions." }, - "run_id": { + "ingress_subdomain_suffix": { "type": "string", - "description": "id of the eval." - }, - "deleted": { - "type": "boolean", - "description": "Whether the eval was successfully deleted." + "description": "The suffix to apply to the app subdomain when sending ingress to the agent. This can be a label (e.g., '---current'), a specific revision (e.g., '--0000001'), or empty to use the default endpoint for the container app.", + "example": "--0000001" } }, - "description": "A deleted evaluation run Object." + "allOf": [ + { + "$ref": "#/components/schemas/AgentDefinition" + } + ], + "description": "The container app agent definition.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } }, - "DeleteMemoryStoreResponse": { + "ContainerDetails": { "type": "object", "required": [ - "object", - "name", - "deleted" + "provisioning_state", + "state", + "health_state", + "replicas", + "updated_on" ], "properties": { - "object": { + "provisioning_state": { "type": "string", - "enum": [ - "memory_store.deleted" - ], - "description": "The object type. Always 'memory_store.deleted'." + "description": "The provisioning state of the container." }, - "name": { + "provisioning_error": { "type": "string", - "description": "The name of the memory store." + "description": "The provisioning error of the container, if any." }, - "deleted": { - "type": "boolean", - "description": "Whether the memory store was successfully deleted." + "state": { + "type": "string", + "description": "The state of the container." + }, + "health_state": { + "type": "string", + "description": "The health state of the container." + }, + "replicas": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ContainerReplica" + }, + "description": "The list of replicas in the container." + }, + "updated_on": { + "type": "string", + "format": "date-time", + "description": "The last update time of the container." } }, + "description": "Detailed information about the container.", "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" + "required_previews": [ + "ContainerAgents=V1Preview" ] } }, - "DeleteResponseResult": { + "ContainerLogKind": { + "type": "string", + "enum": [ + "console", + "system" + ], + "description": "The type of logs to stream from a container.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } + }, + "ContainerReplica": { "type": "object", "required": [ - "id", - "object", - "deleted" + "name", + "state", + "container_state" ], "properties": { - "id": { + "name": { "type": "string", - "description": "The operation ID." + "description": "The name of the replica." }, - "object": { + "state": { "type": "string", - "enum": [ - "response" - ], - "description": "Always return 'response'." + "description": "The state of the replica." }, - "deleted": { - "type": "boolean", - "enum": [ - true - ], - "description": "Always return true" + "container_state": { + "type": "string", + "description": "The container state of the replica." } }, - "description": "The result of a delete response operation." + "description": "Information about a container replica.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } }, - "DeleteSkillResponse": { + "ContentFilterResult": { "type": "object", "required": [ - "object", - "name", - "deleted" + "blocked", + "source_type", + "content_filter_results" ], "properties": { - "object": { + "blocked": { + "type": "boolean", + "description": "Whether the content was blocked by the content filter." + }, + "source_type": { + "type": "string", + "description": "The source type of the content filter evaluation (e.g., 'prompt', 'response', 'pre_tool_call', 'post_tool_call')." + }, + "content_filter_results": { "allOf": [ { - "$ref": "#/components/schemas/SkillObjectType" + "$ref": "#/components/schemas/AzureContentFilterResultsForResponses" } ], - "description": "The object type. Always 'skill.deleted'.", - "default": "skill.deleted" + "description": "The content filter results for this evaluation." }, - "name": { + "tool_call_id": { "type": "string", - "description": "The unique name of the skill." - }, - "deleted": { - "type": "boolean", - "description": "Whether the skill was successfully deleted." + "description": "The ID of the tool call associated with this content filter result, if applicable." } }, - "description": "A deleted skill Object" + "description": "A content filter evaluation result for a specific source in the response." }, - "DeleteToolsetResponse": { + "ContinuousEvaluationRuleAction": { "type": "object", "required": [ - "object", - "name", - "deleted" + "type", + "evalId" ], "properties": { - "object": { + "type": { "type": "string", "enum": [ - "toolset.deleted" - ], - "description": "The object type. Always 'toolset.deleted'." + "continuousEvaluation" + ] }, - "name": { + "evalId": { "type": "string", - "description": "The name of the toolset." + "description": "Eval Id to add continuous evaluation runs to." }, - "deleted": { - "type": "boolean", - "description": "Whether the toolset was successfully deleted." + "maxHourlyRuns": { + "type": "integer", + "format": "int32", + "description": "Maximum number of evaluation runs allowed per hour." } }, - "description": "Response returned when a toolset is deleted." + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleAction" + } + ], + "description": "Evaluation rule action for continuous evaluation." }, - "Deployment": { + "CosmosDBIndex": { "type": "object", "required": [ - "type", - "name" + "type" ], "properties": { "type": { - "allOf": [ - { - "$ref": "#/components/schemas/DeploymentType" - } - ], - "description": "The type of the deployment" - }, - "name": { "type": "string", - "description": "Name of the deployment", - "readOnly": true - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "ModelDeployment": "#/components/schemas/ModelDeployment" + "enum": [ + "CosmosDBNoSqlVectorStore" + ], + "description": "Type of index" } }, - "description": "Model Deployment Definition" - }, - "DeploymentType": { - "anyOf": [ - { - "type": "string" - }, + "allOf": [ { - "type": "string", - "enum": [ - "ModelDeployment" - ] + "$ref": "#/components/schemas/Index" } - ] + ], + "description": "CosmosDB Vector Store Index Definition" }, - "DeveloperMessage": { + "CosmosDBIndexUpdate": { "type": "object", "required": [ - "role", - "content" + "type" ], "properties": { - "role": { + "type": { "type": "string", "enum": [ - "developer" + "CosmosDBNoSqlVectorStore" ], - "description": "Indicates this is a developer message." - }, - "content": { - "type": "string", - "description": "Content provided by a developer to guide model behavior in an evaluation context." + "description": "Type of index" } }, "allOf": [ { - "$ref": "#/components/schemas/Message" + "$ref": "#/components/schemas/IndexUpdate" } ], - "description": "A message authored by a developer to guide the model during evaluation." + "description": "CosmosDB Vector Store Index Definition" }, - "DistributionConfiguration": { + "CreateAgentFromManifestRequest": { "type": "object", "required": [ - "distributionType" + "name", + "manifest_id", + "parameter_values" ], "properties": { - "distributionType": { + "name": { + "type": "string", + "maxLength": 63, + "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" + }, + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the agent." + }, + "manifest_id": { "type": "string", - "description": "Specifies the type of distribution framework." + "description": "The manifest ID to import the agent version from." + }, + "parameter_values": { + "type": "object", + "additionalProperties": {}, + "description": "The inputs to the manifest that will result in a fully materialized Agent." } - }, - "discriminator": { - "propertyName": "distributionType", - "mapping": { - "PyTorch": "#/components/schemas/PyTorchDistribution", - "Mpi": "#/components/schemas/MpiDistribution", - "TensorFlow": "#/components/schemas/TensorFlowDistribution" + } + }, + "CreateAgentRequest": { + "type": "object", + "required": [ + "name", + "definition" + ], + "properties": { + "name": { + "type": "string", + "maxLength": 63, + "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" + }, + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the agent." + }, + "definition": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentDefinition" + } + ], + "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } + }, + "blueprint_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentBlueprintReference" + } + ], + "description": "The blueprint reference for the agent.", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "agent_endpoint": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentEndpoint" + } + ], + "description": "An optional endpoint configuration. If not specified, a default endpoint configuration will be set for the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "agent_card": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentCard" + } + ], + "description": "Optional agent card for the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } } }, - "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } }, - "EntraAuthorizationScheme": { + "CreateAgentSessionRequest": { "type": "object", "required": [ - "type", - "isolation_key_source" + "version_indicator" ], "properties": { - "type": { + "agent_session_id": { "type": "string", - "enum": [ - "Entra" - ] + "description": "Optional caller-provided session ID. If specified, it must be unique within the agent endpoint. Auto-generated if omitted." }, - "isolation_key_source": { - "$ref": "#/components/schemas/IsolationKeySource" + "version_indicator": { + "allOf": [ + { + "$ref": "#/components/schemas/VersionIndicator" + } + ], + "description": "Determines which agent version backs the session." } }, - "allOf": [ - { - "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" - } - ], + "description": "Request to create a new agent session.", "x-ms-foundry-meta": { "required_previews": [ "AgentEndpoints=V1Preview" ] } }, - "EntraIDCredentials": { + "CreateAgentVersionFromManifestRequest": { "type": "object", "required": [ - "type" + "manifest_id", + "parameter_values" ], "properties": { - "type": { + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" + }, + "description": { "type": "string", - "enum": [ - "AAD" - ], - "description": "The credential type", - "readOnly": true - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/BaseCredentials" + "maxLength": 512, + "description": "A human-readable description of the agent." + }, + "manifest_id": { + "type": "string", + "description": "The manifest ID to import the agent version from." + }, + "parameter_values": { + "type": "object", + "additionalProperties": {}, + "description": "The inputs to the manifest that will result in a fully materialized Agent." } - ], - "description": "Entra ID credential definition" + } }, - "EntraIsolationKeySource": { + "CreateAgentVersionRequest": { "type": "object", "required": [ - "kind" + "definition" ], "properties": { - "kind": { + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" + }, + "description": { "type": "string", - "enum": [ - "Entra" - ] + "maxLength": 512, + "description": "A human-readable description of the agent." + }, + "definition": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentDefinition" + } + ], + "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } + }, + "blueprint_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentBlueprintReference" + } + ], + "description": "The blueprint reference for the agent.", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } } }, - "allOf": [ - { - "$ref": "#/components/schemas/IsolationKeySource" - } - ], "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" ] } }, - "Eval": { + "CreateEvalRequest": { "type": "object", "required": [ - "object", - "id", - "name", "data_source_config", - "testing_criteria", - "created_at", - "metadata" + "testing_criteria" ], "properties": { - "object": { - "type": "string", - "enum": [ - "eval" - ], - "description": "The object type.", - "x-stainless-const": true, - "default": "eval" - }, - "id": { - "type": "string", - "description": "Unique identifier for the evaluation." - }, "name": { "type": "string", "description": "The name of the evaluation." }, + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true + }, "data_source_config": { "oneOf": [ { @@ -22655,7 +15897,7 @@ "$ref": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" } ], - "description": "Configuration of data sources used in runs of the evaluation." + "description": "The configuration for the data source used for the evaluation runs. Dictates the schema of the data used in the evaluation." }, "testing_criteria": { "type": "array", @@ -22684,12 +15926,27 @@ } ] }, - "description": "A list of testing criteria." + "description": "A list of graders for all eval runs in this group. Graders can reference variables in the data source using double curly braces notation, like `{{item.variable_name}}`. To reference the model's output, use the `sample` namespace (ie, `{{sample.output_text}}`)." }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "The Unix timestamp (in seconds) for when the eval was created." + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." + } + }, + "title": "CreateEvalRequest" + }, + "CreateEvalRunRequest": { + "type": "object", + "required": [ + "data_source" + ], + "properties": { + "name": { + "type": "string", + "description": "The name of the run." }, "metadata": { "type": "object", @@ -22700,17 +15957,22 @@ ], "nullable": true }, - "modified_at": { - "allOf": [ + "data_source": { + "oneOf": [ { - "$ref": "#/components/schemas/integer" + "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" + }, + { + "$ref": "#/components/schemas/EvalRunDataSource" } ], - "description": "Unix timestamp (in seconds) when the evaluation run was last modified." - }, - "created_by": { - "type": "string", - "description": "the name of the person who created the run." + "description": "Details about the run's data source." }, "properties": { "type": "object", @@ -22720,2153 +15982,2125 @@ "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." } }, - "description": "An Eval object with a data source config and testing criteria.\nAn Eval represents a task to be done for your LLM integration.\nLike:\n- Improve the quality of my chatbot\n- See how well my chatbot handles customer support\n- Check if o4-mini is better at my usecase than gpt-4o", - "title": "Eval", - "x-oaiMeta": { - "name": "The eval object", - "group": "evals", - "example": "{\n \"object\": \"eval\",\n \"id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"data_source_config\": {\n \"type\": \"custom\",\n \"item_schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\"type\": \"string\"},\n },\n \"required\": [\"label\"]\n },\n \"include_sample_schema\": true\n },\n \"testing_criteria\": [\n {\n \"name\": \"My string check grader\",\n \"type\": \"string_check\",\n \"input\": \"{{sample.output_text}}\",\n \"reference\": \"{{item.label}}\",\n \"operation\": \"eq\",\n }\n ],\n \"name\": \"External Data Eval\",\n \"created_at\": 1739314509,\n \"metadata\": {\n \"test\": \"synthetics\",\n }\n}\n" - } + "title": "CreateEvalRunRequest" }, - "EvalCsvFileIdSource": { + "CreateOrUpdateManagedAgentIdentityBlueprintRequest": { "type": "object", "required": [ - "type", - "id" + "name" ], "properties": { - "type": { - "type": "string", - "enum": [ - "file_id" - ], - "description": "The type of source, always `file_id`." - }, - "id": { + "name": { "type": "string", - "description": "The identifier of the uploaded CSV file." + "maxLength": 63, + "description": "The unique name that identifies the managed agent identity blueprint.\nName can be used to retrieve/update/delete the managed agent identity blueprint.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." } }, - "description": "Represents a reference to an uploaded CSV file used as a source for evaluation data." + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "EvalCsvRunDataSource": { + "CreatedBy": { "type": "object", - "required": [ - "type", - "source" - ], "properties": { - "type": { - "type": "string", - "enum": [ - "csv" - ], - "description": "The type of data source, always `csv`." - }, - "source": { + "agent": { "allOf": [ { - "$ref": "#/components/schemas/EvalCsvFileIdSource" + "$ref": "#/components/schemas/AgentId" } ], - "description": "The source of the CSV data, either inline content or a file reference." + "description": "The agent that created the item." + }, + "response_id": { + "type": "string", + "description": "The response on which the item is created." } - }, - "allOf": [ + } + }, + "CredentialType": { + "anyOf": [ { - "$ref": "#/components/schemas/EvalRunDataSource" + "type": "string" + }, + { + "type": "string", + "enum": [ + "ApiKey", + "AAD", + "SAS", + "CustomKeys", + "None", + "AgenticIdentityToken_Preview" + ] } ], - "description": "Represents a CSV data source for evaluation runs." + "description": "The credential type used by the connection" }, - "EvalGraderAzureAIEvaluator": { + "CronTrigger": { "type": "object", "required": [ "type", - "name", - "evaluator_name" + "expression" ], "properties": { "type": { "type": "string", "enum": [ - "azure_ai_evaluator" - ], - "description": "The object type, which is always `azure_ai_evaluator`." + "Cron" + ] }, - "name": { + "expression": { "type": "string", - "description": "The name of the grader." + "description": "Cron expression that defines the schedule frequency." }, - "evaluator_name": { + "timeZone": { "type": "string", - "description": "The name of the evaluator." + "description": "Time zone for the cron schedule.", + "default": "UTC" }, - "evaluator_version": { + "startTime": { "type": "string", - "description": "The version of the evaluator. Latest version if not specified." - }, - "initialization_parameters": { - "type": "object", - "additionalProperties": {}, - "description": "The initialization parameters for the evaluation. Must support structured outputs." + "description": "Start time for the cron schedule in ISO 8601 format." }, - "data_mapping": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "The model to use for the evaluation. Must support structured outputs." + "endTime": { + "type": "string", + "description": "End time for the cron schedule in ISO 8601 format." } }, - "title": "AzureAIEvaluatorGrader" + "allOf": [ + { + "$ref": "#/components/schemas/Trigger" + } + ], + "description": "Cron based trigger." }, - "EvalGraderInspectAI": { + "CustomCredential": { "type": "object", "required": [ - "type", - "name", - "task_name" + "type" ], "properties": { "type": { "type": "string", "enum": [ - "inspect_ai" + "CustomKeys" ], - "description": "The object type, which is always `inspect_ai`." - }, - "name": { - "type": "string", - "description": "The display name of the benchmark." - }, - "task_name": { - "type": "string", - "description": "The inspect_ai task module path (e.g., `inspect_evals/gpqa_diamond`)." + "description": "The credential type", + "readOnly": true } }, - "description": "Grader inspect_ai definition for inspect_ai benchmark evaluators." + "additionalProperties": { + "type": "string" + }, + "allOf": [ + { + "$ref": "#/components/schemas/BaseCredentials" + } + ], + "description": "Custom credential definition" }, - "EvalResult": { + "DailyRecurrenceSchedule": { "type": "object", "required": [ - "name", "type", - "score", - "passed" + "hours" ], "properties": { - "name": { - "type": "string", - "description": "name of the check" - }, "type": { - "type": "string", - "description": "type of the check" - }, - "score": { - "type": "number", - "format": "float", - "description": "score" - }, - "passed": { - "type": "boolean", - "description": "indicates if the check passed or failed" - } - }, - "description": "Result of the evaluation." - }, - "EvalRun": { - "type": "object", - "required": [ - "object", - "id", - "eval_id", - "status", - "model", - "name", - "created_at", - "report_url", - "result_counts", - "per_model_usage", - "per_testing_criteria_results", - "data_source", - "metadata", - "error" - ], - "properties": { - "object": { "type": "string", "enum": [ - "eval.run" - ], - "description": "The type of the object. Always \"eval.run\".", - "x-stainless-const": true, - "default": "eval.run" - }, - "id": { - "type": "string", - "description": "Unique identifier for the evaluation run." - }, - "eval_id": { - "type": "string", - "description": "The identifier of the associated evaluation." - }, - "status": { - "type": "string", - "description": "The status of the evaluation run." - }, - "model": { - "type": "string", - "description": "The model that is evaluated, if applicable." - }, - "name": { - "type": "string", - "description": "The name of the evaluation run." - }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "Unix timestamp (in seconds) when the evaluation run was created." - }, - "report_url": { - "type": "string", - "format": "uri", - "description": "The URL to the rendered evaluation run report on the UI dashboard." - }, - "result_counts": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.EvalRunResultCounts" - } + "Daily" ], - "description": "Counters summarizing the outcomes of the evaluation run." - }, - "per_model_usage": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.EvalRunPerModelUsage" - }, - "description": "Usage statistics for each model during the evaluation run." + "description": "Daily recurrence type." }, - "per_testing_criteria_results": { + "hours": { "type": "array", "items": { - "$ref": "#/components/schemas/OpenAI.EvalRunPerTestingCriteriaResults" - }, - "description": "Results per testing criteria applied during the evaluation run." - }, - "data_source": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" - }, - { - "$ref": "#/components/schemas/EvalRunDataSource" - } - ], - "description": "Information about the run's data source." - }, - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "error": { - "$ref": "#/components/schemas/OpenAI.EvalApiError" - }, - "modified_at": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "description": "Unix timestamp (in seconds) when the evaluation run was last modified." - }, - "created_by": { - "type": "string", - "description": "the name of the person who created the run." - }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" + "type": "integer", + "format": "int32" }, - "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." + "description": "Hours for the recurrence schedule." } }, - "description": "A schema representing an evaluation run.", - "title": "EvalRun", - "x-oaiMeta": { - "name": "The eval run object", - "group": "evals", - "example": "{\n \"object\": \"eval.run\",\n \"id\": \"evalrun_67e57965b480819094274e3a32235e4c\",\n \"eval_id\": \"eval_67e579652b548190aaa83ada4b125f47\",\n \"report_url\": \"https://platform.openai.com/evaluations/eval_67e579652b548190aaa83ada4b125f47?run_id=evalrun_67e57965b480819094274e3a32235e4c\",\n \"status\": \"queued\",\n \"model\": \"gpt-4o-mini\",\n \"name\": \"gpt-4o-mini\",\n \"created_at\": 1743092069,\n \"result_counts\": {\n \"total\": 0,\n \"errored\": 0,\n \"failed\": 0,\n \"passed\": 0\n },\n \"per_model_usage\": null,\n \"per_testing_criteria_results\": null,\n \"data_source\": {\n \"type\": \"completions\",\n \"source\": {\n \"type\": \"file_content\",\n \"content\": [\n {\n \"item\": {\n \"input\": \"Tech Company Launches Advanced Artificial Intelligence Platform\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Central Bank Increases Interest Rates Amid Inflation Concerns\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Summit Addresses Climate Change Strategies\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Major Retailer Reports Record-Breaking Holiday Sales\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"National Team Qualifies for World Championship Finals\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Stock Markets Rally After Positive Economic Data Released\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Manufacturer Announces Merger with Competitor\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Breakthrough in Renewable Energy Technology Unveiled\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"World Leaders Sign Historic Climate Agreement\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Professional Athlete Sets New Record in Championship Event\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Financial Institutions Adapt to New Regulatory Requirements\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Tech Conference Showcases Advances in Artificial Intelligence\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Markets Respond to Oil Price Fluctuations\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Cooperation Strengthened Through New Treaty\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Sports League Announces Revised Schedule for Upcoming Season\",\n \"ground_truth\": \"Sports\"\n }\n }\n ]\n },\n \"input_messages\": {\n \"type\": \"template\",\n \"template\": [\n {\n \"type\": \"message\",\n \"role\": \"developer\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"Categorize a given news headline into one of the following topics: Technology, Markets, World, Business, or Sports.\n\n# Steps\n\n1. Analyze the content of the news headline to understand its primary focus.\n2. Extract the subject matter, identifying any key indicators or keywords.\n3. Use the identified indicators to determine the most suitable category out of the five options: Technology, Markets, World, Business, or Sports.\n4. Ensure only one category is selected per headline.\n\n# Output Format\n\nRespond with the chosen category as a single word. For instance: \"Technology\", \"Markets\", \"World\", \"Business\", or \"Sports\".\n\n# Examples\n\n**Input**: \"Apple Unveils New iPhone Model, Featuring Advanced AI Features\"\n**Output**: \"Technology\"\n\n**Input**: \"Global Stocks Mixed as Investors Await Central Bank Decisions\"\n**Output**: \"Markets\"\n\n**Input**: \"War in Ukraine: Latest Updates on Negotiation Status\"\n**Output**: \"World\"\n\n**Input**: \"Microsoft in Talks to Acquire Gaming Company for $2 Billion\"\n**Output**: \"Business\"\n\n**Input**: \"Manchester United Secures Win in Premier League Football Match\"\n**Output**: \"Sports\"\n\n# Notes\n\n- If the headline appears to fit into more than one category, choose the most dominant theme.\n- Keywords or phrases such as \"stocks\", \"company acquisition\", \"match\", or technological brands can be good indicators for classification.\n\"\n }\n },\n {\n \"type\": \"message\",\n \"role\": \"user\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"{{item.input}}\"\n }\n }\n ]\n },\n \"model\": \"gpt-4o-mini\",\n \"sampling_params\": {\n \"seed\": 42,\n \"temperature\": 1.0,\n \"top_p\": 1.0,\n \"max_completions_tokens\": 2048\n }\n },\n \"error\": null,\n \"metadata\": {}\n}\n" - } + "allOf": [ + { + "$ref": "#/components/schemas/RecurrenceSchedule" + } + ], + "description": "Daily recurrence schedule." }, - "EvalRunDataSource": { + "DataSourceConfig": { "type": "object", "required": [ - "type" + "type", + "schema" ], "properties": { "type": { "type": "string", "description": "The data source type discriminator." + }, + "schema": { + "type": "object", + "additionalProperties": {}, + "description": "The overall object JSON schema for the run data source items." } }, "discriminator": { "propertyName": "type", - "mapping": { - "azure_ai_traces_preview": "#/components/schemas/TracesPreviewEvalRunDataSource", - "azure_ai_synthetic_data_gen_preview": "#/components/schemas/SyntheticDataGenerationPreviewEvalRunDataSource", - "azure_ai_responses": "#/components/schemas/AzureAIResponsesEvalRunDataSource", - "azure_ai_target_completions": "#/components/schemas/TargetCompletionEvalRunDataSource", - "csv": "#/components/schemas/EvalCsvRunDataSource", - "azure_ai_red_team": "#/components/schemas/RedTeamEvalRunDataSource", - "azure_ai_benchmark_preview": "#/components/schemas/AzureAIBenchmarkPreviewEvalRunDataSource" - } + "mapping": {} }, "description": "Base class for run data sources with discriminator support." }, - "EvalRunOutputItem": { - "type": "object", - "required": [ - "object", - "id", - "run_id", - "eval_id", - "created_at", - "status", - "datasource_item_id", - "datasource_item", - "results", - "sample" - ], - "properties": { - "object": { - "type": "string", - "enum": [ - "eval.run.output_item" - ], - "description": "The type of the object. Always \"eval.run.output_item\".", - "x-stainless-const": true, - "default": "eval.run.output_item" - }, - "id": { - "type": "string", - "description": "Unique identifier for the evaluation run output item." - }, - "run_id": { - "type": "string", - "description": "The identifier of the evaluation run associated with this output item." - }, - "eval_id": { - "type": "string", - "description": "The identifier of the evaluation group." - }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "Unix timestamp (in seconds) when the evaluation run was created." + "DatasetType": { + "anyOf": [ + { + "type": "string" }, - "status": { + { "type": "string", - "description": "The status of the evaluation run." - }, - "datasource_item_id": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "description": "The identifier for the data source item." - }, - "datasource_item": { - "type": "object", - "additionalProperties": {}, - "description": "Details of the input data source item." - }, - "results": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRunOutputItemResult" - }, - "description": "A list of grader results for this output item." - }, - "sample": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.EvalRunOutputItemSample" - } - ], - "description": "A sample containing the input and output of the evaluation run." + "enum": [ + "uri_file", + "uri_folder" + ] } - }, - "description": "A schema representing an evaluation run output item.", - "title": "EvalRunOutputItem", - "x-oaiMeta": { - "name": "The eval run output item object", - "group": "evals", - "example": "{\n \"object\": \"eval.run.output_item\",\n \"id\": \"outputitem_67abd55eb6548190bb580745d5644a33\",\n \"run_id\": \"evalrun_67abd54d60ec8190832b46859da808f7\",\n \"eval_id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"created_at\": 1739314509,\n \"status\": \"pass\",\n \"datasource_item_id\": 137,\n \"datasource_item\": {\n \"teacher\": \"To grade essays, I only check for style, content, and grammar.\",\n \"student\": \"I am a student who is trying to write the best essay.\"\n },\n \"results\": [\n {\n \"name\": \"String Check Grader\",\n \"type\": \"string-check-grader\",\n \"score\": 1.0,\n \"passed\": true,\n }\n ],\n \"sample\": {\n \"input\": [\n {\n \"role\": \"system\",\n \"content\": \"You are an evaluator bot...\"\n },\n {\n \"role\": \"user\",\n \"content\": \"You are assessing...\"\n }\n ],\n \"output\": [\n {\n \"role\": \"assistant\",\n \"content\": \"The rubric is not clear nor concise.\"\n }\n ],\n \"finish_reason\": \"stop\",\n \"model\": \"gpt-4o-2024-08-06\",\n \"usage\": {\n \"total_tokens\": 521,\n \"completion_tokens\": 2,\n \"prompt_tokens\": 519,\n \"cached_tokens\": 0\n },\n \"error\": null,\n \"temperature\": 1.0,\n \"max_completion_tokens\": 2048,\n \"top_p\": 1.0,\n \"seed\": 42\n }\n}\n" - } + ], + "description": "Enum to determine the type of data." }, - "EvalRunOutputItemResult": { + "DatasetVersion": { "type": "object", "required": [ + "dataUri", + "type", "name", - "score", - "passed" + "version" ], "properties": { - "name": { + "dataUri": { "type": "string", - "description": "The name of the grader." + "minLength": 1, + "pattern": "[a-zA-Z0-9_]", + "description": "URI of the data ([example](https://go.microsoft.com/fwlink/?linkid=2202330))" }, "type": { - "type": "string", - "description": "The grader type (for example, \"string-check-grader\")." - }, - "score": { "allOf": [ { - "$ref": "#/components/schemas/OpenAI.numeric" + "$ref": "#/components/schemas/DatasetType" } ], - "description": "The numeric score produced by the grader." + "description": "Dataset type" }, - "passed": { + "isReference": { "type": "boolean", - "description": "Whether the grader considered the output a pass." - }, - "sample": { - "type": "object", - "additionalProperties": {}, - "nullable": true, - "description": "Optional sample or intermediate data produced by the grader." + "description": "Indicates if the dataset holds a reference to the storage, or the dataset manages storage itself. If true, the underlying data will not be deleted when the dataset version is deleted", + "readOnly": true }, - "metric": { + "connectionName": { "type": "string", - "description": "The name of the metric (e.g., \"fluency\", \"f1_score\")." + "description": "The Azure Storage Account connection name. Required if startPendingUploadVersion was not called before creating the Dataset" }, - "label": { + "id": { "type": "string", - "description": "The label associated with the test criteria metric (e.g., \"pass\", \"fail\", \"good\", \"bad\")." - }, - "threshold": { - "type": "number", - "format": "float", - "description": "The threshold used to determine pass/fail for this test criteria, if it is numerical." + "description": "Asset ID, a unique identifier for the asset", + "readOnly": true }, - "reason": { + "name": { "type": "string", - "description": "The reason for the test criteria metric." + "description": "The name of the resource", + "readOnly": true }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional details about the test criteria metric." + "version": { + "type": "string", + "description": "The version of the resource", + "readOnly": true } }, - "additionalProperties": {}, - "description": "A single grader result for an evaluation run output item.", - "title": "EvalRunOutputItemResult" + "discriminator": { + "propertyName": "type", + "mapping": { + "uri_file": "#/components/schemas/FileDatasetVersion", + "uri_folder": "#/components/schemas/FolderDatasetVersion" + } + }, + "description": "DatasetVersion Definition" }, - "EvalRunOutputItemSampleInput": { + "DatasetVersionUpdate": { "type": "object", "required": [ - "role", - "content", - "tool_calls" + "type" ], "properties": { - "role": { - "type": "string" + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/DatasetType" + } + ], + "description": "Dataset type" }, - "content": { - "type": "string" + "description": { + "type": "string", + "description": "The asset description text." }, - "tool_calls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CompletionMessageToolCallChunk" + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" }, - "description": "Tool calls made within the message, if any." + "description": "Tag dictionary. Tags can be added, removed, and updated." } }, - "description": "A message in the evaluation run." + "discriminator": { + "propertyName": "type", + "mapping": { + "uri_file": "#/components/schemas/FileDatasetVersionUpdate", + "uri_folder": "#/components/schemas/FolderDatasetVersionUpdate" + } + }, + "description": "DatasetVersion Definition" }, - "EvalRunOutputItemSampleOutput": { + "DayOfWeek": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ] + } + ], + "description": "Days of the week for recurrence schedule." + }, + "DeleteAgentResponse": { "type": "object", "required": [ - "tool_calls" + "object", + "name", + "deleted" ], "properties": { - "role": { - "type": "string" + "object": { + "type": "string", + "enum": [ + "agent.deleted" + ], + "description": "The object type. Always 'agent.deleted'." }, - "content": { - "type": "string" + "name": { + "type": "string", + "description": "The name of the agent." }, - "tool_calls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CompletionMessageToolCallChunk" - }, - "description": "Tool calls made within the message, if any." + "deleted": { + "type": "boolean", + "description": "Whether the agent was successfully deleted." } }, - "description": "A message in the evaluation run." + "description": "A deleted agent Object" }, - "EvalRunResultCompareItem": { + "DeleteAgentVersionResponse": { "type": "object", "required": [ - "treatmentRunId", - "treatmentRunSummary", - "deltaEstimate", - "pValue", - "treatmentEffect" + "object", + "name", + "version", + "deleted" ], "properties": { - "treatmentRunId": { + "object": { "type": "string", - "description": "The treatment run ID." - }, - "treatmentRunSummary": { - "allOf": [ - { - "$ref": "#/components/schemas/EvalRunResultSummary" - } + "enum": [ + "agent.version.deleted" ], - "description": "Summary statistics of the treatment run." + "description": "The object type. Always 'agent.version.deleted'." }, - "deltaEstimate": { - "type": "number", - "format": "float", - "description": "Estimated difference between treatment and baseline." + "name": { + "type": "string", + "description": "The name of the agent." }, - "pValue": { - "type": "number", - "format": "float", - "description": "P-value for the treatment effect." + "version": { + "type": "string", + "description": "The version identifier of the agent." }, - "treatmentEffect": { - "allOf": [ - { - "$ref": "#/components/schemas/TreatmentEffectType" - } - ], - "description": "Type of treatment effect." + "deleted": { + "type": "boolean", + "description": "Whether the agent was successfully deleted." } }, - "description": "Metric comparison for a treatment against the baseline." + "description": "A deleted agent version Object" }, - "EvalRunResultComparison": { + "DeleteEvalResponse": { "type": "object", "required": [ - "testingCriteria", - "metric", - "evaluator", - "baselineRunSummary", - "compareItems" + "object", + "eval_id", + "deleted" ], "properties": { - "testingCriteria": { + "object": { "type": "string", - "description": "Name of the testing criteria." + "enum": [ + "eval.deleted" + ], + "description": "The object type. Always 'eval.deleted'." }, - "metric": { + "eval_id": { "type": "string", - "description": "Metric being evaluated." + "description": "id of the eval." }, - "evaluator": { + "deleted": { + "type": "boolean", + "description": "Whether the eval was successfully deleted." + } + }, + "description": "A deleted evaluation Object" + }, + "DeleteEvalRunResponse": { + "type": "object", + "properties": { + "object": { "type": "string", - "description": "Name of the evaluator for this testing criteria." - }, - "baselineRunSummary": { - "allOf": [ - { - "$ref": "#/components/schemas/EvalRunResultSummary" - } + "enum": [ + "eval.deleted" ], - "description": "Summary statistics of the baseline run." + "description": "The object type. Always 'eval.deleted'." }, - "compareItems": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRunResultCompareItem" - }, - "description": "List of comparison results for each treatment run." + "run_id": { + "type": "string", + "description": "id of the eval." + }, + "deleted": { + "type": "boolean", + "description": "Whether the eval was successfully deleted." } }, - "description": "Comparison results for treatment runs against the baseline." + "description": "A deleted evaluation run Object." }, - "EvalRunResultSummary": { + "DeleteMemoryStoreResponse": { "type": "object", "required": [ - "runId", - "sampleCount", - "average", - "standardDeviation" + "object", + "name", + "deleted" ], "properties": { - "runId": { + "object": { "type": "string", - "description": "The evaluation run ID." - }, - "sampleCount": { - "type": "integer", - "format": "int32", - "description": "Number of samples in the evaluation run." + "enum": [ + "memory_store.deleted" + ], + "description": "The object type. Always 'memory_store.deleted'." }, - "average": { - "type": "number", - "format": "float", - "description": "Average value of the metric in the evaluation run." + "name": { + "type": "string", + "description": "The name of the memory store." }, - "standardDeviation": { - "type": "number", - "format": "float", - "description": "Standard deviation of the metric in the evaluation run." + "deleted": { + "type": "boolean", + "description": "Whether the memory store was successfully deleted." } }, - "description": "Summary statistics of a metric in an evaluation run." + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } }, - "Evaluation": { + "DeleteResponseResult": { "type": "object", "required": [ "id", - "data", - "evaluators" + "object", + "deleted" ], "properties": { "id": { "type": "string", - "description": "Identifier of the evaluation.", - "readOnly": true + "description": "The operation ID." }, - "data": { + "object": { + "type": "string", + "enum": [ + "response" + ], + "description": "Always return 'response'." + }, + "deleted": { + "type": "boolean", + "enum": [ + true + ], + "description": "Always return true" + } + }, + "description": "The result of a delete response operation." + }, + "DeleteSkillResponse": { + "type": "object", + "required": [ + "object", + "name", + "deleted" + ], + "properties": { + "object": { "allOf": [ { - "$ref": "#/components/schemas/InputData" + "$ref": "#/components/schemas/SkillObjectType" } ], - "description": "Data for evaluation." + "description": "The object type. Always 'skill.deleted'.", + "default": "skill.deleted" }, - "displayName": { + "name": { "type": "string", - "description": "Display Name for evaluation. It helps to find the evaluation easily in AI Foundry. It does not need to be unique." + "description": "The unique name of the skill." }, - "description": { + "deleted": { + "type": "boolean", + "description": "Whether the skill was successfully deleted." + } + }, + "description": "A deleted skill Object" + }, + "DeleteToolsetResponse": { + "type": "object", + "required": [ + "object", + "name", + "deleted" + ], + "properties": { + "object": { "type": "string", - "description": "Description of the evaluation. It can be used to store additional information about the evaluation and is mutable." + "enum": [ + "toolset.deleted" + ], + "description": "The object type. Always 'toolset.deleted'." }, - "status": { + "name": { "type": "string", - "description": "Status of the evaluation. It is set by service and is read-only.", - "readOnly": true - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Evaluation's tags. Unlike properties, tags are fully mutable." - }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Evaluation's properties. Unlike tags, properties are add-only. Once added, a property cannot be removed." - }, - "evaluators": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/EvaluatorConfiguration" - }, - "description": "Evaluators to be used for the evaluation." + "description": "The name of the toolset." }, - "target": { + "deleted": { + "type": "boolean", + "description": "Whether the toolset was successfully deleted." + } + }, + "description": "Response returned when a toolset is deleted." + }, + "Deployment": { + "type": "object", + "required": [ + "type", + "name" + ], + "properties": { + "type": { "allOf": [ { - "$ref": "#/components/schemas/EvaluationTarget" + "$ref": "#/components/schemas/DeploymentType" } ], - "description": "Specifies the type and configuration of the entity used for this evaluation." + "description": "The type of the deployment" + }, + "name": { + "type": "string", + "description": "Name of the deployment", + "readOnly": true } }, - "description": "Evaluation Definition" + "discriminator": { + "propertyName": "type", + "mapping": { + "ModelDeployment": "#/components/schemas/ModelDeployment" + } + }, + "description": "Model Deployment Definition" }, - "EvaluationComparisonInsightRequest": { + "DeploymentType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "ModelDeployment" + ] + } + ] + }, + "DeveloperMessage": { "type": "object", "required": [ - "type", - "evalId", - "baselineRunId", - "treatmentRunIds" + "role", + "content" ], "properties": { - "type": { + "role": { "type": "string", "enum": [ - "EvaluationComparison" + "developer" ], - "description": "The type of request." + "description": "Indicates this is a developer message." }, - "evalId": { + "content": { "type": "string", - "description": "Identifier for the evaluation." - }, - "baselineRunId": { + "description": "Content provided by a developer to guide model behavior in an evaluation context." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/Message" + } + ], + "description": "A message authored by a developer to guide the model during evaluation." + }, + "EntraAuthorizationScheme": { + "type": "object", + "required": [ + "type", + "isolation_key_source" + ], + "properties": { + "type": { "type": "string", - "description": "The baseline run ID for comparison." - }, - "treatmentRunIds": { - "type": "array", - "items": { - "type": "string" - }, - "description": "List of treatment run IDs for comparison." + "enum": [ + "Entra" + ] + }, + "isolation_key_source": { + "$ref": "#/components/schemas/IsolationKeySource" } }, "allOf": [ { - "$ref": "#/components/schemas/InsightRequest" + "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" } ], - "description": "Evaluation Comparison Request" + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "EvaluationComparisonInsightResult": { + "EntraIDCredentials": { "type": "object", "required": [ - "type", - "comparisons", - "method" + "type" ], "properties": { "type": { "type": "string", "enum": [ - "EvaluationComparison" + "AAD" ], - "description": "The type of insights result." - }, - "comparisons": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRunResultComparison" - }, - "description": "Comparison results for each treatment run against the baseline." - }, - "method": { - "type": "string", - "description": "The statistical method used for comparison." + "description": "The credential type", + "readOnly": true } }, "allOf": [ { - "$ref": "#/components/schemas/InsightResult" + "$ref": "#/components/schemas/BaseCredentials" } ], - "description": "Insights from the evaluation comparison." + "description": "Entra ID credential definition" }, - "EvaluationResultSample": { + "EntraIsolationKeySource": { "type": "object", "required": [ - "type", - "evaluationResult" + "kind" ], "properties": { - "type": { + "kind": { "type": "string", "enum": [ - "EvaluationResultSample" - ], - "description": "Evaluation Result Sample Type" - }, - "evaluationResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EvalResult" - } - ], - "description": "Evaluation result for the analysis sample." + "Entra" + ] } }, "allOf": [ { - "$ref": "#/components/schemas/InsightSample" + "$ref": "#/components/schemas/IsolationKeySource" } ], - "description": "A sample from the evaluation result." + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "EvaluationRule": { + "Eval": { "type": "object", "required": [ + "object", "id", - "action", - "eventType", - "enabled", - "systemData" + "name", + "data_source_config", + "testing_criteria", + "created_at", + "metadata" ], "properties": { - "id": { + "object": { "type": "string", - "description": "Unique identifier for the evaluation rule.", - "readOnly": true + "enum": [ + "eval" + ], + "description": "The object type.", + "x-stainless-const": true, + "default": "eval" }, - "displayName": { + "id": { "type": "string", - "description": "Display Name for the evaluation rule." + "description": "Unique identifier for the evaluation." }, - "description": { + "name": { "type": "string", - "description": "Description for the evaluation rule." + "description": "The name of the evaluation." }, - "action": { - "allOf": [ + "data_source_config": { + "oneOf": [ { - "$ref": "#/components/schemas/EvaluationRuleAction" + "$ref": "#/components/schemas/OpenAI.CreateEvalCustomDataSourceConfig" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalLogsDataSourceConfig" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalStoredCompletionsDataSourceConfig" + }, + { + "$ref": "#/components/schemas/AzureAIDataSourceConfig" + }, + { + "$ref": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" } ], - "description": "Definition of the evaluation rule action.", - "x-ms-foundry-meta": { - "conditional_previews": [ - "Evaluations=V1Preview" + "description": "Configuration of data sources used in runs of the evaluation." + }, + "testing_criteria": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/OpenAI.EvalGraderLabelModel" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderStringCheck" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderTextSimilarity" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderPython" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderScoreModel" + }, + { + "$ref": "#/components/schemas/EvalGraderAzureAIEvaluator" + }, + { + "$ref": "#/components/schemas/EvalGraderInspectAI" + } ] - } + }, + "description": "A list of testing criteria." }, - "filter": { + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "The Unix timestamp (in seconds) for when the eval was created." + }, + "metadata": { + "type": "object", "allOf": [ { - "$ref": "#/components/schemas/EvaluationRuleFilter" + "$ref": "#/components/schemas/OpenAI.Metadata" } ], - "description": "Filter condition of the evaluation rule." + "nullable": true }, - "eventType": { + "modified_at": { "allOf": [ { - "$ref": "#/components/schemas/EvaluationRuleEventType" + "$ref": "#/components/schemas/integer" } ], - "description": "Event type that the evaluation rule applies to." + "description": "Unix timestamp (in seconds) when the evaluation run was last modified." }, - "enabled": { - "type": "boolean", - "description": "Indicates whether the evaluation rule is enabled. Default is true." + "created_by": { + "type": "string", + "description": "the name of the person who created the run." }, - "systemData": { + "properties": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "System metadata for the evaluation rule.", - "readOnly": true + "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." } }, - "description": "Evaluation rule model." + "description": "An Eval object with a data source config and testing criteria.\nAn Eval represents a task to be done for your LLM integration.\nLike:\n- Improve the quality of my chatbot\n- See how well my chatbot handles customer support\n- Check if o4-mini is better at my usecase than gpt-4o", + "title": "Eval", + "x-oaiMeta": { + "name": "The eval object", + "group": "evals", + "example": "{\n \"object\": \"eval\",\n \"id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"data_source_config\": {\n \"type\": \"custom\",\n \"item_schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\"type\": \"string\"},\n },\n \"required\": [\"label\"]\n },\n \"include_sample_schema\": true\n },\n \"testing_criteria\": [\n {\n \"name\": \"My string check grader\",\n \"type\": \"string_check\",\n \"input\": \"{{sample.output_text}}\",\n \"reference\": \"{{item.label}}\",\n \"operation\": \"eq\",\n }\n ],\n \"name\": \"External Data Eval\",\n \"created_at\": 1739314509,\n \"metadata\": {\n \"test\": \"synthetics\",\n }\n}\n" + } }, - "EvaluationRuleAction": { + "EvalCsvFileIdSource": { "type": "object", "required": [ - "type" + "type", + "id" ], "properties": { "type": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleActionType" - } - ], - "description": "Type of the evaluation action." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "continuousEvaluation": "#/components/schemas/ContinuousEvaluationRuleAction", - "humanEvaluation": "#/components/schemas/HumanEvaluationRuleAction", - "humanEvaluationPreview": "#/components/schemas/HumanEvaluationPreviewRuleAction" - } - }, - "description": "Evaluation action model." - }, - "EvaluationRuleActionType": { - "anyOf": [ - { - "type": "string" - }, - { "type": "string", "enum": [ - "continuousEvaluation", - "humanEvaluation", - "humanEvaluationPreview" - ] - } - ], - "description": "Type of the evaluation action." - }, - "EvaluationRuleEventType": { - "anyOf": [ - { - "type": "string" + "file_id" + ], + "description": "The type of source, always `file_id`." }, - { - "type": "string", - "enum": [ - "responseCompleted", - "manual" - ] - } - ], - "description": "Type of the evaluation rule event." - }, - "EvaluationRuleFilter": { - "type": "object", - "required": [ - "agentName" - ], - "properties": { - "agentName": { + "id": { "type": "string", - "description": "Filter by agent name." + "description": "The identifier of the uploaded CSV file." } }, - "description": "Evaluation filter model." + "description": "Represents a reference to an uploaded CSV file used as a source for evaluation data." }, - "EvaluationRunClusterInsightRequest": { + "EvalCsvRunDataSource": { "type": "object", "required": [ "type", - "evalId", - "runIds" + "source" ], "properties": { "type": { "type": "string", "enum": [ - "EvaluationRunClusterInsight" + "csv" ], - "description": "The type of insights request." - }, - "evalId": { - "type": "string", - "description": "Evaluation Id for the insights." - }, - "runIds": { - "type": "array", - "items": { - "type": "string" - }, - "description": "List of evaluation run IDs for the insights." + "description": "The type of data source, always `csv`." }, - "modelConfiguration": { + "source": { "allOf": [ { - "$ref": "#/components/schemas/InsightModelConfiguration" + "$ref": "#/components/schemas/EvalCsvFileIdSource" } ], - "description": "Configuration of the model used in the insight generation." + "description": "The source of the CSV data, either inline content or a file reference." } }, "allOf": [ { - "$ref": "#/components/schemas/InsightRequest" + "$ref": "#/components/schemas/EvalRunDataSource" } ], - "description": "Insights on set of Evaluation Results" + "description": "Represents a CSV data source for evaluation runs." }, - "EvaluationRunClusterInsightResult": { + "EvalGraderAzureAIEvaluator": { "type": "object", "required": [ "type", - "clusterInsight" + "name", + "evaluator_name" ], "properties": { "type": { "type": "string", "enum": [ - "EvaluationRunClusterInsight" + "azure_ai_evaluator" ], - "description": "The type of insights result." + "description": "The object type, which is always `azure_ai_evaluator`." }, - "clusterInsight": { - "$ref": "#/components/schemas/ClusterInsightResult" + "name": { + "type": "string", + "description": "The name of the grader." + }, + "evaluator_name": { + "type": "string", + "description": "The name of the evaluator." + }, + "evaluator_version": { + "type": "string", + "description": "The version of the evaluator. Latest version if not specified." + }, + "initialization_parameters": { + "type": "object", + "additionalProperties": {}, + "description": "The initialization parameters for the evaluation. Must support structured outputs." + }, + "data_mapping": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The model to use for the evaluation. Must support structured outputs." } }, - "allOf": [ - { - "$ref": "#/components/schemas/InsightResult" - } - ], - "description": "Insights from the evaluation run cluster analysis." + "title": "AzureAIEvaluatorGrader" }, - "EvaluationScheduleTask": { + "EvalGraderInspectAI": { "type": "object", "required": [ "type", - "evalId", - "evalRun" + "name", + "task_name" ], "properties": { "type": { "type": "string", "enum": [ - "Evaluation" - ] + "inspect_ai" + ], + "description": "The object type, which is always `inspect_ai`." }, - "evalId": { + "name": { "type": "string", - "description": "Identifier of the evaluation group." + "description": "The display name of the benchmark." }, - "evalRun": { - "type": "object", - "description": "The evaluation run payload." + "task_name": { + "type": "string", + "description": "The inspect_ai task module path (e.g., `inspect_evals/gpqa_diamond`)." } }, - "allOf": [ - { - "$ref": "#/components/schemas/ScheduleTask" - } - ], - "description": "Evaluation task for the schedule." + "description": "Grader inspect_ai definition for inspect_ai benchmark evaluators." }, - "EvaluationTarget": { + "EvalResult": { "type": "object", "required": [ - "type" + "name", + "type", + "score", + "passed" ], "properties": { + "name": { + "type": "string", + "description": "name of the check" + }, "type": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationTargetType" - } - ], - "description": "Discriminator that defines the type of the evaluation target." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "modelResponseGeneration": "#/components/schemas/modelResponseGenerationTarget" - } - }, - "description": "Abstract base model for defining evaluation targets." - }, - "EvaluationTargetType": { - "anyOf": [ - { "type": "string", - "enum": [ - "modelResponseGeneration" - ] + "description": "type of the check" }, - { - "type": "string" + "score": { + "type": "number", + "format": "float", + "description": "score" + }, + "passed": { + "type": "boolean", + "description": "indicates if the check passed or failed" } - ], - "description": "Allowed types of evaluation targets." + }, + "description": "Result of the evaluation." }, - "EvaluationTaxonomy": { + "EvalRun": { "type": "object", "required": [ + "object", + "id", + "eval_id", + "status", + "model", "name", - "version", - "taxonomyInput" + "created_at", + "report_url", + "result_counts", + "per_model_usage", + "per_testing_criteria_results", + "data_source", + "metadata", + "error" ], "properties": { + "object": { + "type": "string", + "enum": [ + "eval.run" + ], + "description": "The type of the object. Always \"eval.run\".", + "x-stainless-const": true, + "default": "eval.run" + }, "id": { "type": "string", - "description": "Asset ID, a unique identifier for the asset", - "readOnly": true + "description": "Unique identifier for the evaluation run." + }, + "eval_id": { + "type": "string", + "description": "The identifier of the associated evaluation." + }, + "status": { + "type": "string", + "description": "The status of the evaluation run." + }, + "model": { + "type": "string", + "description": "The model that is evaluated, if applicable." }, "name": { "type": "string", - "description": "The name of the resource", - "readOnly": true + "description": "The name of the evaluation run." }, - "version": { + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "Unix timestamp (in seconds) when the evaluation run was created." + }, + "report_url": { "type": "string", - "description": "The version of the resource", - "readOnly": true + "format": "uri", + "description": "The URL to the rendered evaluation run report on the UI dashboard." }, - "taxonomyInput": { + "result_counts": { "allOf": [ { - "$ref": "#/components/schemas/EvaluationTaxonomyInput" + "$ref": "#/components/schemas/OpenAI.EvalRunResultCounts" } ], - "description": "Input configuration for the evaluation taxonomy." + "description": "Counters summarizing the outcomes of the evaluation run." }, - "taxonomyCategories": { + "per_model_usage": { "type": "array", "items": { - "$ref": "#/components/schemas/TaxonomyCategory" + "$ref": "#/components/schemas/OpenAI.EvalRunPerModelUsage" }, - "description": "List of taxonomy categories." + "description": "Usage statistics for each model during the evaluation run." }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" + "per_testing_criteria_results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.EvalRunPerTestingCriteriaResults" }, - "description": "Additional properties for the evaluation taxonomy." - } - }, - "description": "Evaluation Taxonomy Definition" - }, - "EvaluationTaxonomyCreateOrUpdate": { - "type": "object", - "required": [ - "taxonomyInput" - ], - "properties": { - "description": { - "type": "string", - "description": "The asset description text." + "description": "Results per testing criteria applied during the evaluation run." }, - "tags": { + "data_source": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" + }, + { + "$ref": "#/components/schemas/EvalRunDataSource" + } + ], + "description": "Information about the run's data source." + }, + "metadata": { "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true }, - "taxonomyInput": { + "error": { + "$ref": "#/components/schemas/OpenAI.EvalApiError" + }, + "modified_at": { "allOf": [ { - "$ref": "#/components/schemas/EvaluationTaxonomyInput" + "$ref": "#/components/schemas/integer" } ], - "description": "Input configuration for the evaluation taxonomy." + "description": "Unix timestamp (in seconds) when the evaluation run was last modified." }, - "taxonomyCategories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TaxonomyCategory" - }, - "description": "List of taxonomy categories." + "created_by": { + "type": "string", + "description": "the name of the person who created the run." }, "properties": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Additional properties for the evaluation taxonomy." + "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." } }, - "description": "Evaluation Taxonomy Definition" + "description": "A schema representing an evaluation run.", + "title": "EvalRun", + "x-oaiMeta": { + "name": "The eval run object", + "group": "evals", + "example": "{\n \"object\": \"eval.run\",\n \"id\": \"evalrun_67e57965b480819094274e3a32235e4c\",\n \"eval_id\": \"eval_67e579652b548190aaa83ada4b125f47\",\n \"report_url\": \"https://platform.openai.com/evaluations/eval_67e579652b548190aaa83ada4b125f47?run_id=evalrun_67e57965b480819094274e3a32235e4c\",\n \"status\": \"queued\",\n \"model\": \"gpt-4o-mini\",\n \"name\": \"gpt-4o-mini\",\n \"created_at\": 1743092069,\n \"result_counts\": {\n \"total\": 0,\n \"errored\": 0,\n \"failed\": 0,\n \"passed\": 0\n },\n \"per_model_usage\": null,\n \"per_testing_criteria_results\": null,\n \"data_source\": {\n \"type\": \"completions\",\n \"source\": {\n \"type\": \"file_content\",\n \"content\": [\n {\n \"item\": {\n \"input\": \"Tech Company Launches Advanced Artificial Intelligence Platform\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Central Bank Increases Interest Rates Amid Inflation Concerns\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Summit Addresses Climate Change Strategies\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Major Retailer Reports Record-Breaking Holiday Sales\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"National Team Qualifies for World Championship Finals\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Stock Markets Rally After Positive Economic Data Released\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Manufacturer Announces Merger with Competitor\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Breakthrough in Renewable Energy Technology Unveiled\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"World Leaders Sign Historic Climate Agreement\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Professional Athlete Sets New Record in Championship Event\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Financial Institutions Adapt to New Regulatory Requirements\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Tech Conference Showcases Advances in Artificial Intelligence\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Markets Respond to Oil Price Fluctuations\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Cooperation Strengthened Through New Treaty\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Sports League Announces Revised Schedule for Upcoming Season\",\n \"ground_truth\": \"Sports\"\n }\n }\n ]\n },\n \"input_messages\": {\n \"type\": \"template\",\n \"template\": [\n {\n \"type\": \"message\",\n \"role\": \"developer\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"Categorize a given news headline into one of the following topics: Technology, Markets, World, Business, or Sports.\n\n# Steps\n\n1. Analyze the content of the news headline to understand its primary focus.\n2. Extract the subject matter, identifying any key indicators or keywords.\n3. Use the identified indicators to determine the most suitable category out of the five options: Technology, Markets, World, Business, or Sports.\n4. Ensure only one category is selected per headline.\n\n# Output Format\n\nRespond with the chosen category as a single word. For instance: \"Technology\", \"Markets\", \"World\", \"Business\", or \"Sports\".\n\n# Examples\n\n**Input**: \"Apple Unveils New iPhone Model, Featuring Advanced AI Features\"\n**Output**: \"Technology\"\n\n**Input**: \"Global Stocks Mixed as Investors Await Central Bank Decisions\"\n**Output**: \"Markets\"\n\n**Input**: \"War in Ukraine: Latest Updates on Negotiation Status\"\n**Output**: \"World\"\n\n**Input**: \"Microsoft in Talks to Acquire Gaming Company for $2 Billion\"\n**Output**: \"Business\"\n\n**Input**: \"Manchester United Secures Win in Premier League Football Match\"\n**Output**: \"Sports\"\n\n# Notes\n\n- If the headline appears to fit into more than one category, choose the most dominant theme.\n- Keywords or phrases such as \"stocks\", \"company acquisition\", \"match\", or technological brands can be good indicators for classification.\n\"\n }\n },\n {\n \"type\": \"message\",\n \"role\": \"user\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"{{item.input}}\"\n }\n }\n ]\n },\n \"model\": \"gpt-4o-mini\",\n \"sampling_params\": {\n \"seed\": 42,\n \"temperature\": 1.0,\n \"top_p\": 1.0,\n \"max_completions_tokens\": 2048\n }\n },\n \"error\": null,\n \"metadata\": {}\n}\n" + } }, - "EvaluationTaxonomyInput": { + "EvalRunDataSource": { "type": "object", "required": [ "type" ], "properties": { "type": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationTaxonomyInputType" - } - ], - "description": "Input type of the evaluation taxonomy." + "type": "string", + "description": "The data source type discriminator." } }, "discriminator": { "propertyName": "type", "mapping": { - "agent": "#/components/schemas/AgentTaxonomyInput" + "azure_ai_traces_preview": "#/components/schemas/TracesPreviewEvalRunDataSource", + "azure_ai_synthetic_data_gen_preview": "#/components/schemas/SyntheticDataGenerationPreviewEvalRunDataSource", + "azure_ai_responses": "#/components/schemas/AzureAIResponsesEvalRunDataSource", + "azure_ai_target_completions": "#/components/schemas/TargetCompletionEvalRunDataSource", + "csv": "#/components/schemas/EvalCsvRunDataSource", + "azure_ai_red_team": "#/components/schemas/RedTeamEvalRunDataSource", + "azure_ai_benchmark_preview": "#/components/schemas/AzureAIBenchmarkPreviewEvalRunDataSource" } }, - "description": "Input configuration for the evaluation taxonomy." - }, - "EvaluationTaxonomyInputType": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "agent", - "policy" - ] - } - ], - "description": "Type of the evaluation taxonomy input." + "description": "Base class for run data sources with discriminator support." }, - "EvaluationTaxonomyInputUpdate": { + "EvalRunOutputItem": { "type": "object", "required": [ - "type" + "object", + "id", + "run_id", + "eval_id", + "created_at", + "status", + "datasource_item_id", + "datasource_item", + "results", + "sample" ], "properties": { - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationTaxonomyInputType" - } + "object": { + "type": "string", + "enum": [ + "eval.run.output_item" ], - "description": "Input type of the evaluation taxonomy." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "agent": "#/components/schemas/AgentTaxonomyInputUpdate" - } - }, - "description": "Input configuration for the evaluation taxonomy." - }, - "EvaluationTaxonomyUpdate": { - "type": "object", - "properties": { - "description": { + "description": "The type of the object. Always \"eval.run.output_item\".", + "x-stainless-const": true, + "default": "eval.run.output_item" + }, + "id": { "type": "string", - "description": "The asset description text." + "description": "Unique identifier for the evaluation run output item." }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "run_id": { + "type": "string", + "description": "The identifier of the evaluation run associated with this output item." }, - "taxonomyInput": { + "eval_id": { + "type": "string", + "description": "The identifier of the evaluation group." + }, + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "Unix timestamp (in seconds) when the evaluation run was created." + }, + "status": { + "type": "string", + "description": "The status of the evaluation run." + }, + "datasource_item_id": { "allOf": [ { - "$ref": "#/components/schemas/EvaluationTaxonomyInputUpdate" + "$ref": "#/components/schemas/OpenAI.integer" } ], - "description": "Input configuration for the evaluation taxonomy." + "description": "The identifier for the data source item." }, - "taxonomyCategories": { + "datasource_item": { + "type": "object", + "additionalProperties": {}, + "description": "Details of the input data source item." + }, + "results": { "type": "array", "items": { - "$ref": "#/components/schemas/TaxonomyCategory" + "$ref": "#/components/schemas/EvalRunOutputItemResult" }, - "description": "List of taxonomy categories." + "description": "A list of grader results for this output item." }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional properties for the evaluation taxonomy." + "sample": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.EvalRunOutputItemSample" + } + ], + "description": "A sample containing the input and output of the evaluation run." } }, - "description": "Evaluation Taxonomy Definition" - }, - "EvaluatorCategory": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "quality", - "safety", - "agents" - ] - } - ], - "description": "The category of the evaluator" + "description": "A schema representing an evaluation run output item.", + "title": "EvalRunOutputItem", + "x-oaiMeta": { + "name": "The eval run output item object", + "group": "evals", + "example": "{\n \"object\": \"eval.run.output_item\",\n \"id\": \"outputitem_67abd55eb6548190bb580745d5644a33\",\n \"run_id\": \"evalrun_67abd54d60ec8190832b46859da808f7\",\n \"eval_id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"created_at\": 1739314509,\n \"status\": \"pass\",\n \"datasource_item_id\": 137,\n \"datasource_item\": {\n \"teacher\": \"To grade essays, I only check for style, content, and grammar.\",\n \"student\": \"I am a student who is trying to write the best essay.\"\n },\n \"results\": [\n {\n \"name\": \"String Check Grader\",\n \"type\": \"string-check-grader\",\n \"score\": 1.0,\n \"passed\": true,\n }\n ],\n \"sample\": {\n \"input\": [\n {\n \"role\": \"system\",\n \"content\": \"You are an evaluator bot...\"\n },\n {\n \"role\": \"user\",\n \"content\": \"You are assessing...\"\n }\n ],\n \"output\": [\n {\n \"role\": \"assistant\",\n \"content\": \"The rubric is not clear nor concise.\"\n }\n ],\n \"finish_reason\": \"stop\",\n \"model\": \"gpt-4o-2024-08-06\",\n \"usage\": {\n \"total_tokens\": 521,\n \"completion_tokens\": 2,\n \"prompt_tokens\": 519,\n \"cached_tokens\": 0\n },\n \"error\": null,\n \"temperature\": 1.0,\n \"max_completion_tokens\": 2048,\n \"top_p\": 1.0,\n \"seed\": 42\n }\n}\n" + } }, - "EvaluatorConfiguration": { + "EvalRunOutputItemResult": { "type": "object", "required": [ - "id" + "name", + "score", + "passed" ], "properties": { - "id": { + "name": { "type": "string", - "description": "Identifier of the evaluator." + "description": "The name of the grader." }, - "initParams": { + "type": { + "type": "string", + "description": "The grader type (for example, \"string-check-grader\")." + }, + "score": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "description": "The numeric score produced by the grader." + }, + "passed": { + "type": "boolean", + "description": "Whether the grader considered the output a pass." + }, + "sample": { "type": "object", "additionalProperties": {}, - "description": "Initialization parameters of the evaluator." + "nullable": true, + "description": "Optional sample or intermediate data produced by the grader." }, - "dataMapping": { + "metric": { + "type": "string", + "description": "The name of the metric (e.g., \"fluency\", \"f1_score\")." + }, + "label": { + "type": "string", + "description": "The label associated with the test criteria metric (e.g., \"pass\", \"fail\", \"good\", \"bad\")." + }, + "threshold": { + "type": "number", + "format": "float", + "description": "The threshold used to determine pass/fail for this test criteria, if it is numerical." + }, + "reason": { + "type": "string", + "description": "The reason for the test criteria metric." + }, + "properties": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Data parameters of the evaluator." + "description": "Additional details about the test criteria metric." } }, - "description": "Evaluator Configuration" + "additionalProperties": {}, + "description": "A single grader result for an evaluation run output item.", + "title": "EvalRunOutputItemResult" }, - "EvaluatorCredentialRequest": { + "EvalRunOutputItemSampleInput": { "type": "object", "required": [ - "blobUri" + "role", + "content", + "tool_calls" ], "properties": { - "blobUri": { - "type": "string", - "format": "uri", - "description": "The blob URI for the evaluator storage. Example: `https://account.blob.core.windows.net:443/container`" + "role": { + "type": "string" + }, + "content": { + "type": "string" + }, + "tool_calls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CompletionMessageToolCallChunk" + }, + "description": "Tool calls made within the message, if any." } }, - "description": "Request body for getting evaluator credentials" + "description": "A message in the evaluation run." }, - "EvaluatorDefinition": { + "EvalRunOutputItemSampleOutput": { "type": "object", "required": [ - "type" + "tool_calls" ], "properties": { - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluatorDefinitionType" - } - ], - "description": "The type of evaluator definition" - }, - "init_parameters": { - "type": "object", - "additionalProperties": {}, - "description": "The JSON schema (Draft 2020-12) for the evaluator's input parameters. This includes parameters like type, properties, required." + "role": { + "type": "string" }, - "data_schema": { - "type": "object", - "additionalProperties": {}, - "description": "The JSON schema (Draft 2020-12) for the evaluator's input data. This includes parameters like type, properties, required." + "content": { + "type": "string" }, - "metrics": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/EvaluatorMetric" + "tool_calls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CompletionMessageToolCallChunk" }, - "description": "List of output metrics produced by this evaluator" - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "code": "#/components/schemas/CodeBasedEvaluatorDefinition", - "prompt": "#/components/schemas/PromptBasedEvaluatorDefinition" + "description": "Tool calls made within the message, if any." } }, - "description": "Base evaluator configuration with discriminator" - }, - "EvaluatorDefinitionType": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "prompt", - "code", - "prompt_and_code", - "service", - "openai_graders" - ] - } - ], - "description": "The type of evaluator definition" + "description": "A message in the evaluation run." }, - "EvaluatorMetric": { + "EvalRunResultCompareItem": { "type": "object", + "required": [ + "treatmentRunId", + "treatmentRunSummary", + "deltaEstimate", + "pValue", + "treatmentEffect" + ], "properties": { - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluatorMetricType" - } - ], - "description": "Type of the metric." + "treatmentRunId": { + "type": "string", + "description": "The treatment run ID." }, - "desirable_direction": { + "treatmentRunSummary": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorMetricDirection" + "$ref": "#/components/schemas/EvalRunResultSummary" } ], - "description": "It indicates whether a higher value is better or a lower value is better for this metric." - }, - "min_value": { - "type": "number", - "format": "float", - "description": "Minimum value for the metric" + "description": "Summary statistics of the treatment run." }, - "max_value": { + "deltaEstimate": { "type": "number", "format": "float", - "description": "Maximum value for the metric. If not specified, it is assumed to be unbounded." + "description": "Estimated difference between treatment and baseline." }, - "threshold": { + "pValue": { "type": "number", "format": "float", - "description": "Default pass/fail threshold for this metric." + "description": "P-value for the treatment effect." }, - "is_primary": { - "type": "boolean", - "description": "Indicates if this metric is primary when there are multiple metrics." + "treatmentEffect": { + "allOf": [ + { + "$ref": "#/components/schemas/TreatmentEffectType" + } + ], + "description": "Type of treatment effect." } }, - "description": "Evaluator Metric" - }, - "EvaluatorMetricDirection": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "increase", - "decrease", - "neutral" - ] - } - ], - "description": "The direction of the metric indicating whether a higher value is better, a lower value is better, or neutral" - }, - "EvaluatorMetricType": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "ordinal", - "continuous", - "boolean" - ] - } - ], - "description": "The type of the evaluator" - }, - "EvaluatorType": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "builtin", - "custom" - ] - } - ], - "description": "The type of the evaluator" + "description": "Metric comparison for a treatment against the baseline." }, - "EvaluatorVersion": { + "EvalRunResultComparison": { "type": "object", "required": [ - "evaluator_type", - "categories", - "definition", - "created_by", - "created_at", - "modified_at", - "name", - "version" + "testingCriteria", + "metric", + "evaluator", + "baselineRunSummary", + "compareItems" ], "properties": { - "display_name": { + "testingCriteria": { "type": "string", - "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." + "description": "Name of the testing criteria." }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Metadata about the evaluator" + "metric": { + "type": "string", + "description": "Metric being evaluated." }, - "evaluator_type": { + "evaluator": { + "type": "string", + "description": "Name of the evaluator for this testing criteria." + }, + "baselineRunSummary": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorType" + "$ref": "#/components/schemas/EvalRunResultSummary" } ], - "description": "The type of the evaluator" + "description": "Summary statistics of the baseline run." }, - "categories": { + "compareItems": { "type": "array", "items": { - "$ref": "#/components/schemas/EvaluatorCategory" + "$ref": "#/components/schemas/EvalRunResultCompareItem" }, - "description": "The categories of the evaluator" - }, - "definition": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluatorDefinition" - } - ], - "description": "Definition of the evaluator" - }, - "created_by": { - "type": "string", - "description": "Creator of the evaluator", - "readOnly": true - }, - "created_at": { - "type": "string", - "description": "Creation date/time of the evaluator", - "readOnly": true - }, - "modified_at": { + "description": "List of comparison results for each treatment run." + } + }, + "description": "Comparison results for treatment runs against the baseline." + }, + "EvalRunResultSummary": { + "type": "object", + "required": [ + "runId", + "sampleCount", + "average", + "standardDeviation" + ], + "properties": { + "runId": { "type": "string", - "description": "Last modified date/time of the evaluator", - "readOnly": true + "description": "The evaluation run ID." }, - "id": { - "type": "string", - "description": "Asset ID, a unique identifier for the asset", - "readOnly": true + "sampleCount": { + "type": "integer", + "format": "int32", + "description": "Number of samples in the evaluation run." }, - "name": { - "type": "string", - "description": "The name of the resource", - "readOnly": true + "average": { + "type": "number", + "format": "float", + "description": "Average value of the metric in the evaluation run." }, - "version": { - "type": "string", - "description": "The version of the resource", - "readOnly": true + "standardDeviation": { + "type": "number", + "format": "float", + "description": "Standard deviation of the metric in the evaluation run." } }, - "description": "Evaluator Definition" + "description": "Summary statistics of a metric in an evaluation run." }, - "EvaluatorVersionCreate": { + "Evaluation": { "type": "object", "required": [ - "evaluator_type", - "categories", - "definition" + "id", + "data", + "evaluators" ], "properties": { - "display_name": { + "id": { "type": "string", - "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Metadata about the evaluator" + "description": "Identifier of the evaluation.", + "readOnly": true }, - "evaluator_type": { + "data": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorType" + "$ref": "#/components/schemas/InputData" } ], - "description": "The type of the evaluator" - }, - "categories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvaluatorCategory" - }, - "description": "The categories of the evaluator" + "description": "Data for evaluation." }, - "definition": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluatorDefinition" - } - ], - "description": "Definition of the evaluator" + "displayName": { + "type": "string", + "description": "Display Name for evaluation. It helps to find the evaluation easily in AI Foundry. It does not need to be unique." }, "description": { "type": "string", - "description": "The asset description text." + "description": "Description of the evaluation. It can be used to store additional information about the evaluation and is mutable." + }, + "status": { + "type": "string", + "description": "Status of the evaluation. It is set by service and is read-only.", + "readOnly": true }, "tags": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Tag dictionary. Tags can be added, removed, and updated." - } - }, - "description": "Evaluator Definition" - }, - "EvaluatorVersionUpdate": { - "type": "object", - "properties": { - "display_name": { - "type": "string", - "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." + "description": "Evaluation's tags. Unlike properties, tags are fully mutable." }, - "metadata": { + "properties": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Metadata about the evaluator" - }, - "categories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvaluatorCategory" - }, - "description": "The categories of the evaluator" - }, - "description": { - "type": "string", - "description": "The asset description text." + "description": "Evaluation's properties. Unlike tags, properties are add-only. Once added, a property cannot be removed." }, - "tags": { + "evaluators": { "type": "object", "additionalProperties": { - "type": "string" + "$ref": "#/components/schemas/EvaluatorConfiguration" }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "description": "Evaluators to be used for the evaluation." + }, + "target": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationTarget" + } + ], + "description": "Specifies the type and configuration of the entity used for this evaluation." } }, - "description": "Evaluator Definition" + "description": "Evaluation Definition" }, - "FabricDataAgentToolCall": { + "EvaluationComparisonInsightRequest": { "type": "object", "required": [ "type", - "call_id", - "arguments", - "status" + "evalId", + "baselineRunId", + "treatmentRunIds" ], "properties": { "type": { "type": "string", "enum": [ - "fabric_dataagent_preview_call" - ] + "EvaluationComparison" + ], + "description": "The type of request." }, - "call_id": { + "evalId": { "type": "string", - "description": "The unique ID of the tool call generated by the model." + "description": "Identifier for the evaluation." }, - "arguments": { + "baselineRunId": { "type": "string", - "description": "A JSON string of the arguments to pass to the tool." + "description": "The baseline run ID for comparison." }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } - ], - "description": "The status of the tool call." + "treatmentRunIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of treatment run IDs for comparison." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/InsightRequest" } ], - "description": "A Fabric data agent tool call." + "description": "Evaluation Comparison Request" }, - "FabricDataAgentToolCallOutput": { + "EvaluationComparisonInsightResult": { "type": "object", "required": [ "type", - "call_id", - "status" + "comparisons", + "method" ], "properties": { "type": { "type": "string", "enum": [ - "fabric_dataagent_preview_call_output" - ] + "EvaluationComparison" + ], + "description": "The type of insights result." }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." + "comparisons": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRunResultComparison" + }, + "description": "Comparison results for each treatment run against the baseline." }, - "output": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallOutputContent" - } + "method": { + "type": "string", + "description": "The statistical method used for comparison." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/InsightResult" + } + ], + "description": "Insights from the evaluation comparison." + }, + "EvaluationResultSample": { + "type": "object", + "required": [ + "type", + "evaluationResult" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "EvaluationResultSample" ], - "description": "The output from the Fabric data agent tool call." + "description": "Evaluation Result Sample Type" }, - "status": { + "evaluationResult": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/EvalResult" } ], - "description": "The status of the tool call." + "description": "Evaluation result for the analysis sample." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/InsightSample" } ], - "description": "The output of a Fabric data agent tool call." + "description": "A sample from the evaluation result." }, - "FabricDataAgentToolParameters": { + "EvaluationRule": { "type": "object", + "required": [ + "id", + "action", + "eventType", + "enabled", + "systemData" + ], "properties": { - "name": { + "id": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "description": "Unique identifier for the evaluation rule.", + "readOnly": true + }, + "displayName": { + "type": "string", + "description": "Display Name for the evaluation rule." }, "description": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "description": "Description for the evaluation rule." }, - "project_connections": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ToolProjectConnection" + "action": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleAction" + } + ], + "description": "Definition of the evaluation rule action.", + "x-ms-foundry-meta": { + "conditional_previews": [ + "Evaluations=V1Preview" + ] + } + }, + "filter": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleFilter" + } + ], + "description": "Filter condition of the evaluation rule." + }, + "eventType": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleEventType" + } + ], + "description": "Event type that the evaluation rule applies to." + }, + "enabled": { + "type": "boolean", + "description": "Indicates whether the evaluation rule is enabled. Default is true." + }, + "systemData": { + "type": "object", + "additionalProperties": { + "type": "string" }, - "maxItems": 1, - "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." + "description": "System metadata for the evaluation rule.", + "readOnly": true } }, - "description": "The fabric data agent tool parameters." + "description": "Evaluation rule model." }, - "FileDatasetVersion": { + "EvaluationRuleAction": { "type": "object", "required": [ "type" ], "properties": { "type": { - "type": "string", - "enum": [ - "uri_file" + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleActionType" + } ], - "description": "Dataset type" + "description": "Type of the evaluation action." } }, - "allOf": [ - { - "$ref": "#/components/schemas/DatasetVersion" + "discriminator": { + "propertyName": "type", + "mapping": { + "continuousEvaluation": "#/components/schemas/ContinuousEvaluationRuleAction", + "humanEvaluation": "#/components/schemas/HumanEvaluationRuleAction", + "humanEvaluationPreview": "#/components/schemas/HumanEvaluationPreviewRuleAction" } - ], - "description": "FileDatasetVersion Definition" + }, + "description": "Evaluation action model." }, - "FileDatasetVersionUpdate": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { + "EvaluationRuleActionType": { + "anyOf": [ + { + "type": "string" + }, + { "type": "string", "enum": [ - "uri_file" - ], - "description": "Dataset type" + "continuousEvaluation", + "humanEvaluation", + "humanEvaluationPreview" + ] } - }, - "allOf": [ + ], + "description": "Type of the evaluation action." + }, + "EvaluationRuleEventType": { + "anyOf": [ { - "$ref": "#/components/schemas/DatasetVersionUpdate" + "type": "string" + }, + { + "type": "string", + "enum": [ + "responseCompleted", + "manual" + ] } ], - "description": "FileDatasetVersion Definition" + "description": "Type of the evaluation rule event." }, - "FixedRatioVersionSelectionRule": { + "EvaluationRuleFilter": { "type": "object", "required": [ - "type", - "traffic_percentage" + "agentName" ], "properties": { - "type": { + "agentName": { "type": "string", - "enum": [ - "FixedRatio" - ] - }, - "traffic_percentage": { - "type": "integer", - "format": "int32", - "minimum": 0, - "maximum": 100, - "description": "The percentage of traffic to route to the version. Must be between 0 and 100." + "description": "Filter by agent name." } }, - "allOf": [ - { - "$ref": "#/components/schemas/VersionSelectionRule" - } - ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "Evaluation filter model." }, - "FolderDatasetVersion": { + "EvaluationRunClusterInsightRequest": { "type": "object", "required": [ - "type" + "type", + "evalId", + "runIds" ], "properties": { "type": { "type": "string", "enum": [ - "uri_folder" + "EvaluationRunClusterInsight" ], - "description": "Dataset type" + "description": "The type of insights request." + }, + "evalId": { + "type": "string", + "description": "Evaluation Id for the insights." + }, + "runIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of evaluation run IDs for the insights." + }, + "modelConfiguration": { + "allOf": [ + { + "$ref": "#/components/schemas/InsightModelConfiguration" + } + ], + "description": "Configuration of the model used in the insight generation." } }, "allOf": [ { - "$ref": "#/components/schemas/DatasetVersion" + "$ref": "#/components/schemas/InsightRequest" } ], - "description": "FileDatasetVersion Definition" + "description": "Insights on set of Evaluation Results" }, - "FolderDatasetVersionUpdate": { + "EvaluationRunClusterInsightResult": { "type": "object", "required": [ - "type" + "type", + "clusterInsight" ], "properties": { "type": { "type": "string", "enum": [ - "uri_folder" + "EvaluationRunClusterInsight" ], - "description": "Dataset type" + "description": "The type of insights result." + }, + "clusterInsight": { + "$ref": "#/components/schemas/ClusterInsightResult" } }, "allOf": [ { - "$ref": "#/components/schemas/DatasetVersionUpdate" + "$ref": "#/components/schemas/InsightResult" } ], - "description": "FileDatasetVersion Definition" - }, - "FunctionToolCall": { - "type": "object", - "required": [ - "name", - "arguments" - ], - "properties": { - "name": { - "type": "string", - "description": "The name of the function to call." - }, - "arguments": { - "type": "string", - "description": "The arguments to call the function with, as generated by the model in JSON format." - } - }, - "description": "Details of a function tool call." + "description": "Insights from the evaluation run cluster analysis." }, - "HeaderIsolationKeySource": { + "EvaluationScheduleTask": { "type": "object", "required": [ - "kind", - "user_isolation_key", - "chat_isolation_key" + "type", + "evalId", + "evalRun" ], "properties": { - "kind": { + "type": { "type": "string", "enum": [ - "Header" + "Evaluation" ] }, - "user_isolation_key": { + "evalId": { "type": "string", - "description": "The user isolation key header value" + "description": "Identifier of the evaluation group." }, - "chat_isolation_key": { - "type": "string", - "description": "The chat isolation key header value" + "evalRun": { + "type": "object", + "description": "The evaluation run payload." } }, "allOf": [ { - "$ref": "#/components/schemas/IsolationKeySource" + "$ref": "#/components/schemas/ScheduleTask" } ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "Evaluation task for the schedule." }, - "HeaderTelemetryEndpointAuth": { + "EvaluationTarget": { "type": "object", "required": [ - "type", - "header_name", - "secret_id", - "secret_key" + "type" ], "properties": { "type": { - "type": "string", - "enum": [ - "header" + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationTargetType" + } ], - "description": "The authentication type, always 'header' for header-based secret authentication." - }, - "header_name": { - "type": "string", - "description": "The name of the HTTP header to inject the secret value into.", - "example": "X-Otlp-Api-Key" - }, - "secret_id": { - "type": "string", - "description": "The identifier of the secret store or connection.", - "example": "my-secret-store" - }, - "secret_key": { - "type": "string", - "description": "The key within the secret to retrieve the authentication value.", - "example": "OTLP_KEY" + "description": "Discriminator that defines the type of the evaluation target." } }, - "allOf": [ + "discriminator": { + "propertyName": "type", + "mapping": { + "modelResponseGeneration": "#/components/schemas/modelResponseGenerationTarget" + } + }, + "description": "Abstract base model for defining evaluation targets." + }, + "EvaluationTargetType": { + "anyOf": [ + { + "type": "string", + "enum": [ + "modelResponseGeneration" + ] + }, { - "$ref": "#/components/schemas/TelemetryEndpointAuth" + "type": "string" } ], - "description": "Header-based secret authentication for a telemetry endpoint. The resolved secret value is injected as an HTTP header.", - "x-ms-foundry-meta": { - "required_previews": [ - "HostedAgents=V1Preview" - ] - } + "description": "Allowed types of evaluation targets." }, - "HostedAgentDefinition": { + "EvaluationTaxonomy": { "type": "object", "required": [ - "kind", - "container_protocol_versions", - "cpu", - "memory" + "name", + "version", + "taxonomyInput" ], "properties": { - "kind": { + "id": { "type": "string", - "enum": [ - "hosted" - ] + "description": "Asset ID, a unique identifier for the asset", + "readOnly": true }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" - }, - "description": "An array of tools the hosted agent's model may call while generating a response. You\ncan specify which tool to use by setting the `tool_choice` parameter." + "name": { + "type": "string", + "description": "The name of the resource", + "readOnly": true }, - "container_protocol_versions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProtocolVersionRecord" - }, - "description": "The protocols that the agent supports for ingress communication of the containers.", - "example": [ - { - "protocol": "responses", - "version": "v0.1.1" - }, + "version": { + "type": "string", + "description": "The version of the resource", + "readOnly": true + }, + "taxonomyInput": { + "allOf": [ { - "protocol": "a2a", - "version": "v0.3.0" + "$ref": "#/components/schemas/EvaluationTaxonomyInput" } - ] + ], + "description": "Input configuration for the evaluation taxonomy." }, - "cpu": { - "type": "string", - "description": "The CPU configuration for the hosted agent.", - "example": "0.25" + "taxonomyCategories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaxonomyCategory" + }, + "description": "List of taxonomy categories." }, - "memory": { + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional properties for the evaluation taxonomy." + } + }, + "description": "Evaluation Taxonomy Definition" + }, + "EvaluationTaxonomyCreateOrUpdate": { + "type": "object", + "required": [ + "taxonomyInput" + ], + "properties": { + "description": { "type": "string", - "description": "The memory configuration for the hosted agent.", - "example": "0.5Gi" + "description": "The asset description text." }, - "environment_variables": { + "tags": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Environment variables to set in the hosted agent container.", - "example": { - "name": "LOG_LEVEL", - "value": "debug" - } - }, - "image": { - "type": "string", - "description": "The image ID for the agent, applicable to image-based hosted agents.", - "example": "my-registry.azurecr.io/my-hosted-agent:latest" + "description": "Tag dictionary. Tags can be added, removed, and updated." }, - "telemetry_config": { + "taxonomyInput": { "allOf": [ { - "$ref": "#/components/schemas/TelemetryConfig" + "$ref": "#/components/schemas/EvaluationTaxonomyInput" } ], - "description": "Optional customer-supplied telemetry configuration for exporting container logs, traces, and metrics." + "description": "Input configuration for the evaluation taxonomy." + }, + "taxonomyCategories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaxonomyCategory" + }, + "description": "List of taxonomy categories." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional properties for the evaluation taxonomy." } }, - "allOf": [ - { - "$ref": "#/components/schemas/AgentDefinition" - } - ], - "description": "The hosted agent definition.", - "x-ms-foundry-meta": { - "required_previews": [ - "HostedAgents=V1Preview" - ] - } + "description": "Evaluation Taxonomy Definition" }, - "HourlyRecurrenceSchedule": { + "EvaluationTaxonomyInput": { "type": "object", "required": [ "type" ], "properties": { "type": { - "type": "string", - "enum": [ - "Hourly" - ] + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationTaxonomyInputType" + } + ], + "description": "Input type of the evaluation taxonomy." } }, - "allOf": [ + "discriminator": { + "propertyName": "type", + "mapping": { + "agent": "#/components/schemas/AgentTaxonomyInput" + } + }, + "description": "Input configuration for the evaluation taxonomy." + }, + "EvaluationTaxonomyInputType": { + "anyOf": [ { - "$ref": "#/components/schemas/RecurrenceSchedule" + "type": "string" + }, + { + "type": "string", + "enum": [ + "agent", + "policy" + ] } ], - "description": "Hourly recurrence schedule." + "description": "Type of the evaluation taxonomy input." }, - "HumanEvaluationPreviewRuleAction": { + "EvaluationTaxonomyInputUpdate": { "type": "object", "required": [ - "type", - "templateId" + "type" ], "properties": { "type": { - "type": "string", - "enum": [ - "humanEvaluationPreview" - ] - }, - "templateId": { "allOf": [ { - "$ref": "#/components/schemas/AssetId" + "$ref": "#/components/schemas/EvaluationTaxonomyInputType" } ], - "description": "Human evaluation template Id." + "description": "Input type of the evaluation taxonomy." } }, - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleAction" + "discriminator": { + "propertyName": "type", + "mapping": { + "agent": "#/components/schemas/AgentTaxonomyInputUpdate" } - ], - "description": "Evaluation rule action for human evaluation." + }, + "description": "Input configuration for the evaluation taxonomy." }, - "HumanEvaluationRuleAction": { + "EvaluationTaxonomyUpdate": { "type": "object", - "required": [ - "type", - "templateId" - ], "properties": { - "type": { + "description": { "type": "string", - "enum": [ - "humanEvaluation" - ] + "description": "The asset description text." }, - "templateId": { + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." + }, + "taxonomyInput": { "allOf": [ { - "$ref": "#/components/schemas/AssetId" + "$ref": "#/components/schemas/EvaluationTaxonomyInputUpdate" } ], - "description": "Human evaluation template Id." + "description": "Input configuration for the evaluation taxonomy." + }, + "taxonomyCategories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaxonomyCategory" + }, + "description": "List of taxonomy categories." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional properties for the evaluation taxonomy." } }, - "allOf": [ + "description": "Evaluation Taxonomy Definition" + }, + "EvaluatorCategory": { + "anyOf": [ { - "$ref": "#/components/schemas/EvaluationRuleAction" + "type": "string" + }, + { + "type": "string", + "enum": [ + "quality", + "safety", + "agents" + ] } ], - "description": "Evaluation rule action for human evaluation." + "description": "The category of the evaluator" }, - "Index": { + "EvaluatorConfiguration": { "type": "object", "required": [ - "type", - "name", - "version" + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "Identifier of the evaluator." + }, + "initParams": { + "type": "object", + "additionalProperties": {}, + "description": "Initialization parameters of the evaluator." + }, + "dataMapping": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Data parameters of the evaluator." + } + }, + "description": "Evaluator Configuration" + }, + "EvaluatorCredentialRequest": { + "type": "object", + "required": [ + "blobUri" + ], + "properties": { + "blobUri": { + "type": "string", + "format": "uri", + "description": "The blob URI for the evaluator storage. Example: `https://account.blob.core.windows.net:443/container`" + } + }, + "description": "Request body for getting evaluator credentials" + }, + "EvaluatorDefinition": { + "type": "object", + "required": [ + "type" ], "properties": { "type": { "allOf": [ { - "$ref": "#/components/schemas/IndexType" + "$ref": "#/components/schemas/EvaluatorDefinitionType" } ], - "description": "Type of index" + "description": "The type of evaluator definition" }, - "id": { - "type": "string", - "description": "Asset ID, a unique identifier for the asset", - "readOnly": true + "init_parameters": { + "type": "object", + "additionalProperties": {}, + "description": "The JSON schema (Draft 2020-12) for the evaluator's input parameters. This includes parameters like type, properties, required." }, - "name": { - "type": "string", - "description": "The name of the resource", - "readOnly": true + "data_schema": { + "type": "object", + "additionalProperties": {}, + "description": "The JSON schema (Draft 2020-12) for the evaluator's input data. This includes parameters like type, properties, required." }, - "version": { - "type": "string", - "description": "The version of the resource", - "readOnly": true + "metrics": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/EvaluatorMetric" + }, + "description": "List of output metrics produced by this evaluator" } }, "discriminator": { "propertyName": "type", "mapping": { - "AzureSearch": "#/components/schemas/AzureAISearchIndex", - "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndex", - "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndex" + "code": "#/components/schemas/CodeBasedEvaluatorDefinition", + "prompt": "#/components/schemas/PromptBasedEvaluatorDefinition" } }, - "description": "Index resource Definition" + "description": "Base evaluator configuration with discriminator" }, - "IndexType": { + "EvaluatorDefinitionType": { "anyOf": [ { "type": "string" @@ -24874,662 +18108,797 @@ { "type": "string", "enum": [ - "AzureSearch", - "CosmosDBNoSqlVectorStore", - "ManagedAzureSearch" + "prompt", + "code", + "prompt_and_code", + "service", + "openai_graders" ] } - ] + ], + "description": "The type of evaluator definition" }, - "IndexUpdate": { + "EvaluatorMetric": { "type": "object", - "required": [ - "type" - ], "properties": { "type": { "allOf": [ { - "$ref": "#/components/schemas/IndexType" + "$ref": "#/components/schemas/EvaluatorMetricType" } ], - "description": "Type of index" + "description": "Type of the metric." }, - "description": { + "desirable_direction": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluatorMetricDirection" + } + ], + "description": "It indicates whether a higher value is better or a lower value is better for this metric." + }, + "min_value": { + "type": "number", + "format": "float", + "description": "Minimum value for the metric" + }, + "max_value": { + "type": "number", + "format": "float", + "description": "Maximum value for the metric. If not specified, it is assumed to be unbounded." + }, + "threshold": { + "type": "number", + "format": "float", + "description": "Default pass/fail threshold for this metric." + }, + "is_primary": { + "type": "boolean", + "description": "Indicates if this metric is primary when there are multiple metrics." + } + }, + "description": "Evaluator Metric" + }, + "EvaluatorMetricDirection": { + "anyOf": [ + { + "type": "string" + }, + { "type": "string", - "description": "The asset description text." + "enum": [ + "increase", + "decrease", + "neutral" + ] + } + ], + "description": "The direction of the metric indicating whether a higher value is better, a lower value is better, or neutral" + }, + "EvaluatorMetricType": { + "anyOf": [ + { + "type": "string" }, - "tags": { + { + "type": "string", + "enum": [ + "ordinal", + "continuous", + "boolean" + ] + } + ], + "description": "The type of the evaluator" + }, + "EvaluatorType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "builtin", + "custom" + ] + } + ], + "description": "The type of the evaluator" + }, + "EvaluatorVersion": { + "type": "object", + "required": [ + "evaluator_type", + "categories", + "definition", + "created_by", + "created_at", + "modified_at", + "name", + "version" + ], + "properties": { + "display_name": { + "type": "string", + "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." + }, + "metadata": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Tag dictionary. Tags can be added, removed, and updated." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "AzureSearch": "#/components/schemas/AzureAISearchIndexUpdate", - "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndexUpdate", - "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndexUpdate" + "description": "Metadata about the evaluator" + }, + "evaluator_type": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluatorType" + } + ], + "description": "The type of the evaluator" + }, + "categories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluatorCategory" + }, + "description": "The categories of the evaluator" + }, + "definition": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluatorDefinition" + } + ], + "description": "Definition of the evaluator" + }, + "created_by": { + "type": "string", + "description": "Creator of the evaluator", + "readOnly": true + }, + "created_at": { + "type": "string", + "description": "Creation date/time of the evaluator", + "readOnly": true + }, + "modified_at": { + "type": "string", + "description": "Last modified date/time of the evaluator", + "readOnly": true + }, + "id": { + "type": "string", + "description": "Asset ID, a unique identifier for the asset", + "readOnly": true + }, + "name": { + "type": "string", + "description": "The name of the resource", + "readOnly": true + }, + "version": { + "type": "string", + "description": "The version of the resource", + "readOnly": true } }, - "description": "Index resource Definition" + "description": "Evaluator Definition" }, - "Input": { + "EvaluatorVersionCreate": { "type": "object", "required": [ - "jobInputType" + "evaluator_type", + "categories", + "definition" ], "properties": { - "jobInputType": { + "display_name": { + "type": "string", + "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Metadata about the evaluator" + }, + "evaluator_type": { "allOf": [ { - "$ref": "#/components/schemas/AssetTypes" + "$ref": "#/components/schemas/EvaluatorType" } ], - "description": "Specifies the type of job input." + "description": "The type of the evaluator" }, - "uri": { - "type": "string", - "description": "Input Asset URI. Required for uri_file, uri_folder, and safetensors_model types." + "categories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluatorCategory" + }, + "description": "The categories of the evaluator" }, - "mode": { + "definition": { "allOf": [ { - "$ref": "#/components/schemas/InputOutputModes" + "$ref": "#/components/schemas/EvaluatorDefinition" } ], - "description": "Input Asset Delivery Mode. Applies to uri-based inputs." + "description": "Definition of the evaluator" }, - "value": { + "description": { "type": "string", - "description": "Literal value. Required for literal type." + "description": "The asset description text." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." } }, - "description": "Job input definition." + "description": "Evaluator Definition" }, - "InputData": { + "EvaluatorVersionUpdate": { "type": "object", - "required": [ - "type" - ], "properties": { - "type": { + "display_name": { "type": "string", - "description": "Type of the data" - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "dataset": "#/components/schemas/InputDataset" + "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Metadata about the evaluator" + }, + "categories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluatorCategory" + }, + "description": "The categories of the evaluator" + }, + "description": { + "type": "string", + "description": "The asset description text." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." } }, - "description": "Abstract data class." + "description": "Evaluator Definition" }, - "InputDataset": { + "FabricDataAgentToolCall": { "type": "object", "required": [ "type", - "id" + "call_id", + "arguments", + "status" ], "properties": { "type": { "type": "string", "enum": [ - "dataset" + "fabric_dataagent_preview_call" ] }, - "id": { + "call_id": { "type": "string", - "description": "Evaluation input data" + "description": "The unique ID of the tool call generated by the model." + }, + "arguments": { + "type": "string", + "description": "A JSON string of the arguments to pass to the tool." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/InputData" - } - ], - "description": "Dataset as source for evaluation." - }, - "InputOutputModes": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "ReadOnlyMount", - "ReadWriteMount", - "Download", - "Direct", - "Upload" - ] + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "Enum to determine the input/output data delivery mode." + "description": "A Fabric data agent tool call." }, - "Insight": { + "FabricDataAgentToolCallOutput": { "type": "object", "required": [ - "id", - "metadata", - "state", - "displayName", - "request" + "type", + "call_id", + "status" ], "properties": { - "id": { + "type": { "type": "string", - "description": "The unique identifier for the insights report.", - "readOnly": true - }, - "metadata": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightsMetadata" - } - ], - "description": "Metadata about the insights report.", - "readOnly": true - }, - "state": { - "allOf": [ - { - "$ref": "#/components/schemas/Azure.Core.Foundations.OperationState" - } - ], - "description": "The current state of the insights.", - "readOnly": true + "enum": [ + "fabric_dataagent_preview_call_output" + ] }, - "displayName": { + "call_id": { "type": "string", - "description": "User friendly display name for the insight." + "description": "The unique ID of the tool call generated by the model." }, - "request": { + "output": { "allOf": [ { - "$ref": "#/components/schemas/InsightRequest" + "$ref": "#/components/schemas/ToolCallOutputContent" } ], - "description": "Request for the insights analysis." + "description": "The output from the Fabric data agent tool call." }, - "result": { + "status": { "allOf": [ { - "$ref": "#/components/schemas/InsightResult" + "$ref": "#/components/schemas/ToolCallStatus" } ], - "description": "The result of the insights report.", - "readOnly": true + "description": "The status of the tool call." } }, - "description": "The response body for cluster insights." + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.OutputItem" + } + ], + "description": "The output of a Fabric data agent tool call." }, - "InsightCluster": { + "FabricDataAgentToolParameters": { "type": "object", - "required": [ - "id", - "label", - "suggestion", - "suggestionTitle", - "description", - "weight" - ], "properties": { - "id": { - "type": "string", - "description": "The id of the analysis cluster." - }, - "label": { - "type": "string", - "description": "Label for the cluster" - }, - "suggestion": { - "type": "string", - "description": "Suggestion for the cluster" - }, - "suggestionTitle": { + "name": { "type": "string", - "description": "The title of the suggestion for the cluster" + "description": "Optional user-defined name for this tool or configuration." }, "description": { "type": "string", - "description": "Description of the analysis cluster." - }, - "weight": { - "type": "integer", - "format": "int32", - "description": "The weight of the analysis cluster. This indicate number of samples in the cluster." - }, - "subClusters": { - "description": "List of subclusters within this cluster. Empty if no subclusters exist.", - "type": "array", - "items": { - "$ref": "#/components/schemas/InsightCluster" - } + "description": "Optional user-defined description for this tool or configuration." }, - "samples": { + "project_connections": { "type": "array", "items": { - "$ref": "#/components/schemas/InsightSample" + "$ref": "#/components/schemas/ToolProjectConnection" }, - "description": "List of samples that belong to this cluster. Empty if samples are part of subclusters." + "maxItems": 1, + "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." } }, - "description": "A cluster of analysis samples." + "description": "The fabric data agent tool parameters." }, - "InsightModelConfiguration": { + "FileDatasetVersion": { "type": "object", "required": [ - "modelDeploymentName" + "type" ], "properties": { - "modelDeploymentName": { + "type": { "type": "string", - "description": "The model deployment to be evaluated. Accepts either the deployment name alone or with the connection name as '{connectionName}/'." + "enum": [ + "uri_file" + ], + "description": "Dataset type" } }, - "description": "Configuration of the model used in the insight generation." + "allOf": [ + { + "$ref": "#/components/schemas/DatasetVersion" + } + ], + "description": "FileDatasetVersion Definition" }, - "InsightRequest": { + "FileDatasetVersionUpdate": { "type": "object", "required": [ "type" ], "properties": { "type": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightType" - } + "type": "string", + "enum": [ + "uri_file" ], - "description": "The type of request." + "description": "Dataset type" } }, - "discriminator": { - "propertyName": "type", - "mapping": { - "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightRequest", - "AgentClusterInsight": "#/components/schemas/AgentClusterInsightRequest", - "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightRequest" + "allOf": [ + { + "$ref": "#/components/schemas/DatasetVersionUpdate" + } + ], + "description": "FileDatasetVersion Definition" + }, + "FixedRatioVersionSelectionRule": { + "type": "object", + "required": [ + "type", + "traffic_percentage" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "FixedRatio" + ] + }, + "traffic_percentage": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 100, + "description": "The percentage of traffic to route to the version. Must be between 0 and 100." } }, - "description": "The request of the insights report." + "allOf": [ + { + "$ref": "#/components/schemas/VersionSelectionRule" + } + ], + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "InsightResult": { + "FolderDatasetVersion": { "type": "object", "required": [ "type" ], "properties": { "type": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightType" - } + "type": "string", + "enum": [ + "uri_folder" ], - "description": "The type of insights result." + "description": "Dataset type" } }, - "discriminator": { - "propertyName": "type", - "mapping": { - "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightResult", - "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightResult", - "AgentClusterInsight": "#/components/schemas/AgentClusterInsightResult" + "allOf": [ + { + "$ref": "#/components/schemas/DatasetVersion" + } + ], + "description": "FileDatasetVersion Definition" + }, + "FolderDatasetVersionUpdate": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "uri_folder" + ], + "description": "Dataset type" } }, - "description": "The result of the insights." + "allOf": [ + { + "$ref": "#/components/schemas/DatasetVersionUpdate" + } + ], + "description": "FileDatasetVersion Definition" }, - "InsightSample": { + "FunctionToolCall": { "type": "object", "required": [ - "id", - "type", - "features", - "correlationInfo" + "name", + "arguments" ], "properties": { - "id": { + "name": { "type": "string", - "description": "The unique identifier for the analysis sample." + "description": "The name of the function to call." }, - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/SampleType" - } - ], - "description": "Sample type" + "arguments": { + "type": "string", + "description": "The arguments to call the function with, as generated by the model in JSON format." + } + }, + "description": "Details of a function tool call." + }, + "HeaderIsolationKeySource": { + "type": "object", + "required": [ + "kind", + "user_isolation_key", + "chat_isolation_key" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "Header" + ] }, - "features": { - "type": "object", - "additionalProperties": {}, - "description": "Features to help with additional filtering of data in UX." + "user_isolation_key": { + "type": "string", + "description": "The user isolation key header value" }, - "correlationInfo": { - "type": "object", - "additionalProperties": {}, - "description": "Info about the correlation for the analysis sample." + "chat_isolation_key": { + "type": "string", + "description": "The chat isolation key header value" } }, - "discriminator": { - "propertyName": "type", - "mapping": { - "EvaluationResultSample": "#/components/schemas/EvaluationResultSample" + "allOf": [ + { + "$ref": "#/components/schemas/IsolationKeySource" } - }, - "description": "A sample from the analysis." + ], + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "InsightScheduleTask": { + "HeaderTelemetryEndpointAuth": { "type": "object", "required": [ "type", - "insight" + "header_name", + "secret_id", + "secret_key" ], "properties": { "type": { "type": "string", "enum": [ - "Insight" - ] - }, - "insight": { - "allOf": [ - { - "$ref": "#/components/schemas/Insight" - } + "header" ], - "description": "The insight payload." + "description": "The authentication type, always 'header' for header-based secret authentication." + }, + "header_name": { + "type": "string", + "description": "The name of the HTTP header to inject the secret value into.", + "example": "X-Otlp-Api-Key" + }, + "secret_id": { + "type": "string", + "description": "The identifier of the secret store or connection.", + "example": "my-secret-store" + }, + "secret_key": { + "type": "string", + "description": "The key within the secret to retrieve the authentication value.", + "example": "OTLP_KEY" } }, "allOf": [ { - "$ref": "#/components/schemas/ScheduleTask" + "$ref": "#/components/schemas/TelemetryEndpointAuth" } ], - "description": "Insight task for the schedule." + "description": "Header-based secret authentication for a telemetry endpoint. The resolved secret value is injected as an HTTP header.", + "x-ms-foundry-meta": { + "required_previews": [ + "HostedAgents=V1Preview" + ] + } }, - "InsightSummary": { + "HostedAgentDefinition": { "type": "object", "required": [ - "sampleCount", - "uniqueSubclusterCount", - "uniqueClusterCount", - "method", - "usage" + "kind", + "container_protocol_versions", + "cpu", + "memory" ], "properties": { - "sampleCount": { - "type": "integer", - "format": "int32", - "description": "Total number of samples analyzed." + "kind": { + "type": "string", + "enum": [ + "hosted" + ] }, - "uniqueSubclusterCount": { - "type": "integer", - "format": "int32", - "description": "Total number of unique subcluster labels." + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" + }, + "description": "An array of tools the hosted agent's model may call while generating a response. You\ncan specify which tool to use by setting the `tool_choice` parameter." + }, + "container_protocol_versions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProtocolVersionRecord" + }, + "description": "The protocols that the agent supports for ingress communication of the containers.", + "example": [ + { + "protocol": "responses", + "version": "v0.1.1" + }, + { + "protocol": "a2a", + "version": "v0.3.0" + } + ] + }, + "cpu": { + "type": "string", + "description": "The CPU configuration for the hosted agent.", + "example": "0.25" + }, + "memory": { + "type": "string", + "description": "The memory configuration for the hosted agent.", + "example": "0.5Gi" }, - "uniqueClusterCount": { - "type": "integer", - "format": "int32", - "description": "Total number of unique clusters." + "environment_variables": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Environment variables to set in the hosted agent container.", + "example": { + "name": "LOG_LEVEL", + "value": "debug" + } }, - "method": { + "image": { "type": "string", - "description": "Method used for clustering." + "description": "The image ID for the agent, applicable to image-based hosted agents.", + "example": "my-registry.azurecr.io/my-hosted-agent:latest" }, - "usage": { + "telemetry_config": { "allOf": [ { - "$ref": "#/components/schemas/ClusterTokenUsage" + "$ref": "#/components/schemas/TelemetryConfig" } ], - "description": "Token usage while performing clustering analysis" + "description": "Optional customer-supplied telemetry configuration for exporting container logs, traces, and metrics." } }, - "description": "Summary of the error cluster analysis." - }, - "InsightType": { - "anyOf": [ - { - "type": "string" - }, + "allOf": [ { - "type": "string", - "enum": [ - "EvaluationRunClusterInsight", - "AgentClusterInsight", - "EvaluationComparison" - ] + "$ref": "#/components/schemas/AgentDefinition" } ], - "description": "The request of the insights." + "description": "The hosted agent definition.", + "x-ms-foundry-meta": { + "required_previews": [ + "HostedAgents=V1Preview" + ] + } }, - "InsightsMetadata": { + "HourlyRecurrenceSchedule": { "type": "object", "required": [ - "createdAt" + "type" ], "properties": { - "createdAt": { - "type": "string", - "format": "date-time", - "description": "The timestamp when the insights were created." - }, - "completedAt": { + "type": { "type": "string", - "format": "date-time", - "description": "The timestamp when the insights were completed." - } - }, - "description": "Metadata about the insights." - }, - "IsolationKeySource": { - "type": "object", - "required": [ - "kind" - ], - "properties": { - "kind": { - "$ref": "#/components/schemas/IsolationKeySourceKind" - } - }, - "discriminator": { - "propertyName": "kind", - "mapping": { - "Entra": "#/components/schemas/EntraIsolationKeySource", - "Header": "#/components/schemas/HeaderIsolationKeySource" + "enum": [ + "Hourly" + ] } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "IsolationKeySourceKind": { - "anyOf": [ - { - "type": "string" - }, + "allOf": [ { - "type": "string", - "enum": [ - "Entra", - "Header" - ] + "$ref": "#/components/schemas/RecurrenceSchedule" } ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "Hourly recurrence schedule." }, - "ItemGenerationParams": { + "HumanEvaluationPreviewRuleAction": { "type": "object", "required": [ - "type" + "type", + "templateId" ], "properties": { "type": { + "type": "string", + "enum": [ + "humanEvaluationPreview" + ] + }, + "templateId": { "allOf": [ { - "$ref": "#/components/schemas/ItemGenerationParamsType" + "$ref": "#/components/schemas/AssetId" } ], - "description": "The type of item generation parameters to use." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "red_team": "#/components/schemas/RedTeamItemGenerationParams", - "red_team_seed_prompts": "#/components/schemas/RedTeamSeedPromptsItemGenerationParams", - "red_team_taxonomy": "#/components/schemas/RedTeamTaxonomyItemGenerationParams", - "response_retrieval": "#/components/schemas/ResponseRetrievalItemGenerationParams" + "description": "Human evaluation template Id." } }, - "description": "Represents the set of parameters used to control item generation operations." - }, - "ItemGenerationParamsType": { - "anyOf": [ - { - "type": "string" - }, + "allOf": [ { - "type": "string", - "enum": [ - "red_team", - "response_retrieval", - "red_team_seed_prompts", - "red_team_taxonomy", - "synthetic_data_gen_preview" - ] + "$ref": "#/components/schemas/EvaluationRuleAction" } ], - "description": "The types of parameters for red team item generation." + "description": "Evaluation rule action for human evaluation." }, - "Job": { + "HumanEvaluationRuleAction": { "type": "object", "required": [ - "name", - "properties" + "type", + "templateId" ], "properties": { - "name": { - "type": "string", - "description": "The name of the training job. This is case-sensitive.", - "readOnly": true - }, - "id": { - "type": "string", - "description": "The resource ID.", - "readOnly": true - }, "type": { "type": "string", - "description": "The resource type.", - "readOnly": true - }, - "properties": { - "allOf": [ - { - "$ref": "#/components/schemas/JobProperties" - } - ], - "description": "Properties of the job." + "enum": [ + "humanEvaluation" + ] }, - "systemData": { + "templateId": { "allOf": [ { - "$ref": "#/components/schemas/SystemData" + "$ref": "#/components/schemas/AssetId" } ], - "description": "Metadata pertaining to creation and last modification of the resource.", - "readOnly": true + "description": "Human evaluation template Id." } }, - "description": "Training job resource." + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleAction" + } + ], + "description": "Evaluation rule action for human evaluation." }, - "JobArtifact": { + "Index": { "type": "object", "required": [ - "path" + "type", + "name", + "version" ], "properties": { - "path": { - "type": "string", - "description": "Artifact path relative to the job artifact root.", - "readOnly": true - }, "type": { "allOf": [ { - "$ref": "#/components/schemas/JobArtifactType" + "$ref": "#/components/schemas/IndexType" } ], - "description": "Artifact type.", - "readOnly": true + "description": "Type of index" }, - "size": { - "type": "integer", - "format": "int64", - "description": "Artifact size in bytes.", + "id": { + "type": "string", + "description": "Asset ID, a unique identifier for the asset", "readOnly": true }, - "createdTimeUtc": { + "name": { "type": "string", - "format": "date-time", - "description": "Time the artifact was created.", + "description": "The name of the resource", "readOnly": true }, - "updatedTimeUtc": { + "version": { "type": "string", - "format": "date-time", - "description": "Time the artifact was last updated.", + "description": "The version of the resource", "readOnly": true } }, - "description": "Metadata for an artifact produced by or attached to a job." - }, - "JobArtifactContentInfo": { - "type": "object", - "required": [ - "path" - ], - "properties": { - "path": { - "type": "string", - "description": "Artifact path relative to the job artifact root.", - "readOnly": true - }, - "contentUri": { - "type": "string", - "format": "uri", - "description": "Download URI for the artifact content.", - "readOnly": true - }, - "contentType": { - "type": "string", - "description": "MIME type of the content.", - "readOnly": true - }, - "expiresAtUtc": { - "type": "string", - "format": "date-time", - "description": "Time the content URI expires.", - "readOnly": true + "discriminator": { + "propertyName": "type", + "mapping": { + "AzureSearch": "#/components/schemas/AzureAISearchIndex", + "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndex", + "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndex" } }, - "description": "Content access information for a job artifact." + "description": "Index resource Definition" }, - "JobArtifactType": { + "IndexType": { "anyOf": [ { "type": "string" @@ -25537,547 +18906,376 @@ { "type": "string", "enum": [ - "File", - "Directory" + "AzureSearch", + "CosmosDBNoSqlVectorStore", + "ManagedAzureSearch" ] } - ], - "description": "Type of a job artifact." + ] }, - "JobCreate": { + "IndexUpdate": { "type": "object", "required": [ - "name", - "properties" + "type" ], "properties": { - "name": { - "type": "string", - "description": "The name of the training job. This is case-sensitive." - }, - "properties": { + "type": { "allOf": [ { - "$ref": "#/components/schemas/JobProperties" + "$ref": "#/components/schemas/IndexType" } ], - "description": "Properties of the job." - } - }, - "description": "Request body for creating a training job." - }, - "JobMetric": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Metric name.", - "readOnly": true + "description": "Type of index" }, - "metricType": { - "allOf": [ - { - "$ref": "#/components/schemas/JobMetricType" - } - ], - "description": "Metric type.", - "readOnly": true + "description": { + "type": "string", + "description": "The asset description text." }, - "columns": { + "tags": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Column metadata for structured metric values.", - "readOnly": true + "description": "Tag dictionary. Tags can be added, removed, and updated." } }, - "description": "Metadata for a metric emitted by a job or run." - }, - "JobMetricAggregate": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Metric name.", - "readOnly": true - }, - "startUtc": { - "type": "string", - "format": "date-time", - "description": "Aggregate window start.", - "readOnly": true - }, - "endUtc": { - "type": "string", - "format": "date-time", - "description": "Aggregate window end.", - "readOnly": true - }, - "values": { - "type": "object", - "additionalProperties": {}, - "description": "Aggregate values.", - "readOnly": true + "discriminator": { + "propertyName": "type", + "mapping": { + "AzureSearch": "#/components/schemas/AzureAISearchIndexUpdate", + "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndexUpdate", + "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndexUpdate" } }, - "description": "Aggregated values for a metric." + "description": "Index resource Definition" }, - "JobMetricLastValue": { + "InputData": { "type": "object", "required": [ - "name" + "type" ], "properties": { - "name": { + "type": { "type": "string", - "description": "Metric name.", - "readOnly": true - }, - "value": { - "allOf": [ - { - "$ref": "#/components/schemas/JobMetricPoint" - } - ], - "description": "Latest metric point.", - "readOnly": true + "description": "Type of the data" } }, - "description": "Latest value for a metric." - }, - "JobMetricPoint": { - "type": "object", - "properties": { - "metricId": { - "type": "string", - "description": "Metric identifier.", - "readOnly": true - }, - "step": { - "type": "integer", - "format": "int64", - "description": "Metric step.", - "readOnly": true - }, - "createdUtc": { - "type": "string", - "format": "date-time", - "description": "Time the metric point was created.", - "readOnly": true - }, - "data": { - "type": "object", - "additionalProperties": {}, - "description": "Metric data values.", - "readOnly": true + "discriminator": { + "propertyName": "type", + "mapping": { + "dataset": "#/components/schemas/InputDataset" } }, - "description": "A metric data point." + "description": "Abstract data class." }, - "JobMetricSample": { + "InputDataset": { "type": "object", "required": [ - "name", - "points" + "type", + "id" ], "properties": { - "name": { - "type": "string", - "description": "Metric name.", - "readOnly": true - }, - "points": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetricPoint" - }, - "description": "Sampled metric points.", - "readOnly": true - } - }, - "description": "Sampled values for a metric." - }, - "JobMetricType": { - "anyOf": [ - { - "type": "string" - }, - { + "type": { "type": "string", "enum": [ - "Scalar", - "Table", - "Image" + "dataset" ] - } - ], - "description": "The kind of metric emitted by a job." - }, - "JobOperationError": { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "Machine-readable error code." }, - "message": { + "id": { "type": "string", - "description": "Human-readable error message." - }, - "details": { - "type": "object", - "additionalProperties": {}, - "description": "Additional error information." + "description": "Evaluation input data" } }, - "description": "Error details for an asynchronous training job operation." + "allOf": [ + { + "$ref": "#/components/schemas/InputData" + } + ], + "description": "Dataset as source for evaluation." }, - "JobOperationResource": { + "Insight": { "type": "object", "required": [ - "status" + "id", + "metadata", + "state", + "displayName", + "request" ], "properties": { "id": { "type": "string", - "description": "Operation resource ID.", - "readOnly": true - }, - "name": { - "type": "string", - "description": "Operation name.", + "description": "The unique identifier for the insights report.", "readOnly": true }, - "status": { + "metadata": { "allOf": [ { - "$ref": "#/components/schemas/JobOperationStatus" + "$ref": "#/components/schemas/InsightsMetadata" } ], - "description": "Operation status.", - "readOnly": true - }, - "properties": { - "type": "object", - "additionalProperties": {}, - "description": "Operation result properties.", - "readOnly": true - }, - "startTime": { - "type": "string", - "format": "date-time", - "description": "Operation start time.", - "readOnly": true - }, - "endTime": { - "type": "string", - "format": "date-time", - "description": "Operation end time.", - "readOnly": true - }, - "percentComplete": { - "type": "number", - "format": "double", - "description": "Operation completion percentage from 0 to 100.", + "description": "Metadata about the insights report.", "readOnly": true }, - "error": { + "state": { "allOf": [ { - "$ref": "#/components/schemas/JobOperationError" + "$ref": "#/components/schemas/Azure.Core.Foundations.OperationState" } ], - "description": "Operation error information.", + "description": "The current state of the insights.", "readOnly": true - } - }, - "description": "Asynchronous training job operation resource." - }, - "JobOperationStatus": { - "anyOf": [ - { - "type": "string" }, - { - "type": "string", - "enum": [ - "InProgress", - "Deleting", - "Succeeded", - "Failed", - "Canceled" - ] - } - ], - "description": "Status of an asynchronous training job operation." - }, - "JobOutputReference": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { + "displayName": { "type": "string", - "description": "Output name.", - "readOnly": true + "description": "User friendly display name for the insight." }, - "type": { + "request": { "allOf": [ { - "$ref": "#/components/schemas/AssetTypes" + "$ref": "#/components/schemas/InsightRequest" } ], - "description": "Output asset type.", - "readOnly": true + "description": "Request for the insights analysis." }, - "mode": { + "result": { "allOf": [ { - "$ref": "#/components/schemas/InputOutputModes" + "$ref": "#/components/schemas/InsightResult" } ], - "description": "Output delivery mode.", + "description": "The result of the insights report.", "readOnly": true - }, - "uri": { + } + }, + "description": "The response body for cluster insights." + }, + "InsightCluster": { + "type": "object", + "required": [ + "id", + "label", + "suggestion", + "suggestionTitle", + "description", + "weight" + ], + "properties": { + "id": { "type": "string", - "description": "Output storage URI.", - "readOnly": true + "description": "The id of the analysis cluster." }, - "assetName": { + "label": { "type": "string", - "description": "Registered asset name, if the output produced an asset.", - "readOnly": true + "description": "Label for the cluster" }, - "assetVersion": { + "suggestion": { "type": "string", - "description": "Registered asset version, if the output produced an asset.", - "readOnly": true + "description": "Suggestion for the cluster" }, - "baseModelId": { + "suggestionTitle": { "type": "string", - "description": "Base model ID for model outputs.", - "readOnly": true + "description": "The title of the suggestion for the cluster" }, "description": { "type": "string", - "description": "Output description.", - "readOnly": true + "description": "Description of the analysis cluster." + }, + "weight": { + "type": "integer", + "format": "int32", + "description": "The weight of the analysis cluster. This indicate number of samples in the cluster." + }, + "subClusters": { + "description": "List of subclusters within this cluster. Empty if no subclusters exist.", + "type": "array", + "items": { + "$ref": "#/components/schemas/InsightCluster" + } + }, + "samples": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InsightSample" + }, + "description": "List of samples that belong to this cluster. Empty if samples are part of subclusters." + } + }, + "description": "A cluster of analysis samples." + }, + "InsightModelConfiguration": { + "type": "object", + "required": [ + "modelDeploymentName" + ], + "properties": { + "modelDeploymentName": { + "type": "string", + "description": "The model deployment to be evaluated. Accepts either the deployment name alone or with the connection name as '{connectionName}/'." } }, - "description": "Named output produced by a job." + "description": "Configuration of the model used in the insight generation." }, - "JobProperties": { + "InsightRequest": { "type": "object", "required": [ - "jobType" + "type" ], "properties": { - "jobType": { - "type": "string", - "description": "Job type." + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/InsightType" + } + ], + "description": "The type of request." } }, "discriminator": { - "propertyName": "jobType", + "propertyName": "type", "mapping": { - "Command": "#/components/schemas/CommandJob" + "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightRequest", + "AgentClusterInsight": "#/components/schemas/AgentClusterInsightRequest", + "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightRequest" } }, - "description": "Base properties of a Job." + "description": "The request of the insights report." }, - "JobResourceConfiguration": { + "InsightResult": { "type": "object", + "required": [ + "type" + ], "properties": { - "instanceCount": { - "type": "integer", - "format": "int32", - "description": "Optional number of instances or nodes used by the compute target." - }, - "instanceType": { - "type": "string", - "description": "Optional type of VM used as supported by the compute target." - }, - "properties": { - "type": "object", - "additionalProperties": {}, - "description": "Additional properties bag." - }, - "shmSize": { - "type": "string", - "description": "Size of the docker container's shared memory block. This should be in the format of (number)(unit) where number as to be greater than 0 and the unit can be one of b(bytes), k(kilobytes), m(megabytes), or g(gigabytes)." - }, - "dockerArgs": { - "type": "string", - "description": "Extra arguments to pass to the Docker run command. This would override any parameters that have already been set by the system, or in this section. This parameter is only supported for Azure ML compute types." + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/InsightType" + } + ], + "description": "The type of insights result." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightResult", + "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightResult", + "AgentClusterInsight": "#/components/schemas/AgentClusterInsightResult" } }, - "description": "Compute Resource configuration for the job." + "description": "The result of the insights." }, - "JobRun": { + "InsightSample": { "type": "object", "required": [ "id", - "jobName" + "type", + "features", + "correlationInfo" ], "properties": { "id": { "type": "string", - "description": "The run identifier.", - "readOnly": true - }, - "jobName": { - "type": "string", - "description": "The job name this run belongs to.", - "readOnly": true + "description": "The unique identifier for the analysis sample." }, - "status": { + "type": { "allOf": [ { - "$ref": "#/components/schemas/JobRunStatus" + "$ref": "#/components/schemas/SampleType" } ], - "description": "The run status.", - "readOnly": true - }, - "statusReason": { - "type": "string", - "description": "Additional status reason.", - "readOnly": true - }, - "startTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Time the run started.", - "readOnly": true - }, - "endTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Time the run ended.", - "readOnly": true - }, - "lastStartTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Most recent time the run started running.", - "readOnly": true - }, - "computeDuration": { - "type": "string", - "format": "duration", - "description": "Total compute duration consumed by the run.", - "readOnly": true + "description": "Sample type" }, - "queueingInfo": { + "features": { "type": "object", "additionalProperties": {}, - "description": "Queueing details associated with the run.", - "readOnly": true + "description": "Features to help with additional filtering of data in UX." }, - "computeDetails": { - "allOf": [ - { - "$ref": "#/components/schemas/JobRunComputeDetails" - } - ], - "description": "Compute details associated with the run.", - "readOnly": true + "correlationInfo": { + "type": "object", + "additionalProperties": {}, + "description": "Info about the correlation for the analysis sample." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "EvaluationResultSample": "#/components/schemas/EvaluationResultSample" + } + }, + "description": "A sample from the analysis." + }, + "InsightScheduleTask": { + "type": "object", + "required": [ + "type", + "insight" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Insight" + ] }, - "error": { + "insight": { "allOf": [ { - "$ref": "#/components/schemas/JobRunError" + "$ref": "#/components/schemas/Insight" } ], - "description": "Terminal error for the run, if any.", - "readOnly": true - }, - "warnings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobRunWarning" - }, - "description": "Warnings emitted for the run.", - "readOnly": true - }, - "isCurrent": { - "type": "boolean", - "description": "Whether this run is the current run for the job.", - "readOnly": true + "description": "The insight payload." } }, - "description": "One execution run of a training job." + "allOf": [ + { + "$ref": "#/components/schemas/ScheduleTask" + } + ], + "description": "Insight task for the schedule." }, - "JobRunComputeDetails": { + "InsightSummary": { "type": "object", + "required": [ + "sampleCount", + "uniqueSubclusterCount", + "uniqueClusterCount", + "method", + "usage" + ], "properties": { - "vmSize": { - "type": "string", - "description": "Virtual machine size used for this run attempt.", - "readOnly": true - }, - "instanceType": { - "type": "string", - "description": "Instance type used for this run attempt.", - "readOnly": true - }, - "instanceCount": { + "sampleCount": { "type": "integer", "format": "int32", - "description": "Number of instances allocated to this run attempt.", - "readOnly": true + "description": "Total number of samples analyzed." }, - "gpuCount": { + "uniqueSubclusterCount": { "type": "integer", "format": "int32", - "description": "Number of GPUs allocated to this run attempt.", - "readOnly": true - }, - "region": { - "type": "string", - "description": "Region where this run attempt was placed.", - "readOnly": true + "description": "Total number of unique subcluster labels." }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional backend-specific compute placement properties.", - "readOnly": true - } - }, - "description": "Compute placement details for a job run attempt." - }, - "JobRunError": { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "Machine-readable error code." + "uniqueClusterCount": { + "type": "integer", + "format": "int32", + "description": "Total number of unique clusters." }, - "message": { + "method": { "type": "string", - "description": "Human-readable error message." + "description": "Method used for clustering." }, - "details": { - "type": "object", - "additionalProperties": {}, - "description": "Additional error details." + "usage": { + "allOf": [ + { + "$ref": "#/components/schemas/ClusterTokenUsage" + } + ], + "description": "Token usage while performing clustering analysis" } }, - "description": "Error emitted during a job run." + "description": "Summary of the error cluster analysis." }, - "JobRunStatus": { + "InsightType": { "anyOf": [ { "type": "string" @@ -26085,36 +19283,57 @@ { "type": "string", "enum": [ - "Queued", - "Running", - "Completed", - "Failed", - "Canceled" + "EvaluationRunClusterInsight", + "AgentClusterInsight", + "EvaluationComparison" ] } ], - "description": "Status of a job execution run." + "description": "The request of the insights." }, - "JobRunWarning": { + "InsightsMetadata": { "type": "object", + "required": [ + "createdAt" + ], "properties": { - "code": { + "createdAt": { "type": "string", - "description": "Machine-readable warning code." + "format": "date-time", + "description": "The timestamp when the insights were created." }, - "message": { + "completedAt": { "type": "string", - "description": "Human-readable warning message." - }, - "details": { - "type": "object", - "additionalProperties": {}, - "description": "Additional warning details." + "format": "date-time", + "description": "The timestamp when the insights were completed." + } + }, + "description": "Metadata about the insights." + }, + "IsolationKeySource": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "$ref": "#/components/schemas/IsolationKeySourceKind" } }, - "description": "Warning emitted during a job run." + "discriminator": { + "propertyName": "kind", + "mapping": { + "Entra": "#/components/schemas/EntraIsolationKeySource", + "Header": "#/components/schemas/HeaderIsolationKeySource" + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "JobType": { + "IsolationKeySourceKind": { "anyOf": [ { "type": "string" @@ -26122,13 +19341,44 @@ { "type": "string", "enum": [ - "Command" + "Entra", + "Header" ] } ], - "description": "Type of a job." + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "ItemGenerationParams": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/ItemGenerationParamsType" + } + ], + "description": "The type of item generation parameters to use." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "red_team": "#/components/schemas/RedTeamItemGenerationParams", + "red_team_seed_prompts": "#/components/schemas/RedTeamSeedPromptsItemGenerationParams", + "red_team_taxonomy": "#/components/schemas/RedTeamTaxonomyItemGenerationParams", + "response_retrieval": "#/components/schemas/ResponseRetrievalItemGenerationParams" + } + }, + "description": "Represents the set of parameters used to control item generation operations." }, - "ListViewType": { + "ItemGenerationParamsType": { "anyOf": [ { "type": "string" @@ -26136,13 +19386,15 @@ { "type": "string", "enum": [ - "ActiveOnly", - "ArchivedOnly", - "All" + "red_team", + "response_retrieval", + "red_team_seed_prompts", + "red_team_taxonomy", + "synthetic_data_gen_preview" ] } ], - "description": "Specifies which jobs to include in a list result based on their lifecycle state." + "description": "The types of parameters for red team item generation." }, "ManagedAgentIdentityBlueprint": { "type": "object", @@ -27045,16 +20297,6 @@ ], "description": "The input definition information for a Microsoft Fabric tool as used to configure an agent." }, - "Mlflow.MlflowPayload": { - "type": "object", - "additionalProperties": {}, - "description": "Generic MLflow compatibility request payload." - }, - "Mlflow.MlflowResponse": { - "type": "object", - "additionalProperties": {}, - "description": "Generic MLflow compatibility response payload." - }, "ModelDeployment": { "type": "object", "required": [ @@ -27206,32 +20448,6 @@ ], "description": "Monthly recurrence schedule." }, - "MpiDistribution": { - "type": "object", - "required": [ - "distributionType" - ], - "properties": { - "distributionType": { - "type": "string", - "enum": [ - "Mpi" - ], - "description": "Specifies the type of distribution framework." - }, - "processCountPerNode": { - "type": "integer", - "format": "int32", - "description": "Number of processes per MPI node." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/DistributionConfiguration" - } - ], - "description": "MPI distribution configuration." - }, "NoAuthenticationCredentials": { "type": "object", "required": [ @@ -47090,51 +40306,6 @@ ] } }, - "Output": { - "type": "object", - "required": [ - "jobOutputType" - ], - "properties": { - "jobOutputType": { - "allOf": [ - { - "$ref": "#/components/schemas/AssetTypes" - } - ], - "description": "Specifies the type of job output." - }, - "mode": { - "allOf": [ - { - "$ref": "#/components/schemas/InputOutputModes" - } - ], - "description": "Output Asset Delivery Mode." - }, - "assetName": { - "type": "string", - "description": "Name of the output data asset to register." - }, - "assetVersion": { - "type": "string", - "description": "Version of the output data asset to register." - }, - "uri": { - "type": "string", - "description": "Output Asset URI." - }, - "baseModelId": { - "type": "string", - "description": "Base model ID. Applies to safetensors_model outputs." - }, - "description": { - "type": "string", - "description": "Description for the output." - } - }, - "description": "Job output definition." - }, "PageOrder": { "type": "string", "enum": [ @@ -47331,195 +40502,6 @@ }, "description": "Paged collection of Insight items" }, - "PagedJob": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Job" - }, - "description": "The Job items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of Job items" - }, - "PagedJobArtifact": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobArtifact" - }, - "description": "The JobArtifact items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobArtifact items" - }, - "PagedJobArtifactContentInfo": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobArtifactContentInfo" - }, - "description": "The JobArtifactContentInfo items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobArtifactContentInfo items" - }, - "PagedJobMetric": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetric" - }, - "description": "The JobMetric items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetric items" - }, - "PagedJobMetricAggregate": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetricAggregate" - }, - "description": "The JobMetricAggregate items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetricAggregate items" - }, - "PagedJobMetricLastValue": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetricLastValue" - }, - "description": "The JobMetricLastValue items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetricLastValue items" - }, - "PagedJobMetricPoint": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetricPoint" - }, - "description": "The JobMetricPoint items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetricPoint items" - }, - "PagedJobOutputReference": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobOutputReference" - }, - "description": "The JobOutputReference items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobOutputReference items" - }, - "PagedJobRun": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobRun" - }, - "description": "The JobRun items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobRun items" - }, "PagedManagedAgentIdentityBlueprint": { "type": "object", "required": [ @@ -47834,42 +40816,6 @@ }, "description": "A record mapping for a single protocol and its version." }, - "PyTorchDistribution": { - "type": "object", - "required": [ - "distributionType" - ], - "properties": { - "distributionType": { - "type": "string", - "enum": [ - "PyTorch" - ], - "description": "Specifies the type of distribution framework." - }, - "processCountPerInstance": { - "type": "integer", - "format": "int32", - "description": "Number of processes per node." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/DistributionConfiguration" - } - ], - "description": "PyTorch distribution configuration." - }, - "QueueSettings": { - "type": "object", - "properties": { - "jobTier": { - "type": "string", - "description": "Controls the compute job tier." - } - }, - "description": "Queue settings for the job." - }, "RaiConfig": { "type": "object", "required": [ @@ -49030,44 +41976,6 @@ } ] }, - "SystemData": { - "type": "object", - "properties": { - "createdBy": { - "type": "string", - "description": "The identity that created the resource.", - "readOnly": true - }, - "createdByType": { - "type": "string", - "description": "The type of identity that created the resource.", - "readOnly": true - }, - "createdAt": { - "type": "string", - "format": "date-time", - "description": "The timestamp of resource creation (UTC).", - "readOnly": true - }, - "lastModifiedBy": { - "type": "string", - "description": "The identity that last modified the resource.", - "readOnly": true - }, - "lastModifiedByType": { - "type": "string", - "description": "The type of identity that last modified the resource.", - "readOnly": true - }, - "lastModifiedAt": { - "type": "string", - "format": "date-time", - "description": "The timestamp of resource last modification (UTC).", - "readOnly": true - } - }, - "description": "Metadata pertaining to creation and last modification of the resource." - }, "SystemMessage": { "type": "object", "required": [ @@ -49462,37 +42370,6 @@ ] } }, - "TensorFlowDistribution": { - "type": "object", - "required": [ - "distributionType" - ], - "properties": { - "distributionType": { - "type": "string", - "enum": [ - "TensorFlow" - ], - "description": "Specifies the type of distribution framework." - }, - "workerCount": { - "type": "integer", - "format": "int32", - "description": "Number of workers. If not specified, will default to the instance count." - }, - "parameterServerCount": { - "type": "integer", - "format": "int32", - "description": "Number of parameter server tasks." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/DistributionConfiguration" - } - ], - "description": "TensorFlow distribution configuration." - }, "ToolCallOutputContent": { "anyOf": [ { @@ -49672,450 +42549,6 @@ ], "description": "Represents a data source for evaluation runs that operate over Agent traces stored in Application Insights." }, - "TrainingAlgorithm": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "Sft", - "Dpo", - "Kto", - "Orpo", - "Cpo", - "SimPo", - "Grpo", - "Ppo", - "Rloo", - "ReinforcePp", - "RewardModel" - ] - } - ], - "description": "Training algorithm used by a declarative training job." - }, - "TrainingColumnMapping": { - "type": "object", - "properties": { - "prompt": { - "type": "string", - "description": "Column containing prompts." - }, - "chosen": { - "type": "string", - "description": "Column containing chosen responses for preference training." - }, - "rejected": { - "type": "string", - "description": "Column containing rejected responses for preference training." - }, - "reference": { - "type": "string", - "description": "Column containing reference answers or reward context." - }, - "messages": { - "type": "string", - "description": "Column containing chat messages." - } - }, - "description": "Mapping from logical training fields to columns in the dataset." - }, - "TrainingConfiguration": { - "type": "object", - "required": [ - "algorithm", - "model", - "dataset" - ], - "properties": { - "algorithm": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingAlgorithm" - } - ], - "description": "Training algorithm." - }, - "framework": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingFramework" - } - ], - "description": "Training framework. If omitted, the service selects a compatible framework." - }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, - "dataset": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingDatasetConfiguration" - } - ], - "description": "Training and optional evaluation datasets." - }, - "reward": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingRewardConfiguration" - } - ], - "description": "Reward signal configuration." - }, - "lora": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingLoraConfiguration" - } - ], - "description": "LoRA adapter configuration." - }, - "rollout": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingRolloutConfiguration" - } - ], - "description": "Rollout generation configuration." - }, - "eval": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingEvalConfiguration" - } - ], - "description": "Evaluation configuration." - } - }, - "description": "Declarative training recipe. When specified, command must be omitted and environmentImageReference is optional." - }, - "TrainingDataFormatConfiguration": { - "type": "object", - "properties": { - "chatTemplate": { - "allOf": [ - { - "$ref": "#/components/schemas/ChatTemplate" - } - ], - "description": "Built-in chat template to apply to the dataset." - }, - "chatTemplatePath": { - "type": "string", - "description": "Path to a custom chat template relative to the job's code directory." - } - }, - "description": "Formatting options for conversational training data." - }, - "TrainingDatasetConfiguration": { - "type": "object", - "required": [ - "train" - ], - "properties": { - "train": { - "type": "string", - "description": "Training dataset asset reference." - }, - "eval": { - "type": "string", - "description": "Optional evaluation dataset asset reference." - }, - "columns": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingColumnMapping" - } - ], - "description": "Mapping from training fields to dataset columns." - }, - "dataFormat": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingDataFormatConfiguration" - } - ], - "description": "Conversational data formatting options." - } - }, - "description": "Dataset configuration for a declarative training job." - }, - "TrainingEntryPointReference": { - "type": "object", - "required": [ - "entryPoint" - ], - "properties": { - "entryPoint": { - "type": "string", - "description": "Path to the Python callable in module/file.py:function format." - } - }, - "description": "Reference to a Python callable relative to the job's code directory." - }, - "TrainingEvalBenchmark": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "Gsm8k", - "Mmlu", - "Humaneval", - "Mbpp", - "Arc", - "Hellaswag" - ] - } - ], - "description": "Built-in evaluation benchmark." - }, - "TrainingEvalConfiguration": { - "type": "object", - "properties": { - "benchmark": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingEvalBenchmark" - } - ], - "description": "Named built-in benchmark. Mutually exclusive with dataset." - }, - "dataset": { - "type": "string", - "description": "Custom evaluation dataset asset reference. Mutually exclusive with benchmark." - }, - "everyNSteps": { - "type": "integer", - "format": "int32", - "description": "Evaluation frequency in training steps. Omit for end-of-training only." - } - }, - "description": "Evaluation configuration for a declarative training job." - }, - "TrainingFramework": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "Trl", - "Verl", - "OpenRlhf", - "NemoRl", - "Slime", - "TorchForge" - ] - } - ], - "description": "Training framework used to lower a declarative training job into an execution command." - }, - "TrainingInlineFunctionConfiguration": { - "type": "object", - "required": [ - "def" - ], - "properties": { - "def": { - "type": "string", - "description": "Python function definition." - }, - "runtime": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingInlineFunctionRuntime" - } - ], - "description": "Runtime dependencies for the inline function." - } - }, - "description": "Inline Python function definition for custom training logic." - }, - "TrainingInlineFunctionRuntime": { - "type": "object", - "properties": { - "pip": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Pip packages to install before invoking the inline function." - } - }, - "description": "Python runtime dependencies for an inline function." - }, - "TrainingJobService": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "Service type.", - "readOnly": true - }, - "port": { - "type": "integer", - "format": "int32", - "description": "Service port.", - "readOnly": true - }, - "status": { - "type": "string", - "description": "Service status.", - "readOnly": true - }, - "error": { - "type": "object", - "additionalProperties": {}, - "description": "Terminal error for the service, if any.", - "readOnly": true - }, - "endpoint": { - "type": "string", - "description": "Service endpoint URI.", - "readOnly": true - }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional service properties.", - "readOnly": true - } - }, - "description": "Service endpoint details for a training job." - }, - "TrainingJobServiceCollection": { - "type": "object", - "required": [ - "services" - ], - "properties": { - "services": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TrainingJobService" - }, - "description": "Services keyed by service name.", - "readOnly": true - } - }, - "description": "Services exposed by a training job." - }, - "TrainingLoraConfiguration": { - "type": "object", - "required": [ - "rank" - ], - "properties": { - "rank": { - "type": "integer", - "format": "int32", - "description": "Low-rank dimension." - }, - "alpha": { - "type": "integer", - "format": "int32", - "description": "LoRA scaling factor." - }, - "dropout": { - "type": "number", - "format": "double", - "description": "Dropout applied to adapter inputs.", - "default": 0.05 - }, - "targetModules": { - "type": "string", - "description": "Linear layers that receive adapters. Use 'auto' to let the framework choose defaults.", - "default": "auto" - }, - "quantize": { - "type": "boolean", - "description": "Whether to enable QLoRA 4-bit base weight loading.", - "default": false - } - }, - "description": "LoRA adapter configuration for parameter-efficient fine tuning." - }, - "TrainingRewardConfiguration": { - "type": "object", - "properties": { - "model": { - "type": "string", - "description": "Reward model asset reference." - }, - "function": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingEntryPointReference" - } - ], - "description": "Python callable used to compute reward scores." - }, - "inline_function": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingInlineFunctionConfiguration" - } - ], - "description": "Inline Python function used to compute reward scores." - } - }, - "description": "Reward signal configuration for reinforcement or reward model training." - }, - "TrainingRolloutConfiguration": { - "type": "object", - "required": [ - "engine" - ], - "properties": { - "engine": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingRolloutEngine" - } - ], - "description": "Rollout inference engine." - }, - "tensorParallelSize": { - "type": "integer", - "format": "int32", - "description": "Tensor parallel size used by the rollout engine.", - "default": 1 - }, - "gpuMemoryUtilization": { - "type": "number", - "format": "double", - "description": "GPU memory utilization target for the rollout engine, between 0.0 and 1.0." - } - }, - "description": "Rollout generation configuration for online reinforcement learning." - }, - "TrainingRolloutEngine": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "Vllm", - "Sglang", - "Hf", - "MegatronInference" - ] - } - ], - "description": "Inference engine used for rollout generation during online reinforcement learning." - }, "TreatmentEffectType": { "anyOf": [ { diff --git a/specification/ai-foundry/data-plane/Foundry/README.md b/specification/ai-foundry/data-plane/Foundry/readme.md similarity index 96% rename from specification/ai-foundry/data-plane/Foundry/README.md rename to specification/ai-foundry/data-plane/Foundry/readme.md index 1a2a1e0646f1..fa45ae5aa846 100644 --- a/specification/ai-foundry/data-plane/Foundry/README.md +++ b/specification/ai-foundry/data-plane/Foundry/readme.md @@ -1,3 +1,5 @@ + + # Foundry data-plane TypeSpec This folder contains the TypeSpec for all data-plane REST APIs of the Foundry service. diff --git a/specification/ai-foundry/data-plane/Foundry/src/common/readme.md b/specification/ai-foundry/data-plane/Foundry/src/common/readme.md new file mode 100644 index 000000000000..43de59e03a23 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/src/common/readme.md @@ -0,0 +1,5 @@ + + +# Foundry Common TypeSpec + +Shared models and service configuration for the Foundry data-plane TypeSpec project. \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp index d762c7a1bbe8..c900cc58376d 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp @@ -1,3 +1,5 @@ +// cSpell:ignore Chatml Grpo Kahneman Mbpp Mmlu Nemo Orpo QLoRA Rlhf Rloo SGLang Tversky VERL Vllm + import "../common/models.tsp"; import "../common/service.tsp"; diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/readme.md b/specification/ai-foundry/data-plane/Foundry/src/jobs/readme.md new file mode 100644 index 000000000000..26b0798d7555 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/readme.md @@ -0,0 +1,5 @@ + + +# Foundry Jobs TypeSpec + +Training job models and routes for the Foundry data-plane TypeSpec project. \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/src/mlflow/readme.md b/specification/ai-foundry/data-plane/Foundry/src/mlflow/readme.md new file mode 100644 index 000000000000..b033abcfd81c --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/src/mlflow/readme.md @@ -0,0 +1,5 @@ + + +# Foundry MLflow TypeSpec + +MLflow routes and models for the Foundry data-plane TypeSpec project. \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/suppressions.yaml b/specification/ai-foundry/data-plane/Foundry/suppressions.yaml index 3df715fb59aa..d47085fee29b 100644 --- a/specification/ai-foundry/data-plane/Foundry/suppressions.yaml +++ b/specification/ai-foundry/data-plane/Foundry/suppressions.yaml @@ -9,6 +9,19 @@ - "." - "**" +# Added: 2026-05-05 +- tool: TypeSpecValidation + reason: > + Foundry TypeSpec validation integration is still in progress. The service + currently emits OpenAPI 3 and keeps SDK-specific projections nested under + the service TypeSpec tree. + paths: + - "." + - src/sdk-agents + - src/sdk-extensions-openai + - src/sdk-projects-agents + - src/sdk-service-agents-contracts + # Prior suppression currently superseded by the above: # - tool: TypeSpecValidation From a61e3993df60e8c72c9ca12b5a84657c00844df3 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Tue, 5 May 2026 03:32:28 -0700 Subject: [PATCH 11/37] fix(typespec): mark foundry readmes autorest Add the AutoRest markdown marker required by Avocado to the Foundry readmes without adding new generated swagger inputs. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- specification/ai-foundry/data-plane/Foundry/readme.md | 2 ++ .../ai-foundry/data-plane/Foundry/src/common/readme.md | 4 +++- .../ai-foundry/data-plane/Foundry/src/jobs/readme.md | 4 +++- .../ai-foundry/data-plane/Foundry/src/mlflow/readme.md | 4 +++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/readme.md b/specification/ai-foundry/data-plane/Foundry/readme.md index fa45ae5aa846..c5cae3b41aac 100644 --- a/specification/ai-foundry/data-plane/Foundry/readme.md +++ b/specification/ai-foundry/data-plane/Foundry/readme.md @@ -2,6 +2,8 @@ # Foundry data-plane TypeSpec +> see https://aka.ms/autorest + This folder contains the TypeSpec for all data-plane REST APIs of the Foundry service. ## Contributing diff --git a/specification/ai-foundry/data-plane/Foundry/src/common/readme.md b/specification/ai-foundry/data-plane/Foundry/src/common/readme.md index 43de59e03a23..a5b0649b6161 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/common/readme.md +++ b/specification/ai-foundry/data-plane/Foundry/src/common/readme.md @@ -2,4 +2,6 @@ # Foundry Common TypeSpec -Shared models and service configuration for the Foundry data-plane TypeSpec project. \ No newline at end of file +> see https://aka.ms/autorest + +Shared models and service configuration for the Foundry data-plane TypeSpec project. diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/readme.md b/specification/ai-foundry/data-plane/Foundry/src/jobs/readme.md index 26b0798d7555..7f253036f682 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/readme.md +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/readme.md @@ -2,4 +2,6 @@ # Foundry Jobs TypeSpec -Training job models and routes for the Foundry data-plane TypeSpec project. \ No newline at end of file +> see https://aka.ms/autorest + +Training job models and routes for the Foundry data-plane TypeSpec project. diff --git a/specification/ai-foundry/data-plane/Foundry/src/mlflow/readme.md b/specification/ai-foundry/data-plane/Foundry/src/mlflow/readme.md index b033abcfd81c..d6a8944f8a83 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/mlflow/readme.md +++ b/specification/ai-foundry/data-plane/Foundry/src/mlflow/readme.md @@ -2,4 +2,6 @@ # Foundry MLflow TypeSpec -MLflow routes and models for the Foundry data-plane TypeSpec project. \ No newline at end of file +> see https://aka.ms/autorest + +MLflow routes and models for the Foundry data-plane TypeSpec project. From 4d8c5e217e6ec10a446b42822a6b76e0f1b55bc6 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Tue, 5 May 2026 04:03:19 -0700 Subject: [PATCH 12/37] feat(typespec): align project mlflow routes Complete the project MLflow compatibility surface by adding missing route variants and matching request shapes used by the Vienna MLflow 2.0 controllers. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../data-plane/Foundry/src/mlflow/models.tsp | 23 ++++++++++ .../data-plane/Foundry/src/mlflow/routes.tsp | 46 +++++++++++++++---- 2 files changed, 60 insertions(+), 9 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/src/mlflow/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/mlflow/models.tsp index 6950fb5c45fd..fe160595fce4 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/mlflow/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/mlflow/models.tsp @@ -28,6 +28,11 @@ alias MlflowExperimentQueryParameters = { @query experiment_name?: string; }; +alias MlflowExperimentListQueryParameters = MlflowPaginationQueryParameters & { + @doc("Experiment lifecycle stage filter.") + @query view_type?: string; +}; + alias MlflowRunQueryParameters = { @doc("MLflow run identifier.") @query run_id?: string; @@ -41,6 +46,16 @@ alias MlflowRegisteredModelQueryParameters = { @query name?: string; }; +alias MlflowRegisteredModelSearchQueryParameters = MlflowPaginationQueryParameters & { + @doc("Registered model search filter.") + @query filter?: string; +}; + +alias MlflowRegisteredModelLatestVersionsQueryParameters = MlflowRegisteredModelQueryParameters & { + @doc("Model version stages to include.") + @query stages?: string[]; +}; + alias MlflowModelVersionQueryParameters = { @doc("Registered model name.") @query name?: string; @@ -49,6 +64,14 @@ alias MlflowModelVersionQueryParameters = { @query version?: string; }; +alias MlflowModelVersionSearchQueryParameters = MlflowPaginationQueryParameters & { + @doc("Model version search filter.") + @query filter?: string; + + @doc("Model version ordering expression.") + @query order_by?: string; +}; + alias MlflowArtifactListQueryParameters = MlflowRunQueryParameters & { @doc("Artifact path to list.") @query path?: string; diff --git a/specification/ai-foundry/data-plane/Foundry/src/mlflow/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/mlflow/routes.tsp index 06a9e89e3fac..af78ba158dc4 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/mlflow/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/mlflow/routes.tsp @@ -35,6 +35,15 @@ interface Experiments { MlflowResponse >; + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("List MLflow experiments.") + @get + @route("list") + list is Azure.AI.Projects.FoundryDataPlaneOperation< + MlflowExperimentListQueryParameters, + MlflowResponse + >; + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" @doc("Search MLflow experiments.") @post @@ -81,6 +90,7 @@ interface Experiments { >; } + @tag("MLflow Runs") @route("/mlflow/api/2.0/mlflow/runs") interface Runs { @@ -252,7 +262,7 @@ interface RegisteredModels { @delete @route("delete") delete is Azure.AI.Projects.FoundryDataPlaneOperation< - MlflowRegisteredModelQueryParameters, + { @bodyRoot payload: MlflowPayload }, MlflowResponse >; @@ -279,7 +289,7 @@ interface RegisteredModels { @get @route("search") search is Azure.AI.Projects.FoundryDataPlaneOperation< - MlflowPaginationQueryParameters, + MlflowRegisteredModelSearchQueryParameters, MlflowResponse >; @@ -297,7 +307,7 @@ interface RegisteredModels { @delete @route("delete-tag") deleteTag is Azure.AI.Projects.FoundryDataPlaneOperation< - MlflowRegisteredModelQueryParameters, + { @bodyRoot payload: MlflowPayload }, MlflowResponse >; @@ -306,7 +316,16 @@ interface RegisteredModels { @get @route("get-latest-versions") getLatestVersions is Azure.AI.Projects.FoundryDataPlaneOperation< - MlflowRegisteredModelQueryParameters, + MlflowRegisteredModelLatestVersionsQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Get latest versions for an MLflow registered model with the model name in the request body.") + @post + @route("get-latest-versions") + getLatestVersionsNameInBody is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, MlflowResponse >; @@ -355,7 +374,7 @@ interface ModelVersions { @delete @route("delete") delete is Azure.AI.Projects.FoundryDataPlaneOperation< - MlflowModelVersionQueryParameters, + { @bodyRoot payload: MlflowPayload }, MlflowResponse >; @@ -373,7 +392,16 @@ interface ModelVersions { @get @route("search") search is Azure.AI.Projects.FoundryDataPlaneOperation< - MlflowPaginationQueryParameters, + MlflowModelVersionSearchQueryParameters, + MlflowResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" + @doc("Search MLflow model versions with search options in the request body.") + @post + @route("search") + searchWithFilter is Azure.AI.Projects.FoundryDataPlaneOperation< + { @bodyRoot payload: MlflowPayload }, MlflowResponse >; @@ -400,16 +428,16 @@ interface ModelVersions { @delete @route("delete-tag") deleteTag is Azure.AI.Projects.FoundryDataPlaneOperation< - MlflowModelVersionQueryParameters, + { @bodyRoot payload: MlflowPayload }, MlflowResponse >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "MLflow compatibility route" @doc("Get an MLflow model version storage location URI.") - @post + @get @route("get-storage-location-uri") getStorageLocationUri is Azure.AI.Projects.FoundryDataPlaneOperation< - { @bodyRoot payload: MlflowPayload }, + MlflowModelVersionQueryParameters, MlflowResponse >; } \ No newline at end of file From f130d26e0d56016d958b811d3b655fd692b9c826 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Tue, 5 May 2026 13:46:05 -0700 Subject: [PATCH 13/37] fix(foundry): use snake case training job routes Update the Foundry training job REST resource and generated artifacts to use training_jobs as the wire path and resource segment. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../TrainingJobs_Create_MaximumSet_Gen.json | 2 +- .../v1/TrainingJobs_Get_MaximumSet_Gen.json | 2 +- .../v1/TrainingJobs_List_MaximumSet_Gen.json | 2 +- .../v1/microsoft-foundry-openapi3.json | 17480 ++++++++---- .../microsoft-foundry-openapi3.json | 22578 +++++++++++----- .../data-plane/Foundry/src/jobs/models.tsp | 2 +- .../data-plane/Foundry/src/jobs/routes.tsp | 68 +- 7 files changed, 27843 insertions(+), 12291 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json index ba4f6b04b9a8..e29ea334d480 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json @@ -112,7 +112,7 @@ "body": { "id": "my_training_job_01", "name": "my_training_job_01", - "type": "Microsoft.MachineLearningServices/workspaces/trainingJobs", + "type": "Microsoft.MachineLearningServices/workspaces/training_jobs", "properties": { "jobType": "Command", "displayName": "My Training Job", diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json index 7cba48755498..60d345aa6a8f 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json @@ -12,7 +12,7 @@ "body": { "id": "my_training_job_01", "name": "my_training_job_01", - "type": "Microsoft.MachineLearningServices/workspaces/trainingJobs", + "type": "Microsoft.MachineLearningServices/workspaces/training_jobs", "properties": { "jobType": "Command", "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MaximumSet_Gen.json index 537cdd6ca8aa..5f37c4227a44 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MaximumSet_Gen.json @@ -17,7 +17,7 @@ { "id": "my_training_job_01", "name": "my_training_job_01", - "type": "Microsoft.MachineLearningServices/workspaces/trainingJobs", + "type": "Microsoft.MachineLearningServices/workspaces/training_jobs", "properties": { "jobType": "Command", "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 89e65ee5b7d7..430404564c4c 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -5,6 +5,24 @@ "version": "v1" }, "tags": [ + { + "name": "MLflow Experiments" + }, + { + "name": "MLflow Runs" + }, + { + "name": "MLflow Metrics" + }, + { + "name": "MLflow Artifacts" + }, + { + "name": "MLflow Registered Models" + }, + { + "name": "MLflow Model Versions" + }, { "name": "Agents" }, @@ -58,6 +76,9 @@ }, { "name": "Toolsets" + }, + { + "name": "TrainingJobs" } ], "paths": { @@ -4411,108 +4432,46 @@ } } }, - "/openai/v1/conversations": { - "post": { - "operationId": "createConversation", - "description": "Create a conversation.", - "parameters": [], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateConversationBody" - } - } - } - } - }, + "/mlflow/api/2.0/mlflow/artifacts/list": { "get": { - "operationId": "listConversations", - "description": "Returns the list of all conversations.", + "operationId": "Artifacts_list", + "description": "List MLflow artifacts.", "parameters": [ { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", + "name": "run_id", "in": "query", "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "description": "MLflow run identifier.", "schema": { "type": "string" }, "explode": false }, { - "name": "before", + "name": "run_uuid", "in": "query", "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "description": "MLflow run UUID.", "schema": { "type": "string" }, "explode": false }, { - "name": "agent_name", + "name": "path", "in": "query", "required": false, - "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", + "description": "Artifact path to list.", "schema": { "type": "string" }, "explode": false }, { - "name": "agent_id", + "name": "api-version", "in": "query", - "required": false, - "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, @@ -4525,33 +4484,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4568,23 +4501,24 @@ } }, "tags": [ - "Conversations" + "MLflow Artifacts" ] } }, - "/openai/v1/conversations/{conversation_id}": { + "/mlflow/api/2.0/mlflow/experiments/create": { "post": { - "operationId": "updateConversation", - "description": "Update a conversation.", + "operationId": "Experiments_create", + "description": "Create an MLflow experiment.", "parameters": [ { - "name": "conversation_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The id of the conversation to update.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -4593,7 +4527,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4610,31 +4544,34 @@ } }, "tags": [ - "Conversations" + "MLflow Experiments" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.UpdateConversationBody" + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } } - }, - "get": { - "operationId": "getConversation", - "description": "Retrieves a conversation.", + } + }, + "/mlflow/api/2.0/mlflow/experiments/delete": { + "post": { + "operationId": "Experiments_delete", + "description": "Delete an MLflow experiment.", "parameters": [ { - "name": "conversation_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The id of the conversation to retrieve.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -4643,7 +4580,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4660,21 +4597,54 @@ } }, "tags": [ - "Conversations" - ] - }, - "delete": { - "operationId": "deleteConversation", - "description": "Deletes a conversation.", + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/get": { + "get": { + "operationId": "Experiments_get", + "description": "Get an MLflow experiment by ID.", "parameters": [ { - "name": "conversation_id", - "in": "path", + "name": "experiment_id", + "in": "query", + "required": false, + "description": "MLflow experiment identifier.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "experiment_name", + "in": "query", + "required": false, + "description": "MLflow experiment name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", "required": true, - "description": "The id of the conversation to delete.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -4683,7 +4653,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.DeletedConversationResource" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4700,34 +4670,42 @@ } }, "tags": [ - "Conversations" + "MLflow Experiments" ] } }, - "/openai/v1/conversations/{conversation_id}/items": { - "post": { - "operationId": "createConversationItems", - "description": "Create items in a conversation with the given ID.", + "/mlflow/api/2.0/mlflow/experiments/get-by-name": { + "get": { + "operationId": "Experiments_getByName", + "description": "Get an MLflow experiment by name.", "parameters": [ { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation on which the item needs to be created.", + "name": "experiment_id", + "in": "query", + "required": false, + "description": "MLflow experiment identifier.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "include", + "name": "experiment_name", "in": "query", "required": false, - "description": "Additional fields to include in the response.\nSee the `include` parameter for listing Conversation items for more information.", + "description": "MLflow experiment name.", "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" }, "explode": false } @@ -4738,7 +4716,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationItemList" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4755,94 +4733,53 @@ } }, "tags": [ - "Conversations" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Item" - }, - "maxItems": 20, - "description": "The items to add to the conversation. You may add up to 20 items at a time." - } - }, - "required": [ - "items" - ] - } - } - } - } - }, + "MLflow Experiments" + ] + } + }, + "/mlflow/api/2.0/mlflow/experiments/list": { "get": { - "operationId": "listConversationItems", - "description": "List all items for a conversation with the given ID.", + "operationId": "Experiments_list", + "description": "List MLflow experiments.", "parameters": [ { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation on which the items needs to be listed.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", + "name": "max_results", "in": "query", "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "description": "Maximum number of items to return.", "schema": { "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" + "format": "int32" }, "explode": false }, { - "name": "after", + "name": "page_token", "in": "query", "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "description": "Token used to retrieve the next page of results.", "schema": { "type": "string" }, "explode": false }, { - "name": "before", + "name": "view_type", "in": "query", "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "description": "Experiment lifecycle stage filter.", "schema": { "type": "string" }, "explode": false }, { - "name": "item_type", + "name": "api-version", "in": "query", - "required": false, - "description": "Filter by item type. If provided, only items of the specified type will be returned.", + "required": true, + "description": "The API version to use for this operation.", "schema": { - "$ref": "#/components/schemas/OpenAI.ItemType" + "type": "string" }, "explode": false } @@ -4853,33 +4790,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.OutputItem" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4896,32 +4807,77 @@ } }, "tags": [ - "Conversations" + "MLflow Experiments" ] } }, - "/openai/v1/conversations/{conversation_id}/items/{item_id}": { - "get": { - "operationId": "getConversationItem", - "description": "Get a single item from a conversation with the given IDs.", + "/mlflow/api/2.0/mlflow/experiments/restore": { + "post": { + "operationId": "Experiments_restore", + "description": "Restore a deleted MLflow experiment.", "parameters": [ { - "name": "conversation_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the conversation that contains the item.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/search": { + "post": { + "operationId": "Experiments_search", + "description": "Search MLflow experiments.", + "parameters": [ { - "name": "item_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The id of the conversation item to retrieve.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -4930,7 +4886,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4947,30 +4903,87 @@ } }, "tags": [ - "Conversations" - ] - }, - "delete": { - "operationId": "deleteConversationItem", - "description": "Delete an item from a conversation with the given IDs.", + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/set-experiment-tag": { + "post": { + "operationId": "Experiments_setTag", + "description": "Set an MLflow experiment tag.", "parameters": [ { - "name": "conversation_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The id of the conversation on which the item needs to be deleted from.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/update": { + "post": { + "operationId": "Experiments_update", + "description": "Update MLflow experiment metadata.", + "parameters": [ { - "name": "item_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The id of the conversation item to delete.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -4979,7 +4992,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -4996,104 +5009,94 @@ } }, "tags": [ - "Conversations" - ] + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/evals": { + "/mlflow/api/2.0/mlflow/metrics/get-history": { "get": { - "operationId": "Evals_listEvals", - "summary": "List all evaluations", - "description": "List evaluations for a project.", + "operationId": "Metrics_getHistory", + "description": "Get MLflow metric history.", "parameters": [ { - "name": "after", + "name": "run_id", "in": "query", "required": false, - "description": "Identifier for the last run from the previous pagination request.", + "description": "MLflow run identifier.", "schema": { "type": "string" }, "explode": false }, { - "name": "limit", + "name": "run_uuid", "in": "query", "required": false, - "description": "Number of runs to retrieve.", + "description": "MLflow run UUID.", "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 + "type": "string" }, "explode": false }, { - "name": "order", + "name": "metric_key", "in": "query", "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", + "description": "Metric key.", "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" + "type": "string" }, "explode": false }, { - "name": "order_by", + "name": "max_results", "in": "query", "required": false, - "description": "Evals can be ordered by creation time or last updated time.\nUse `created_at` for creation time or `updated_at` for last updated time.", + "description": "Maximum number of metric points to return.", "schema": { - "type": "string", - "enum": [ - "created_at", - "updated_at" - ], - "default": "created_at" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Eval" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "page_token", + "in": "query", + "required": false, + "description": "Token used to retrieve the next page of metric points.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5110,21 +5113,33 @@ } }, "tags": [ - "Evals" + "MLflow Metrics" ] - }, + } + }, + "/mlflow/api/2.0/mlflow/model-versions/create": { "post": { - "operationId": "Evals_createEval", - "summary": "Create evaluation", - "description": "Create the structure of an evaluation that can be used to test a model's performance.\nAn evaluation is a set of testing criteria and the config for a data source, which dictates the schema of the data used in the evaluation. After creating an evaluation, you can run it on different models and model parameters. We support several types of graders and datasources.\nFor more information, see the [Evals guide](https://platform.openai.com/docs/guides/evals).", - "parameters": [], + "operationId": "ModelVersions_create", + "description": "Create an MLflow model version.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Eval" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5141,34 +5156,34 @@ } }, "tags": [ - "Evals" + "MLflow Model Versions" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateEvalRequest" + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } } } }, - "/openai/v1/evals/{eval_id}": { + "/mlflow/api/2.0/mlflow/model-versions/delete": { "delete": { - "operationId": "Evals_deleteEval", - "summary": "Delete an evaluation", - "description": "Delete an evaluation.", + "operationId": "ModelVersions_delete", + "description": "Delete an MLflow model version.", "parameters": [ { - "name": "eval_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the evaluation to delete.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -5177,7 +5192,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteEvalResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5194,22 +5209,34 @@ } }, "tags": [ - "Evals" - ] - }, - "get": { - "operationId": "Evals_getEval", - "summary": "Get an evaluation", - "description": "Get an evaluation by ID.", + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/delete-tag": { + "delete": { + "operationId": "ModelVersions_deleteTag", + "description": "Delete an MLflow model-version tag.", "parameters": [ { - "name": "eval_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the evaluation to retrieve.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -5218,7 +5245,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Eval" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5235,22 +5262,54 @@ } }, "tags": [ - "Evals" - ] - }, - "post": { - "operationId": "Evals_updateEval", - "summary": "Update an evaluation", - "description": "Update certain properties of an evaluation.", + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/get": { + "get": { + "operationId": "ModelVersions_get", + "description": "Get an MLflow model version.", "parameters": [ { - "name": "eval_id", - "in": "path", + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "version", + "in": "query", + "required": false, + "description": "Model version.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the evaluation to update.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -5259,7 +5318,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Eval" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5276,89 +5335,189 @@ } }, "tags": [ - "Evals" + "MLflow Model Versions" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/get-download-uri": { + "get": { + "operationId": "ModelVersions_getDownloadUri", + "description": "Get an MLflow model version download URI.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "version", + "in": "query", + "required": false, + "description": "Model version.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateEvalParametersBody" + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } } } } - } + }, + "tags": [ + "MLflow Model Versions" + ] } }, - "/openai/v1/evals/{eval_id}/runs": { + "/mlflow/api/2.0/mlflow/model-versions/get-storage-location-uri": { "get": { - "operationId": "Evals_listRuns", - "summary": "Get a list of runs for an evaluation", - "description": "Get a list of runs for an evaluation.", + "operationId": "ModelVersions_getStorageLocationUri", + "description": "Get an MLflow model version storage location URI.", "parameters": [ { - "name": "eval_id", - "in": "path", + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "version", + "in": "query", + "required": false, + "description": "Model version.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the evaluation to retrieve runs for.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/search": { + "get": { + "operationId": "ModelVersions_search", + "description": "Search MLflow model versions.", + "parameters": [ { - "name": "after", + "name": "max_results", "in": "query", "required": false, - "description": "Identifier for the last run from the previous pagination request.", + "description": "Maximum number of items to return.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" }, "explode": false }, { - "name": "limit", + "name": "page_token", "in": "query", "required": false, - "description": "Number of runs to retrieve.", + "description": "Token used to retrieve the next page of results.", "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 + "type": "string" }, "explode": false }, { - "name": "order", + "name": "filter", "in": "query", "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", + "description": "Model version search filter.", "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" + "type": "string" }, "explode": false }, { - "name": "status", + "name": "order_by", "in": "query", "required": false, - "description": "Filter runs by status. One of `queued` | `in_progress` | `failed` | `completed` | `canceled`.", + "description": "Model version ordering expression.", "schema": { - "type": "string", - "enum": [ - "queued", - "in_progress", - "completed", - "canceled", - "failed" - ] + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" }, "explode": false } @@ -5369,33 +5528,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRun" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5412,21 +5545,22 @@ } }, "tags": [ - "Evals" + "MLflow Model Versions" ] }, "post": { - "operationId": "Evals_createEvalRun", - "summary": "Create evaluation run", + "operationId": "ModelVersions_searchWithFilter", + "description": "Search MLflow model versions with search options in the request body.", "parameters": [ { - "name": "eval_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the evaluation to create a run for.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -5435,7 +5569,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRun" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5452,43 +5586,34 @@ } }, "tags": [ - "Evals" + "MLflow Model Versions" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateEvalRunRequest" + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } } } }, - "/openai/v1/evals/{eval_id}/runs/{run_id}": { - "delete": { - "operationId": "Evals_deleteEvalRun", - "summary": "Delete evaluation run", - "description": "Delete an eval run.", + "/mlflow/api/2.0/mlflow/model-versions/set-tag": { + "post": { + "operationId": "ModelVersions_setTag", + "description": "Set an MLflow model-version tag.", "parameters": [ { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to delete the run from.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the run to delete.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -5497,7 +5622,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteEvalRunResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5514,31 +5639,34 @@ } }, "tags": [ - "Evals" - ] - }, - "get": { - "operationId": "Evals_getEvalRun", - "summary": "Get an evaluation run", - "description": "Get an evaluation run by ID.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to retrieve runs for.", - "schema": { - "type": "string" + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } } - }, + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/transition-stage": { + "post": { + "operationId": "ModelVersions_transitionStage", + "description": "Transition an MLflow model version stage.", + "parameters": [ { - "name": "run_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the run to retrieve.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -5547,7 +5675,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRun" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5564,31 +5692,34 @@ } }, "tags": [ - "Evals" - ] - }, - "post": { - "operationId": "Evals_cancelEvalRun", - "summary": "Cancel evaluation run", - "description": "Cancel an ongoing evaluation run.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation whose run you want to cancel.", - "schema": { - "type": "string" + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } } - }, + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/update": { + "patch": { + "operationId": "ModelVersions_update", + "description": "Update an MLflow model version.", + "parameters": [ { - "name": "run_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the run to cancel.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -5597,7 +5728,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRun" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5614,85 +5745,34 @@ } }, "tags": [ - "Evals" - ] + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items": { - "get": { - "operationId": "Evals_getEvalRunOutputItems", - "summary": "Get evaluation run output items", - "description": "Get a list of output items for an evaluation run.", + "/mlflow/api/2.0/mlflow/registered-models/create": { + "post": { + "operationId": "RegisteredModels_create", + "description": "Create an MLflow registered model.", "parameters": [ { - "name": "eval_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the run to retrieve output items for.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last run from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of runs to retrieve.", - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", - "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" }, "explode": false - }, - { - "name": "status", - "in": "query", - "required": false, - "description": "Filter output items by status. Use `failed` to filter by failed output\nitems or `pass` to filter by passed output items.", - "schema": { - "type": "string", - "enum": [ - "fail", - "pass" - ] - } } ], "responses": { @@ -5701,33 +5781,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRunOutputItem" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5744,42 +5798,34 @@ } }, "tags": [ - "Evals" - ] + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}": { - "get": { - "operationId": "Evals_getEvalRunOutputItem", - "summary": "Get an output item of an evaluation run", - "description": "Get an evaluation run output item by ID.", + "/mlflow/api/2.0/mlflow/registered-models/delete": { + "delete": { + "operationId": "RegisteredModels_delete", + "description": "Delete an MLflow registered model.", "parameters": [ { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to retrieve runs for.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", - "required": true, - "description": "The ID of the run to retrieve.", - "schema": { - "type": "string" - } - }, - { - "name": "output_item_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the output item to retrieve.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -5788,7 +5834,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRunOutputItem" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5805,14 +5851,24 @@ } }, "tags": [ - "Evals" - ] + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/fine_tuning/jobs": { - "post": { - "operationId": "createFineTuningJob", - "description": "Creates a fine-tuning job which begins the process of creating a new model from a given dataset.\n\nResponse includes details of the enqueued job including job status and the name of the fine-tuned models once complete.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", + "/mlflow/api/2.0/mlflow/registered-models/delete-tag": { + "delete": { + "operationId": "RegisteredModels_deleteTag", + "description": "Delete an MLflow registered-model tag.", "parameters": [ { "name": "api-version", @@ -5831,7 +5887,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5848,45 +5904,35 @@ } }, "tags": [ - "Fine-Tuning" + "MLflow Registered Models" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.CreateFineTuningJobRequest" + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } } - }, + } + }, + "/mlflow/api/2.0/mlflow/registered-models/get": { "get": { - "operationId": "listPaginatedFineTuningJobs", - "description": "List your organization's fine-tuning jobs", + "operationId": "RegisteredModels_get", + "description": "Get an MLflow registered model.", "parameters": [ { - "name": "after", + "name": "name", "in": "query", "required": false, - "description": "Identifier for the last job from the previous pagination request.", + "description": "Registered model name.", "schema": { "type": "string" }, "explode": false }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of fine-tuning jobs to retrieve.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -5904,7 +5950,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ListPaginatedFineTuningJobsResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5921,23 +5967,37 @@ } }, "tags": [ - "Fine-Tuning" + "MLflow Registered Models" ] } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}": { + "/mlflow/api/2.0/mlflow/registered-models/get-latest-versions": { "get": { - "operationId": "retrieveFineTuningJob", - "description": "Get info about a fine-tuning job.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", + "operationId": "RegisteredModels_getLatestVersions", + "description": "Get latest versions for an MLflow registered model.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job.", + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", "schema": { "type": "string" - } + }, + "explode": false + }, + { + "name": "stages", + "in": "query", + "required": false, + "description": "Model version stages to include.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "explode": false }, { "name": "api-version", @@ -5956,7 +6016,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -5973,24 +6033,13 @@ } }, "tags": [ - "Fine-Tuning" + "MLflow Registered Models" ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel": { + }, "post": { - "operationId": "cancelFineTuningJob", - "description": "Immediately cancel a fine-tune job.", + "operationId": "RegisteredModels_getLatestVersionsNameInBody", + "description": "Get latest versions for an MLflow registered model with the model name in the request body.", "parameters": [ - { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to cancel.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -6008,7 +6057,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6025,43 +6074,43 @@ } }, "tags": [ - "Fine-Tuning" - ] + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints": { + "/mlflow/api/2.0/mlflow/registered-models/list": { "get": { - "operationId": "listFineTuningJobCheckpoints", - "description": "List checkpoints for a fine-tuning job.", + "operationId": "RegisteredModels_list", + "description": "List MLflow registered models.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to get checkpoints for.", - "schema": { - "type": "string" - } - }, - { - "name": "after", + "name": "max_results", "in": "query", "required": false, - "description": "Identifier for the last checkpoint ID from the previous pagination request.", + "description": "Maximum number of items to return.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" }, "explode": false }, { - "name": "limit", + "name": "page_token", "in": "query", "required": false, - "description": "Number of checkpoints to retrieve.", + "description": "Token used to retrieve the next page of results.", "schema": { - "type": "integer", - "format": "int32", - "default": 10 + "type": "string" }, "explode": false }, @@ -6082,7 +6131,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ListFineTuningJobCheckpointsResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6099,43 +6148,96 @@ } }, "tags": [ - "Fine-Tuning" + "MLflow Registered Models" ] } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events": { - "get": { - "operationId": "listFineTuningJobEvents", - "description": "Get fine-grained status updates for a fine-tuning job.", + "/mlflow/api/2.0/mlflow/registered-models/rename": { + "post": { + "operationId": "RegisteredModels_rename", + "description": "Rename an MLflow registered model.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the fine-tuning job to get events for.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } } + } + } + } + }, + "/mlflow/api/2.0/mlflow/registered-models/search": { + "get": { + "operationId": "RegisteredModels_search", + "description": "Search MLflow registered models.", + "parameters": [ + { + "name": "max_results", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false }, { - "name": "after", + "name": "page_token", "in": "query", "required": false, - "description": "Identifier for the last event from the previous pagination request.", + "description": "Token used to retrieve the next page of results.", "schema": { "type": "string" }, "explode": false }, { - "name": "limit", + "name": "filter", "in": "query", "required": false, - "description": "Number of events to retrieve.", + "description": "Registered model search filter.", "schema": { - "type": "integer", - "format": "int32", - "default": 20 + "type": "string" }, "explode": false }, @@ -6156,7 +6258,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ListFineTuningJobEventsResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6173,24 +6275,68 @@ } }, "tags": [ - "Fine-Tuning" + "MLflow Registered Models" ] } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause": { + "/mlflow/api/2.0/mlflow/registered-models/set-tag": { "post": { - "operationId": "pauseFineTuningJob", - "description": "Pause a running fine-tune job.", + "operationId": "RegisteredModels_setTag", + "description": "Set an MLflow registered-model tag.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the fine-tuning job to pause.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/registered-models/update": { + "patch": { + "operationId": "RegisteredModels_update", + "description": "Update an MLflow registered model.", + "parameters": [ { "name": "api-version", "in": "query", @@ -6208,7 +6354,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6225,24 +6371,78 @@ } }, "tags": [ - "Fine-Tuning" - ] + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume": { + "/mlflow/api/2.0/mlflow/runs/create": { "post": { - "operationId": "resumeFineTuningJob", - "description": "Resume a paused fine-tune job.", + "operationId": "Runs_create", + "description": "Create an MLflow run.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the fine-tuning job to resume.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/delete": { + "post": { + "operationId": "Runs_delete", + "description": "Delete an MLflow run.", + "parameters": [ { "name": "api-version", "in": "query", @@ -6260,7 +6460,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6277,27 +6477,43 @@ } }, "tags": [ - "Fine-Tuning" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/responses": { + "/mlflow/api/2.0/mlflow/runs/delete-tag": { "post": { - "operationId": "createResponse_createResponseStream", - "parameters": [], - "description": "Creates a model response. Creates a model response (streaming response).", + "operationId": "Runs_deleteTag", + "description": "Delete an MLflow run tag.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.Response" - } - }, - "text/event-stream": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6314,491 +6530,50 @@ } }, "tags": [ - "Responses" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "anyOf": [ - { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "top_logprobs": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "temperature": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "top_p": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "user": { - "type": "string", - "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", - "deprecated": true - }, - "safety_identifier": { - "type": "string", - "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." - }, - "prompt_cache_key": { - "type": "string", - "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." - }, - "service_tier": { - "$ref": "#/components/schemas/OpenAI.ServiceTier" - }, - "prompt_cache_retention": { - "type": "string", - "enum": [ - "in-memory", - "24h" - ], - "nullable": true - }, - "previous_response_id": { - "type": "string", - "nullable": true - }, - "model": { - "type": "string", - "description": "The model deployment to use for the creation of this response." - }, - "reasoning": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Reasoning" - } - ], - "nullable": true - }, - "background": { - "type": "boolean", - "nullable": true - }, - "max_output_tokens": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "max_tool_calls": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "text": { - "$ref": "#/components/schemas/OpenAI.ResponseTextParam" - }, - "tools": { - "$ref": "#/components/schemas/OpenAI.ToolsArray" - }, - "tool_choice": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" - }, - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" - } - ] - }, - "prompt": { - "$ref": "#/components/schemas/OpenAI.Prompt" - }, - "truncation": { - "type": "string", - "enum": [ - "auto", - "disabled" - ], - "nullable": true, - "default": "disabled" - }, - "input": { - "$ref": "#/components/schemas/OpenAI.InputParam" - }, - "include": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "nullable": true - }, - "parallel_tool_calls": { - "type": "boolean", - "nullable": true, - "default": true - }, - "store": { - "type": "boolean", - "nullable": true, - "default": true - }, - "instructions": { - "type": "string", - "nullable": true - }, - "stream": { - "type": "boolean", - "nullable": true - }, - "stream_options": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" - } - ], - "nullable": true - }, - "conversation": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ConversationParam" - } - ], - "nullable": true - }, - "context_management": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ContextManagementParam" - }, - "nullable": true, - "description": "Context management configuration for this request." - }, - "agent_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "The agent to use for generating the response." - }, - "structured_inputs": { - "type": "object", - "additionalProperties": {}, - "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." - } - } - }, - { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "top_logprobs": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "temperature": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "top_p": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "user": { - "type": "string", - "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", - "deprecated": true - }, - "safety_identifier": { - "type": "string", - "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." - }, - "prompt_cache_key": { - "type": "string", - "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." - }, - "service_tier": { - "$ref": "#/components/schemas/OpenAI.ServiceTier" - }, - "prompt_cache_retention": { - "type": "string", - "enum": [ - "in-memory", - "24h" - ], - "nullable": true - }, - "previous_response_id": { - "type": "string", - "nullable": true - }, - "model": { - "type": "string", - "description": "The model deployment to use for the creation of this response." - }, - "reasoning": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Reasoning" - } - ], - "nullable": true - }, - "background": { - "type": "boolean", - "nullable": true - }, - "max_output_tokens": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "max_tool_calls": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "text": { - "$ref": "#/components/schemas/OpenAI.ResponseTextParam" - }, - "tools": { - "$ref": "#/components/schemas/OpenAI.ToolsArray" - }, - "tool_choice": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" - }, - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" - } - ] - }, - "prompt": { - "$ref": "#/components/schemas/OpenAI.Prompt" - }, - "truncation": { - "type": "string", - "enum": [ - "auto", - "disabled" - ], - "nullable": true, - "default": "disabled" - }, - "input": { - "$ref": "#/components/schemas/OpenAI.InputParam" - }, - "include": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "nullable": true - }, - "parallel_tool_calls": { - "type": "boolean", - "nullable": true, - "default": true - }, - "store": { - "type": "boolean", - "nullable": true, - "default": true - }, - "instructions": { - "type": "string", - "nullable": true - }, - "stream": { - "type": "boolean", - "nullable": true - }, - "stream_options": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" - } - ], - "nullable": true - }, - "conversation": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ConversationParam" - } - ], - "nullable": true - }, - "context_management": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ContextManagementParam" - }, - "nullable": true, - "description": "Context management configuration for this request." - }, - "agent_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "The agent to use for generating the response." - }, - "structured_inputs": { - "type": "object", - "additionalProperties": {}, - "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." - } - } - } - ] + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } } - }, + } + }, + "/mlflow/api/2.0/mlflow/runs/get": { "get": { - "operationId": "listResponses", - "description": "Returns the list of all responses.", + "operationId": "Runs_get", + "description": "Get an MLflow run.", "parameters": [ { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "agent_name", + "name": "run_id", "in": "query", "required": false, - "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", + "description": "MLflow run identifier.", "schema": { "type": "string" }, "explode": false }, { - "name": "agent_id", + "name": "run_uuid", "in": "query", "required": false, - "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", + "description": "MLflow run UUID.", "schema": { "type": "string" }, "explode": false }, { - "name": "conversation_id", + "name": "api-version", "in": "query", - "required": false, - "description": "Filter by conversation ID. If provided, only responses associated with the specified conversation will be returned.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, @@ -6811,33 +6586,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Response" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6854,22 +6603,33 @@ } }, "tags": [ - "Responses" + "MLflow Runs" ] } }, - "/openai/v1/responses/compact": { + "/mlflow/api/2.0/mlflow/runs/log-batch": { "post": { - "operationId": "compactResponseConversation", - "description": "Produces a compaction of a responses conversation.", - "parameters": [], + "operationId": "Runs_logBatch", + "description": "Log a batch of metrics, parameters, and tags to an MLflow run.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.CompactResource" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6886,89 +6646,43 @@ } }, "tags": [ - "Responses" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.CompactResponseMethodPublicBody" + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } } } }, - "/openai/v1/responses/{response_id}": { - "get": { - "operationId": "getResponse_getResponseStream", + "/mlflow/api/2.0/mlflow/runs/log-inputs": { + "post": { + "operationId": "Runs_logInputs", + "description": "Log MLflow run input relationships.", "parameters": [ { - "name": "response_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" - } - }, - { - "name": "include[]", - "in": "query", - "required": false, - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "default": [] - } - }, - { - "name": "stream", - "in": "query", - "required": false, - "schema": { - "type": "boolean", - "default": false - }, - "explode": false - }, - { - "name": "starting_after", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int32" }, "explode": false - }, - { - "name": "accept", - "in": "header", - "required": false, - "schema": { - "type": "string", - "enum": [ - "text/event-stream" - ] - } } ], - "description": "Retrieves a model response with the given ID. Retrieves a model response with the given ID (streaming response).", "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.Response" - } - }, - "text/event-stream": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -6985,21 +6699,34 @@ } }, "tags": [ - "Responses" - ] - }, - "delete": { - "operationId": "deleteResponse", - "description": "Deletes a model response.", + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/log-metric": { + "post": { + "operationId": "Runs_logMetric", + "description": "Log one metric to an MLflow run.", "parameters": [ { - "name": "response_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the response to delete.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -7008,7 +6735,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteResponseResult" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7025,23 +6752,34 @@ } }, "tags": [ - "Responses" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/responses/{response_id}/cancel": { + "/mlflow/api/2.0/mlflow/runs/log-model": { "post": { - "operationId": "cancelResponse", - "description": "Cancels a model response.", + "operationId": "Runs_logModel", + "description": "Log MLflow model metadata.", "parameters": [ { - "name": "response_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the response to cancel.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -7050,7 +6788,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.Response" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7067,60 +6805,83 @@ } }, "tags": [ - "Responses" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/responses/{response_id}/input_items": { - "get": { - "operationId": "listInputItems", - "description": "Returns a list of input items for a given response.", + "/mlflow/api/2.0/mlflow/runs/log-parameter": { + "post": { + "operationId": "Runs_logParameter", + "description": "Log one parameter to an MLflow run.", "parameters": [ { - "name": "response_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", + "name": "api-version", "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/restore": { + "post": { + "operationId": "Runs_restore", + "description": "Restore a deleted MLflow run.", + "parameters": [ { - "name": "before", + "name": "api-version", "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, @@ -7133,33 +6894,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ItemResource" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7176,29 +6911,34 @@ } }, "tags": [ - "Responses" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/redTeams/runs": { - "get": { - "operationId": "RedTeams_list", - "description": "List a redteam by name.", + "/mlflow/api/2.0/mlflow/runs/search": { + "post": { + "operationId": "Runs_search", + "description": "Search MLflow runs.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "Foundry-Features", - "in": "header", + "name": "api-version", + "in": "query", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The API version to use for this operation.", "schema": { - "type": "string", - "enum": [ - "RedTeams=V1Preview" - ] - } + "type": "string" + }, + "explode": false } ], "responses": { @@ -7207,64 +6947,51 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedRedTeam" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Redteams" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/redTeams/runs/{name}": { - "get": { - "operationId": "RedTeams_get", - "description": "Get a redteam by name.", + "/mlflow/api/2.0/mlflow/runs/set-tag": { + "post": { + "operationId": "Runs_setTag", + "description": "Set an MLflow run tag.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "Identifier of the red team run.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "RedTeams=V1Preview" - ] - } + }, + "explode": false } ], "responses": { @@ -7273,53 +7000,42 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RedTeam" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Redteams" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/redTeams/runs:run": { + "/mlflow/api/2.0/mlflow/runs/update": { "post": { - "operationId": "RedTeams_create", - "description": "Creates a redteam run.", + "operationId": "Runs_update", + "description": "Update MLflow run metadata or status.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "RedTeams=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -7332,12 +7048,12 @@ } ], "responses": { - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", + "200": { + "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RedTeam" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7354,60 +7070,126 @@ } }, "tags": [ - "Redteams" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RedTeam" + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } - }, - "description": "Redteam to be run" + } } } }, - "/schedules": { + "/openai/v1/conversations": { + "post": { + "operationId": "createConversation", + "description": "Create a conversation.", + "parameters": [], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.ConversationResource" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Conversations" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CreateConversationBody" + } + } + } + } + }, "get": { - "operationId": "Schedules_list", - "description": "List all schedules.", + "operationId": "listConversations", + "description": "Returns the list of all conversations.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false }, { - "name": "type", + "name": "order", "in": "query", "required": false, - "description": "Filter by the type of schedule.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "$ref": "#/components/schemas/ScheduleTaskType" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, { - "name": "enabled", + "name": "after", "in": "query", "required": false, - "description": "Filter by the enabled status.", + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { - "type": "boolean" + "type": "string" }, "explode": false }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } + "type": "string" + }, + "explode": false + }, + { + "name": "agent_name", + "in": "query", + "required": false, + "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "agent_id", + "in": "query", + "required": false, + "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -7416,292 +7198,116 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedSchedule" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ConversationResource" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" + "Conversations" ] } }, - "/schedules/{id}": { - "delete": { - "operationId": "Schedules_delete", - "description": "Delete a schedule.", + "/openai/v1/conversations/{conversation_id}": { + "post": { + "operationId": "updateConversation", + "description": "Update a conversation.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "id", + "name": "conversation_id", "in": "path", "required": true, - "description": "Identifier of the schedule.", + "description": "The id of the conversation to update.", "schema": { "type": "string" } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } } ], "responses": { - "204": { - "description": "There is no content to send for this request, but the headers may be useful." - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } - }, + } + }, + "default": { + "description": "An unexpected error response.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" - ] - }, - "get": { - "operationId": "Schedules_get", - "description": "Get a schedule by id.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "id", - "in": "path", - "required": true, - "description": "Identifier of the schedule.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Schedules" - ] - }, - "put": { - "operationId": "Schedules_createOrUpdate", - "description": "Create or update operation template.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "id", - "in": "path", - "required": true, - "description": "Identifier of the schedule.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - } - }, - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Schedules" + "Conversations" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Schedule" + "$ref": "#/components/schemas/OpenAI.UpdateConversationBody" } } - }, - "description": "The resource instance." + } } - } - }, - "/schedules/{id}/runs": { + }, "get": { - "operationId": "Schedules_listRuns", - "description": "List all schedule runs.", + "operationId": "getConversation", + "description": "Retrieves a conversation.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "id", + "name": "conversation_id", "in": "path", "required": true, - "description": "Identifier of the schedule.", + "description": "The id of the conversation to retrieve.", "schema": { "type": "string" } - }, - { - "name": "type", - "in": "query", - "required": false, - "description": "Filter by the type of schedule.", - "schema": { - "$ref": "#/components/schemas/ScheduleTaskType" - }, - "explode": false - }, - { - "name": "enabled", - "in": "query", - "required": false, - "description": "Filter by the enabled status.", - "schema": { - "type": "boolean" - }, - "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } } ], "responses": { @@ -7710,80 +7316,38 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedScheduleRun" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" + "Conversations" ] - } - }, - "/schedules/{schedule_id}/runs/{run_id}": { - "get": { - "operationId": "Schedules_getRun", - "description": "Get a schedule run by id.", + }, + "delete": { + "operationId": "deleteConversation", + "description": "Deletes a conversation.", "parameters": [ { - "name": "schedule_id", - "in": "path", - "required": true, - "description": "The unique identifier of the schedule.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", + "name": "conversation_id", "in": "path", "required": true, - "description": "The unique identifier of the schedule run.", + "description": "The id of the conversation to delete.", "schema": { "type": "string" } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { @@ -7792,7 +7356,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ScheduleRun" + "$ref": "#/components/schemas/OpenAI.DeletedConversationResource" } } } @@ -7809,34 +7373,34 @@ } }, "tags": [ - "Schedules" + "Conversations" ] } }, - "/skills": { + "/openai/v1/conversations/{conversation_id}/items": { "post": { - "operationId": "Skills_createSkill", - "description": "Creates a skill.", + "operationId": "createConversationItems", + "description": "Create items in a conversation with the given ID.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", + "name": "conversation_id", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The id of the conversation on which the item needs to be created.", "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] + "type": "string" } }, { - "name": "api-version", + "name": "include", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Additional fields to include in the response.\nSee the `include` parameter for listing Conversation items for more information.", "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } }, "explode": false } @@ -7847,7 +7411,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillObject" + "$ref": "#/components/schemas/OpenAI.ConversationItemList" } } } @@ -7864,7 +7428,7 @@ } }, "tags": [ - "Skills" + "Conversations" ], "requestBody": { "required": true, @@ -7873,46 +7437,36 @@ "schema": { "type": "object", "properties": { - "name": { - "type": "string", - "maxLength": 63, - "description": "The unique name of the skill." - }, - "description": { - "type": "string", - "maxLength": 1024, - "description": "A human-readable description of the skill." - }, - "instructions": { - "type": "string", - "maxLength": 102400, - "description": "Instructions that define the behavior of the skill." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Item" }, - "description": "Set of key-value pairs associated with the skill." + "maxItems": 20, + "description": "The items to add to the conversation. You may add up to 20 items at a time." } }, "required": [ - "name" + "items" ] } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] } }, "get": { - "operationId": "Skills_listSkills", - "description": "Returns the list of all skills.", + "operationId": "listConversationItems", + "description": "List all items for a conversation with the given ID.", "parameters": [ + { + "name": "conversation_id", + "in": "path", + "required": true, + "description": "The id of the conversation on which the items needs to be listed.", + "schema": { + "type": "string" + } + }, { "name": "limit", "in": "query", @@ -7956,24 +7510,12 @@ "explode": false }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", + "name": "item_type", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Filter by item type. If provided, only items of the specified type will be returned.", "schema": { - "type": "string" + "$ref": "#/components/schemas/OpenAI.ItemType" }, "explode": false } @@ -7993,7 +7535,7 @@ "data": { "type": "array", "items": { - "$ref": "#/components/schemas/SkillObject" + "$ref": "#/components/schemas/OpenAI.OutputItem" }, "description": "The requested list of items." }, @@ -8027,50 +7569,32 @@ } }, "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } + "Conversations" + ] } }, - "/skills/{skill_name}": { + "/openai/v1/conversations/{conversation_id}/items/{item_id}": { "get": { - "operationId": "Skills_getSkill", - "description": "Retrieves a skill.", + "operationId": "getConversationItem", + "description": "Get a single item from a conversation with the given IDs.", "parameters": [ { - "name": "skill_name", + "name": "conversation_id", "in": "path", "required": true, - "description": "The unique name of the skill.", + "description": "The ID of the conversation that contains the item.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", + "name": "item_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation item to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8079,7 +7603,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillObject" + "$ref": "#/components/schemas/OpenAI.OutputItem" } } } @@ -8096,48 +7620,30 @@ } }, "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } + "Conversations" + ] }, - "post": { - "operationId": "Skills_updateSkill", - "description": "Updates an existing skill.", + "delete": { + "operationId": "deleteConversationItem", + "description": "Delete an item from a conversation with the given IDs.", "parameters": [ { - "name": "skill_name", + "name": "conversation_id", "in": "path", "required": true, - "description": "The unique name of the skill.", + "description": "The id of the conversation on which the item needs to be deleted from.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", + "name": "item_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation item to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8146,7 +7652,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillObject" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -8163,77 +7669,69 @@ } }, "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 1024, - "description": "A human-readable description of the skill." - }, - "instructions": { - "type": "string", - "maxLength": 102400, - "description": "Instructions that define the behavior of the skill." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of key-value pairs associated with the skill." - } - } - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - }, - "delete": { - "operationId": "Skills_deleteSkill", - "description": "Deletes a skill.", + "Conversations" + ] + } + }, + "/openai/v1/evals": { + "get": { + "operationId": "Evals_listEvals", + "summary": "List all evaluations", + "description": "List evaluations for a project.", "parameters": [ { - "name": "skill_name", - "in": "path", - "required": true, - "description": "The unique name of the skill.", + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last run from the previous pagination request.", "schema": { "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } + }, + "explode": false }, { - "name": "api-version", + "name": "limit", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Number of runs to retrieve.", "schema": { - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" }, "explode": false + }, + { + "name": "order_by", + "in": "query", + "required": false, + "description": "Evals can be ordered by creation time or last updated time.\nUse `created_at` for creation time or `updated_at` for last updated time.", + "schema": { + "type": "string", + "enum": [ + "created_at", + "updated_at" + ], + "default": "created_at" + } } ], "responses": { @@ -8242,7 +7740,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteSkillResponse" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Eval" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -8259,60 +7783,74 @@ } }, "tags": [ - "Skills" + "Evals" + ] + }, + "post": { + "operationId": "Evals_createEval", + "summary": "Create evaluation", + "description": "Create the structure of an evaluation that can be used to test a model's performance.\nAn evaluation is a set of testing criteria and the config for a data source, which dictates the schema of the data used in the evaluation. After creating an evaluation, you can run it on different models and model parameters. We support several types of graders and datasources.\nFor more information, see the [Evals guide](https://platform.openai.com/docs/guides/evals).", + "parameters": [], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Eval" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Evals" ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateEvalRequest" + } + } + } } } }, - "/skills/{skill_name}:download": { - "get": { - "operationId": "Skills_downloadSkill", - "description": "Downloads a skill package.", + "/openai/v1/evals/{eval_id}": { + "delete": { + "operationId": "Evals_deleteEval", + "summary": "Delete an evaluation", + "description": "Delete an evaluation.", "parameters": [ { - "name": "skill_name", + "name": "eval_id", "in": "path", "required": true, - "description": "The unique name of the skill.", + "description": "The ID of the evaluation to delete.", "schema": { "type": "string" } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { "200": { - "description": "The response body for downloading a skill package.", + "description": "The request has succeeded.", "content": { - "application/gzip": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/DeleteEvalResponse" } } } @@ -8329,41 +7867,22 @@ } }, "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - } - }, - "/skills:import": { - "post": { - "operationId": "Skills_createSkillFromPackage", - "description": "Creates a skill from a GZip package.", + "Evals" + ] + }, + "get": { + "operationId": "Evals_getEval", + "summary": "Get an evaluation", + "description": "Get an evaluation by ID.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8372,7 +7891,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillObject" + "$ref": "#/components/schemas/Eval" } } } @@ -8389,53 +7908,22 @@ } }, "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/gzip": { - "schema": { - "type": "string", - "format": "binary" - } - } - }, - "description": "The GZip package used to create the skill." - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - } - }, - "/toolsets": { + "Evals" + ] + }, "post": { - "operationId": "createToolset", - "description": "Create a toolset.", + "operationId": "Evals_updateEval", + "summary": "Update an evaluation", + "description": "Update certain properties of an evaluation.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to update.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8444,7 +7932,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolsetObject" + "$ref": "#/components/schemas/Eval" } } } @@ -8461,119 +7949,89 @@ } }, "tags": [ - "Toolsets" + "Evals" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the toolset." - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the toolset." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the toolset." - }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" - }, - "description": "The list of tools to include in the toolset." - } - }, - "required": [ - "name", - "tools" - ] + "$ref": "#/components/schemas/UpdateEvalParametersBody" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] } - }, + } + }, + "/openai/v1/evals/{eval_id}/runs": { "get": { - "operationId": "listToolsets", - "description": "List all toolsets.", + "operationId": "Evals_listRuns", + "summary": "Get a list of runs for an evaluation", + "description": "Get a list of runs for an evaluation.", "parameters": [ { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation to retrieve runs for.", "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false + "type": "string" + } }, { - "name": "order", + "name": "after", "in": "query", "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "description": "Identifier for the last run from the previous pagination request.", "schema": { - "$ref": "#/components/schemas/PageOrder" + "type": "string" }, "explode": false }, { - "name": "after", + "name": "limit", "in": "query", "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "description": "Number of runs to retrieve.", "schema": { - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 }, "explode": false }, { - "name": "before", + "name": "order", "in": "query", "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" }, "explode": false }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "status", + "in": "query", + "required": false, + "description": "Filter runs by status. One of `queued` | `in_progress` | `failed` | `completed` | `canceled`.", "schema": { "type": "string", "enum": [ - "Toolsets=V1Preview" + "queued", + "in_progress", + "completed", + "canceled", + "failed" ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" }, "explode": false } @@ -8593,7 +8051,7 @@ "data": { "type": "array", "items": { - "$ref": "#/components/schemas/ToolsetObject" + "$ref": "#/components/schemas/EvalRun" }, "description": "The requested list of items." }, @@ -8627,50 +8085,21 @@ } }, "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - } - }, - "/toolsets/{tool_set_name}": { + "Evals" + ] + }, "post": { - "operationId": "updateToolset", - "description": "Update a toolset.", + "operationId": "Evals_createEvalRun", + "summary": "Create evaluation run", "parameters": [ { - "name": "tool_set_name", + "name": "eval_id", "in": "path", "required": true, - "description": "The name of the toolset to update.", + "description": "The ID of the evaluation to create a run for.", "schema": { "type": "string" } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { @@ -8679,7 +8108,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolsetObject" + "$ref": "#/components/schemas/EvalRun" } } } @@ -8696,82 +8125,43 @@ } }, "tags": [ - "Toolsets" + "Evals" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the toolset." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the toolset." - }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" - }, - "description": "The list of tools to include in the toolset." - } - }, - "required": [ - "tools" - ] + "$ref": "#/components/schemas/CreateEvalRunRequest" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] } - }, - "get": { - "operationId": "getToolset", - "description": "Retrieve a toolset.", + } + }, + "/openai/v1/evals/{eval_id}/runs/{run_id}": { + "delete": { + "operationId": "Evals_deleteEvalRun", + "summary": "Delete evaluation run", + "description": "Delete an eval run.", "parameters": [ { - "name": "tool_set_name", + "name": "eval_id", "in": "path", "required": true, - "description": "The name of the toolset to retrieve.", + "description": "The ID of the evaluation to delete the run from.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", + "name": "run_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the run to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -8780,7 +8170,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolsetObject" + "$ref": "#/components/schemas/DeleteEvalRunResponse" } } } @@ -8797,40 +8187,6081 @@ } }, "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } + "Evals" + ] }, - "delete": { - "operationId": "deleteToolset", - "description": "Delete a toolset.", + "get": { + "operationId": "Evals_getEvalRun", + "summary": "Get an evaluation run", + "description": "Get an evaluation run by ID.", "parameters": [ { - "name": "tool_set_name", + "name": "eval_id", "in": "path", "required": true, - "description": "The name of the toolset to delete.", + "description": "The ID of the evaluation to retrieve runs for.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", + "name": "run_id", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The ID of the run to retrieve.", "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] + "type": "string" } - }, - { + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EvalRun" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Evals" + ] + }, + "post": { + "operationId": "Evals_cancelEvalRun", + "summary": "Cancel evaluation run", + "description": "Cancel an ongoing evaluation run.", + "parameters": [ + { + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation whose run you want to cancel.", + "schema": { + "type": "string" + } + }, + { + "name": "run_id", + "in": "path", + "required": true, + "description": "The ID of the run to cancel.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EvalRun" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Evals" + ] + } + }, + "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items": { + "get": { + "operationId": "Evals_getEvalRunOutputItems", + "summary": "Get evaluation run output items", + "description": "Get a list of output items for an evaluation run.", + "parameters": [ + { + "name": "eval_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "run_id", + "in": "path", + "required": true, + "description": "The ID of the run to retrieve output items for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last run from the previous pagination request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of runs to retrieve.", + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" + }, + "explode": false + }, + { + "name": "status", + "in": "query", + "required": false, + "description": "Filter output items by status. Use `failed` to filter by failed output\nitems or `pass` to filter by passed output items.", + "schema": { + "type": "string", + "enum": [ + "fail", + "pass" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRunOutputItem" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Evals" + ] + } + }, + "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}": { + "get": { + "operationId": "Evals_getEvalRunOutputItem", + "summary": "Get an output item of an evaluation run", + "description": "Get an evaluation run output item by ID.", + "parameters": [ + { + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation to retrieve runs for.", + "schema": { + "type": "string" + } + }, + { + "name": "run_id", + "in": "path", + "required": true, + "description": "The ID of the run to retrieve.", + "schema": { + "type": "string" + } + }, + { + "name": "output_item_id", + "in": "path", + "required": true, + "description": "The ID of the output item to retrieve.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EvalRunOutputItem" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Evals" + ] + } + }, + "/openai/v1/fine_tuning/jobs": { + "post": { + "operationId": "createFineTuningJob", + "description": "Creates a fine-tuning job which begins the process of creating a new model from a given dataset.\n\nResponse includes details of the enqueued job including job status and the name of the fine-tuned models once complete.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.FineTuningJob" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CreateFineTuningJobRequest" + } + } + } + } + }, + "get": { + "operationId": "listPaginatedFineTuningJobs", + "description": "List your organization's fine-tuning jobs", + "parameters": [ + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last job from the previous pagination request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of fine-tuning jobs to retrieve.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.ListPaginatedFineTuningJobsResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ] + } + }, + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}": { + "get": { + "operationId": "retrieveFineTuningJob", + "description": "Get info about a fine-tuning job.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", + "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.FineTuningJob" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ] + } + }, + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel": { + "post": { + "operationId": "cancelFineTuningJob", + "description": "Immediately cancel a fine-tune job.", + "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to cancel.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.FineTuningJob" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ] + } + }, + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints": { + "get": { + "operationId": "listFineTuningJobCheckpoints", + "description": "List checkpoints for a fine-tuning job.", + "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to get checkpoints for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last checkpoint ID from the previous pagination request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of checkpoints to retrieve.", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.ListFineTuningJobCheckpointsResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ] + } + }, + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events": { + "get": { + "operationId": "listFineTuningJobEvents", + "description": "Get fine-grained status updates for a fine-tuning job.", + "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to get events for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last event from the previous pagination request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of events to retrieve.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.ListFineTuningJobEventsResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ] + } + }, + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause": { + "post": { + "operationId": "pauseFineTuningJob", + "description": "Pause a running fine-tune job.", + "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to pause.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.FineTuningJob" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ] + } + }, + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume": { + "post": { + "operationId": "resumeFineTuningJob", + "description": "Resume a paused fine-tune job.", + "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to resume.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.FineTuningJob" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ] + } + }, + "/openai/v1/responses": { + "post": { + "operationId": "createResponse_createResponseStream", + "parameters": [], + "description": "Creates a model response. Creates a model response (streaming response).", + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.Response" + } + }, + "text/event-stream": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Responses" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "anyOf": [ + { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true + }, + "top_logprobs": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "temperature": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "top_p": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "user": { + "type": "string", + "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", + "deprecated": true + }, + "safety_identifier": { + "type": "string", + "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." + }, + "prompt_cache_key": { + "type": "string", + "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." + }, + "service_tier": { + "$ref": "#/components/schemas/OpenAI.ServiceTier" + }, + "prompt_cache_retention": { + "type": "string", + "enum": [ + "in-memory", + "24h" + ], + "nullable": true + }, + "previous_response_id": { + "type": "string", + "nullable": true + }, + "model": { + "type": "string", + "description": "The model deployment to use for the creation of this response." + }, + "reasoning": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Reasoning" + } + ], + "nullable": true + }, + "background": { + "type": "boolean", + "nullable": true + }, + "max_output_tokens": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "max_tool_calls": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "text": { + "$ref": "#/components/schemas/OpenAI.ResponseTextParam" + }, + "tools": { + "$ref": "#/components/schemas/OpenAI.ToolsArray" + }, + "tool_choice": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" + }, + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" + } + ] + }, + "prompt": { + "$ref": "#/components/schemas/OpenAI.Prompt" + }, + "truncation": { + "type": "string", + "enum": [ + "auto", + "disabled" + ], + "nullable": true, + "default": "disabled" + }, + "input": { + "$ref": "#/components/schemas/OpenAI.InputParam" + }, + "include": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "nullable": true + }, + "parallel_tool_calls": { + "type": "boolean", + "nullable": true, + "default": true + }, + "store": { + "type": "boolean", + "nullable": true, + "default": true + }, + "instructions": { + "type": "string", + "nullable": true + }, + "stream": { + "type": "boolean", + "nullable": true + }, + "stream_options": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" + } + ], + "nullable": true + }, + "conversation": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ConversationParam" + } + ], + "nullable": true + }, + "context_management": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ContextManagementParam" + }, + "nullable": true, + "description": "Context management configuration for this request." + }, + "agent_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "The agent to use for generating the response." + }, + "structured_inputs": { + "type": "object", + "additionalProperties": {}, + "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." + } + } + }, + { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true + }, + "top_logprobs": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "temperature": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "top_p": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "user": { + "type": "string", + "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", + "deprecated": true + }, + "safety_identifier": { + "type": "string", + "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." + }, + "prompt_cache_key": { + "type": "string", + "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." + }, + "service_tier": { + "$ref": "#/components/schemas/OpenAI.ServiceTier" + }, + "prompt_cache_retention": { + "type": "string", + "enum": [ + "in-memory", + "24h" + ], + "nullable": true + }, + "previous_response_id": { + "type": "string", + "nullable": true + }, + "model": { + "type": "string", + "description": "The model deployment to use for the creation of this response." + }, + "reasoning": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Reasoning" + } + ], + "nullable": true + }, + "background": { + "type": "boolean", + "nullable": true + }, + "max_output_tokens": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "max_tool_calls": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "text": { + "$ref": "#/components/schemas/OpenAI.ResponseTextParam" + }, + "tools": { + "$ref": "#/components/schemas/OpenAI.ToolsArray" + }, + "tool_choice": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" + }, + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" + } + ] + }, + "prompt": { + "$ref": "#/components/schemas/OpenAI.Prompt" + }, + "truncation": { + "type": "string", + "enum": [ + "auto", + "disabled" + ], + "nullable": true, + "default": "disabled" + }, + "input": { + "$ref": "#/components/schemas/OpenAI.InputParam" + }, + "include": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "nullable": true + }, + "parallel_tool_calls": { + "type": "boolean", + "nullable": true, + "default": true + }, + "store": { + "type": "boolean", + "nullable": true, + "default": true + }, + "instructions": { + "type": "string", + "nullable": true + }, + "stream": { + "type": "boolean", + "nullable": true + }, + "stream_options": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" + } + ], + "nullable": true + }, + "conversation": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ConversationParam" + } + ], + "nullable": true + }, + "context_management": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ContextManagementParam" + }, + "nullable": true, + "description": "Context management configuration for this request." + }, + "agent_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "The agent to use for generating the response." + }, + "structured_inputs": { + "type": "object", + "additionalProperties": {}, + "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." + } + } + } + ] + } + } + } + } + }, + "get": { + "operationId": "listResponses", + "description": "Returns the list of all responses.", + "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "agent_name", + "in": "query", + "required": false, + "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "agent_id", + "in": "query", + "required": false, + "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "conversation_id", + "in": "query", + "required": false, + "description": "Filter by conversation ID. If provided, only responses associated with the specified conversation will be returned.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Response" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Responses" + ] + } + }, + "/openai/v1/responses/compact": { + "post": { + "operationId": "compactResponseConversation", + "description": "Produces a compaction of a responses conversation.", + "parameters": [], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CompactResource" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Responses" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CompactResponseMethodPublicBody" + } + } + } + } + } + }, + "/openai/v1/responses/{response_id}": { + "get": { + "operationId": "getResponse_getResponseStream", + "parameters": [ + { + "name": "response_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "include[]", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "default": [] + } + }, + { + "name": "stream", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false + }, + "explode": false + }, + { + "name": "starting_after", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "accept", + "in": "header", + "required": false, + "schema": { + "type": "string", + "enum": [ + "text/event-stream" + ] + } + } + ], + "description": "Retrieves a model response with the given ID. Retrieves a model response with the given ID (streaming response).", + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.Response" + } + }, + "text/event-stream": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Responses" + ] + }, + "delete": { + "operationId": "deleteResponse", + "description": "Deletes a model response.", + "parameters": [ + { + "name": "response_id", + "in": "path", + "required": true, + "description": "The ID of the response to delete.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteResponseResult" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Responses" + ] + } + }, + "/openai/v1/responses/{response_id}/cancel": { + "post": { + "operationId": "cancelResponse", + "description": "Cancels a model response.", + "parameters": [ + { + "name": "response_id", + "in": "path", + "required": true, + "description": "The ID of the response to cancel.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.Response" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Responses" + ] + } + }, + "/openai/v1/responses/{response_id}/input_items": { + "get": { + "operationId": "listInputItems", + "description": "Returns a list of input items for a given response.", + "parameters": [ + { + "name": "response_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ItemResource" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Responses" + ] + } + }, + "/redTeams/runs": { + "get": { + "operationId": "RedTeams_list", + "description": "List a redteam by name.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "RedTeams=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedRedTeam" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Redteams" + ] + } + }, + "/redTeams/runs/{name}": { + "get": { + "operationId": "RedTeams_get", + "description": "Get a redteam by name.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "Identifier of the red team run.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "RedTeams=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RedTeam" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Redteams" + ] + } + }, + "/redTeams/runs:run": { + "post": { + "operationId": "RedTeams_create", + "description": "Creates a redteam run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "RedTeams=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RedTeam" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Redteams" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RedTeam" + } + } + }, + "description": "Redteam to be run" + } + } + }, + "/schedules": { + "get": { + "operationId": "Schedules_list", + "description": "List all schedules.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "type", + "in": "query", + "required": false, + "description": "Filter by the type of schedule.", + "schema": { + "$ref": "#/components/schemas/ScheduleTaskType" + }, + "explode": false + }, + { + "name": "enabled", + "in": "query", + "required": false, + "description": "Filter by the enabled status.", + "schema": { + "type": "boolean" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedSchedule" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Schedules" + ] + } + }, + "/schedules/{id}": { + "delete": { + "operationId": "Schedules_delete", + "description": "Delete a schedule.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "id", + "in": "path", + "required": true, + "description": "Identifier of the schedule.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } + } + ], + "responses": { + "204": { + "description": "There is no content to send for this request, but the headers may be useful." + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Schedules" + ] + }, + "get": { + "operationId": "Schedules_get", + "description": "Get a schedule by id.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "id", + "in": "path", + "required": true, + "description": "Identifier of the schedule.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Schedule" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Schedules" + ] + }, + "put": { + "operationId": "Schedules_createOrUpdate", + "description": "Create or update operation template.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "id", + "in": "path", + "required": true, + "description": "Identifier of the schedule.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Schedule" + } + } + } + }, + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Schedule" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Schedules" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Schedule" + } + } + }, + "description": "The resource instance." + } + } + }, + "/schedules/{id}/runs": { + "get": { + "operationId": "Schedules_listRuns", + "description": "List all schedule runs.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "id", + "in": "path", + "required": true, + "description": "Identifier of the schedule.", + "schema": { + "type": "string" + } + }, + { + "name": "type", + "in": "query", + "required": false, + "description": "Filter by the type of schedule.", + "schema": { + "$ref": "#/components/schemas/ScheduleTaskType" + }, + "explode": false + }, + { + "name": "enabled", + "in": "query", + "required": false, + "description": "Filter by the enabled status.", + "schema": { + "type": "boolean" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedScheduleRun" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Schedules" + ] + } + }, + "/schedules/{schedule_id}/runs/{run_id}": { + "get": { + "operationId": "Schedules_getRun", + "description": "Get a schedule run by id.", + "parameters": [ + { + "name": "schedule_id", + "in": "path", + "required": true, + "description": "The unique identifier of the schedule.", + "schema": { + "type": "string" + } + }, + { + "name": "run_id", + "in": "path", + "required": true, + "description": "The unique identifier of the schedule run.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScheduleRun" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Schedules" + ] + } + }, + "/skills": { + "post": { + "operationId": "Skills_createSkill", + "description": "Creates a skill.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 63, + "description": "The unique name of the skill." + }, + "description": { + "type": "string", + "maxLength": 1024, + "description": "A human-readable description of the skill." + }, + "instructions": { + "type": "string", + "maxLength": 102400, + "description": "Instructions that define the behavior of the skill." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of key-value pairs associated with the skill." + } + }, + "required": [ + "name" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + }, + "get": { + "operationId": "Skills_listSkills", + "description": "Returns the list of all skills.", + "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SkillObject" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + } + }, + "/skills/{skill_name}": { + "get": { + "operationId": "Skills_getSkill", + "description": "Retrieves a skill.", + "parameters": [ + { + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + }, + "post": { + "operationId": "Skills_updateSkill", + "description": "Updates an existing skill.", + "parameters": [ + { + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 1024, + "description": "A human-readable description of the skill." + }, + "instructions": { + "type": "string", + "maxLength": 102400, + "description": "Instructions that define the behavior of the skill." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of key-value pairs associated with the skill." + } + } + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + }, + "delete": { + "operationId": "Skills_deleteSkill", + "description": "Deletes a skill.", + "parameters": [ + { + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteSkillResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + } + }, + "/skills/{skill_name}:download": { + "get": { + "operationId": "Skills_downloadSkill", + "description": "Downloads a skill package.", + "parameters": [ + { + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The response body for downloading a skill package.", + "content": { + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + } + }, + "/skills:import": { + "post": { + "operationId": "Skills_createSkillFromPackage", + "description": "Creates a skill from a GZip package.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "requestBody": { + "required": true, + "content": { + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" + } + } + }, + "description": "The GZip package used to create the skill." + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + } + }, + "/toolsets": { + "post": { + "operationId": "createToolset", + "description": "Create a toolset.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToolsetObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Toolsets" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the toolset." + }, + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the toolset." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the toolset." + }, + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" + }, + "description": "The list of tools to include in the toolset." + } + }, + "required": [ + "name", + "tools" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + }, + "get": { + "operationId": "listToolsets", + "description": "List all toolsets.", + "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolsetObject" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + } + }, + "/toolsets/{tool_set_name}": { + "post": { + "operationId": "updateToolset", + "description": "Update a toolset.", + "parameters": [ + { + "name": "tool_set_name", + "in": "path", + "required": true, + "description": "The name of the toolset to update.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToolsetObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Toolsets" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the toolset." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the toolset." + }, + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" + }, + "description": "The list of tools to include in the toolset." + } + }, + "required": [ + "tools" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + }, + "get": { + "operationId": "getToolset", + "description": "Retrieve a toolset.", + "parameters": [ + { + "name": "tool_set_name", + "in": "path", + "required": true, + "description": "The name of the toolset to retrieve.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToolsetObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + }, + "delete": { + "operationId": "deleteToolset", + "description": "Delete a toolset.", + "parameters": [ + { + "name": "tool_set_name", + "in": "path", + "required": true, + "description": "The name of the toolset to delete.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteToolsetResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + } + }, + "/training_jobs": { + "get": { + "operationId": "TrainingJobs_list", + "description": "List training jobs.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "jobType", + "in": "query", + "required": false, + "description": "Filter by job type (e.g. 'Command').", + "schema": { + "$ref": "#/components/schemas/JobType" + }, + "explode": false + }, + { + "name": "tag", + "in": "query", + "required": false, + "description": "Filter jobs by tag in the format 'key=value' (e.g., 'framework=pytorch').", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "listViewType", + "in": "query", + "required": false, + "description": "Specifies which view type to apply when listing jobs.", + "schema": { + "$ref": "#/components/schemas/ListViewType" + }, + "explode": false + }, + { + "name": "properties", + "in": "query", + "required": false, + "description": "Comma-separated user property names and optionally values. Example: prop1,prop2=value2.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJob" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + }, + "post": { + "operationId": "TrainingJobs_create", + "description": "Create and execute a model training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry job creation.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Job" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobCreate" + } + } + }, + "description": "The training job to create." + } + } + }, + "/training_jobs/operations/{operationId}/result": { + "get": { + "operationId": "TrainingJobOperations_getOperationResult", + "description": "Poll the result of an asynchronous training job operation.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "operationId", + "in": "path", + "required": true, + "description": "The operation identifier returned by a training job create, cancel, or delete request.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOperationResource" + } + } + } + }, + "202": { + "description": "Response returned when a training job operation is still in progress.", + "headers": { + "Location": { + "required": false, + "description": "URL to poll for the operation result.", + "schema": { + "type": "string" + } + }, + "Operation-Location": { + "required": false, + "description": "URL to poll for the operation status.", + "schema": { + "type": "string" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/operations/{operationId}/status": { + "get": { + "operationId": "TrainingJobOperations_getOperationStatus", + "description": "Poll the status of an asynchronous training job operation.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "operationId", + "in": "path", + "required": true, + "description": "The operation identifier returned by a training job create, cancel, or delete request.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOperationResource" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/artifacts": { + "get": { + "operationId": "TrainingJobArtifacts_listArtifacts", + "description": "List artifacts for the current view of a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/artifacts:content": { + "get": { + "operationId": "TrainingJobArtifacts_downloadArtifact", + "description": "Download training job artifact content.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/artifacts:contentInfo": { + "get": { + "operationId": "TrainingJobArtifacts_getArtifactContentInfo", + "description": "Get download information for a training job artifact.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/artifacts:contentInfoByPrefix": { + "get": { + "operationId": "TrainingJobArtifacts_getArtifactContentInfoByPrefix", + "description": "List download information for training job artifacts under a path prefix.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/artifacts:metadata": { + "get": { + "operationId": "TrainingJobArtifacts_getArtifactMetadata", + "description": "Get metadata for a training job artifact.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/metrics": { + "get": { + "operationId": "TrainingJobMetrics_listMetrics", + "description": "List metrics emitted by the current view of a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetric" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/metrics/{metricName}": { + "get": { + "operationId": "TrainingJobMetrics_getMetric", + "description": "Get the full history for a training job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricPoint" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/metrics/{metricName}:aggregates": { + "get": { + "operationId": "TrainingJobMetrics_getMetricAggregates", + "description": "Get aggregate values for a training job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricAggregate" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/metrics/{metricName}:sample": { + "get": { + "operationId": "TrainingJobMetrics_getMetricSample", + "description": "Get one sampled value or window for a training job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/metrics/{metricName}:samples": { + "get": { + "operationId": "TrainingJobMetrics_getMetricSamples", + "description": "Get sampled values for a training job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/metrics:lastValues": { + "get": { + "operationId": "TrainingJobMetrics_getMetricLastValues", + "description": "Get the latest values for metrics emitted by the current view of a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricLastValue" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/outputs": { + "get": { + "operationId": "TrainingJobOutputs_listOutputs", + "description": "List outputs produced by a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/outputs/{outputName}": { + "get": { + "operationId": "TrainingJobOutputs_getOutput", + "description": "Get one output produced by a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "outputName", + "in": "path", + "required": true, + "description": "The output name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs": { + "get": { + "operationId": "TrainingJobRuns_listRuns", + "description": "List runs for a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobRun" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}": { + "get": { + "operationId": "TrainingJobRuns_getRun", + "description": "Get one run for a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobRun" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/artifacts": { + "get": { + "operationId": "TrainingJobRunArtifacts_listRunArtifacts", + "description": "List artifacts for a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/artifacts:content": { + "get": { + "operationId": "TrainingJobRunArtifacts_downloadRunArtifact", + "description": "Download artifact content from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/artifacts:contentInfo": { + "get": { + "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfo", + "description": "Get download information for an artifact from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/artifacts:contentInfoByPrefix": { + "get": { + "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfoByPrefix", + "description": "List download information for artifacts under a path prefix from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/artifacts:metadata": { + "get": { + "operationId": "TrainingJobRunArtifacts_getRunArtifactMetadata", + "description": "Get metadata for an artifact from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/metrics": { + "get": { + "operationId": "TrainingJobRunMetrics_listRunMetrics", + "description": "List metrics emitted by a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetric" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetric", + "description": "Get the full history for a metric from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricPoint" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:aggregates": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetricAggregates", + "description": "Get aggregate metric values from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricAggregate" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:sample": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetricSample", + "description": "Get one sampled value or window from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:samples": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetricSamples", + "description": "Get sampled metric values from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { "name": "api-version", "in": "query", "required": true, @@ -8847,7 +14278,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteToolsetResponse" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -8864,13 +14295,547 @@ } }, "tags": [ - "Toolsets" + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/metrics:lastValues": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetricLastValues", + "description": "Get latest metric values for a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricLastValue" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/outputs": { + "get": { + "operationId": "TrainingJobRunOutputs_listRunOutputs", + "description": "List outputs produced by a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/outputs/{outputName}": { + "get": { + "operationId": "TrainingJobRunOutputs_getRunOutput", + "description": "Get one output produced by a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "outputName", + "in": "path", + "required": true, + "description": "The output name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/services": { + "get": { + "operationId": "TrainingJobs_showServices", + "description": "List service endpoints for the current view of a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "nodeId", + "in": "query", + "required": false, + "description": "Node identifier whose service endpoints should be returned. If omitted, leader-node services are returned.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrainingJobServiceCollection" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{name}": { + "get": { + "operationId": "TrainingJobs_get", + "description": "Get a training job by name.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the training job. This is case-sensitive.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Job" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + }, + "delete": { + "operationId": "TrainingJobs_beginDelete", + "description": "Delete a training job by name. Returns 202 Accepted with Location and Operation-Location headers to poll for completion, or 204 if the job does not exist.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the training job. This is case-sensitive.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "202": { + "description": "Response returned when a job delete operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the final result of the delete operation.", + "schema": { + "type": "string" + } + }, + "Operation-Location": { + "required": false, + "description": "URL to poll for the status of the delete operation.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "204": { + "description": "There is no content to send for this request, but the headers may be useful." + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{name}:cancel": { + "post": { + "operationId": "TrainingJobs_beginCancel", + "description": "Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with Location and Operation-Location headers to poll for completion.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the training job. This is case-sensitive.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded." + }, + "202": { + "description": "Response returned when a job cancel operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the final result of the cancel operation.", + "schema": { + "type": "string" + } + }, + "Operation-Location": { + "required": false, + "description": "URL to poll for the status of the cancel operation.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] } } }, @@ -9486,6 +15451,23 @@ "type": "string", "description": "Identifier of a saved asset." }, + "AssetTypes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "uri_file", + "uri_folder", + "safetensors_model", + "literal" + ] + } + ], + "description": "Type of job input/output asset." + }, "AttackStrategy": { "anyOf": [ { @@ -10694,7 +16676,453 @@ }, "name": { "type": "string", - "description": "The name of the Azure Function that was called." + "description": "The name of the Azure Function that was called." + }, + "output": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallOutputContent" + } + ], + "description": "The output from the Azure Function tool call." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.OutputItem" + } + ], + "description": "The output of an Azure Function tool call." + }, + "AzureOpenAIModelConfiguration": { + "type": "object", + "required": [ + "type", + "modelDeploymentName" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AzureOpenAIModel" + ] + }, + "modelDeploymentName": { + "type": "string", + "description": "Deployment name for AOAI model. Example: gpt-4o if in AIServices or connection based `connection_name/deployment_name` (e.g. `my-aoai-connection/gpt-4o`)." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TargetConfig" + } + ], + "description": "Azure OpenAI model configuration. The API version would be selected by the service for querying the model." + }, + "BaseCredentials": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/CredentialType" + } + ], + "description": "The type of credential used by the connection", + "readOnly": true + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "ApiKey": "#/components/schemas/ApiKeyCredentials", + "AAD": "#/components/schemas/EntraIDCredentials", + "CustomKeys": "#/components/schemas/CustomCredential", + "SAS": "#/components/schemas/SASCredentials", + "None": "#/components/schemas/NoAuthenticationCredentials", + "AgenticIdentityToken_Preview": "#/components/schemas/AgenticIdentityPreviewCredentials" + } + }, + "description": "A base class for connection credentials" + }, + "BenchmarkName": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "builtin.gpqa_diamond", + "builtin.bbeh", + "builtin.bigbenchhard", + "builtin.frontierscience", + "builtin.musr", + "builtin.truthful_qa", + "builtin.inspect_ai.gpqa_diamond", + "builtin.inspect_ai.chembench", + "builtin.inspect_ai.aime_2025", + "builtin.inspect_ai.musr" + ] + } + ], + "description": "The set of available benchmark specifications." + }, + "BingCustomSearchConfiguration": { + "type": "object", + "required": [ + "project_connection_id", + "instance_name" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional user-defined name for this tool or configuration." + }, + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "project_connection_id": { + "type": "string", + "description": "Project connection id for grounding with bing search" + }, + "instance_name": { + "type": "string", + "description": "Name of the custom configuration instance given to config." + }, + "market": { + "type": "string", + "description": "The market where the results come from." + }, + "set_lang": { + "type": "string", + "description": "The language to use for user interface strings when calling Bing API." + }, + "count": { + "type": "integer", + "format": "int64", + "description": "The number of search results to return in the bing api response" + }, + "freshness": { + "type": "string", + "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." + } + }, + "description": "A bing custom search configuration." + }, + "BingCustomSearchPreviewTool": { + "type": "object", + "required": [ + "type", + "bing_custom_search_preview" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "bing_custom_search_preview" + ], + "description": "The object type, which is always 'bing_custom_search_preview'." + }, + "name": { + "type": "string", + "description": "Optional user-defined name for this tool or configuration." + }, + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "bing_custom_search_preview": { + "allOf": [ + { + "$ref": "#/components/schemas/BingCustomSearchToolParameters" + } + ], + "description": "The bing custom search tool parameters." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Tool" + } + ], + "description": "The input definition information for a Bing custom search tool as used to configure an agent." + }, + "BingCustomSearchToolCall": { + "type": "object", + "required": [ + "type", + "call_id", + "arguments", + "status" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "bing_custom_search_preview_call" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "arguments": { + "type": "string", + "description": "A JSON string of the arguments to pass to the tool." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.OutputItem" + } + ], + "description": "A Bing custom search tool call." + }, + "BingCustomSearchToolCallOutput": { + "type": "object", + "required": [ + "type", + "call_id", + "status" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "bing_custom_search_preview_call_output" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "output": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallOutputContent" + } + ], + "description": "The output from the Bing custom search tool call." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.OutputItem" + } + ], + "description": "The output of a Bing custom search tool call." + }, + "BingCustomSearchToolParameters": { + "type": "object", + "required": [ + "search_configurations" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional user-defined name for this tool or configuration." + }, + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "search_configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BingCustomSearchConfiguration" + }, + "maxItems": 1, + "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." + } + }, + "description": "The bing custom search tool parameters." + }, + "BingGroundingSearchConfiguration": { + "type": "object", + "required": [ + "project_connection_id" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional user-defined name for this tool or configuration." + }, + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "project_connection_id": { + "type": "string", + "description": "Project connection id for grounding with bing search" + }, + "market": { + "type": "string", + "description": "The market where the results come from." + }, + "set_lang": { + "type": "string", + "description": "The language to use for user interface strings when calling Bing API." + }, + "count": { + "type": "integer", + "format": "int64", + "description": "The number of search results to return in the bing api response" + }, + "freshness": { + "type": "string", + "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." + } + }, + "description": "Search configuration for Bing Grounding" + }, + "BingGroundingSearchToolParameters": { + "type": "object", + "required": [ + "search_configurations" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional user-defined name for this tool or configuration." + }, + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "search_configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BingGroundingSearchConfiguration" + }, + "maxItems": 1, + "description": "The search configurations attached to this tool. There can be a maximum of 1\nsearch configuration resource attached to the tool." + } + }, + "description": "The bing grounding search tool parameters." + }, + "BingGroundingTool": { + "type": "object", + "required": [ + "type", + "bing_grounding" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "bing_grounding" + ], + "description": "The object type, which is always 'bing_grounding'." + }, + "name": { + "type": "string", + "description": "Optional user-defined name for this tool or configuration." + }, + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "bing_grounding": { + "allOf": [ + { + "$ref": "#/components/schemas/BingGroundingSearchToolParameters" + } + ], + "description": "The bing grounding search tool parameters." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Tool" + } + ], + "description": "The input definition information for a bing grounding search tool as used to configure an agent." + }, + "BingGroundingToolCall": { + "type": "object", + "required": [ + "type", + "call_id", + "arguments", + "status" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "bing_grounding_call" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "arguments": { + "type": "string", + "description": "A JSON string of the arguments to pass to the tool." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.OutputItem" + } + ], + "description": "A Bing grounding tool call." + }, + "BingGroundingToolCallOutput": { + "type": "object", + "required": [ + "type", + "call_id", + "status" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "bing_grounding_call_output" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." }, "output": { "allOf": [ @@ -10702,7 +17130,7 @@ "$ref": "#/components/schemas/ToolCallOutputContent" } ], - "description": "The output from the Azure Function tool call." + "description": "The output from the Bing grounding tool call." }, "status": { "allOf": [ @@ -10718,141 +17146,49 @@ "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "The output of an Azure Function tool call." + "description": "The output of a Bing grounding tool call." }, - "AzureOpenAIModelConfiguration": { + "BlobReference": { "type": "object", "required": [ - "type", - "modelDeploymentName" + "blobUri", + "storageAccountArmId", + "credential" ], "properties": { - "type": { + "blobUri": { "type": "string", - "enum": [ - "AzureOpenAIModel" - ] + "format": "uri", + "description": "Blob URI path for client to upload data. Example: `https://blob.windows.core.net/Container/Path`" }, - "modelDeploymentName": { + "storageAccountArmId": { "type": "string", - "description": "Deployment name for AOAI model. Example: gpt-4o if in AIServices or connection based `connection_name/deployment_name` (e.g. `my-aoai-connection/gpt-4o`)." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/TargetConfig" - } - ], - "description": "Azure OpenAI model configuration. The API version would be selected by the service for querying the model." - }, - "BaseCredentials": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { + "description": "ARM ID of the storage account to use." + }, + "credential": { "allOf": [ { - "$ref": "#/components/schemas/CredentialType" + "$ref": "#/components/schemas/SasCredential" } ], - "description": "The type of credential used by the connection", - "readOnly": true - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "ApiKey": "#/components/schemas/ApiKeyCredentials", - "AAD": "#/components/schemas/EntraIDCredentials", - "CustomKeys": "#/components/schemas/CustomCredential", - "SAS": "#/components/schemas/SASCredentials", - "None": "#/components/schemas/NoAuthenticationCredentials", - "AgenticIdentityToken_Preview": "#/components/schemas/AgenticIdentityPreviewCredentials" - } - }, - "description": "A base class for connection credentials" - }, - "BenchmarkName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "builtin.gpqa_diamond", - "builtin.bbeh", - "builtin.bigbenchhard", - "builtin.frontierscience", - "builtin.musr", - "builtin.truthful_qa", - "builtin.inspect_ai.gpqa_diamond", - "builtin.inspect_ai.chembench", - "builtin.inspect_ai.aime_2025", - "builtin.inspect_ai.musr" - ] - } - ], - "description": "The set of available benchmark specifications." - }, - "BingCustomSearchConfiguration": { - "type": "object", - "required": [ - "project_connection_id", - "instance_name" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "project_connection_id": { - "type": "string", - "description": "Project connection id for grounding with bing search" - }, - "instance_name": { - "type": "string", - "description": "Name of the custom configuration instance given to config." - }, - "market": { - "type": "string", - "description": "The market where the results come from." - }, - "set_lang": { - "type": "string", - "description": "The language to use for user interface strings when calling Bing API." - }, - "count": { - "type": "integer", - "format": "int64", - "description": "The number of search results to return in the bing api response" - }, - "freshness": { - "type": "string", - "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." + "description": "Credential info to access the storage account." } }, - "description": "A bing custom search configuration." + "description": "Blob reference details." }, - "BingCustomSearchPreviewTool": { + "BrowserAutomationPreviewTool": { "type": "object", "required": [ "type", - "bing_custom_search_preview" + "browser_automation_preview" ], "properties": { "type": { "type": "string", "enum": [ - "bing_custom_search_preview" + "browser_automation_preview" ], - "description": "The object type, which is always 'bing_custom_search_preview'." + "description": "The object type, which is always 'browser_automation_preview'." }, "name": { "type": "string", @@ -10862,13 +17198,13 @@ "type": "string", "description": "Optional user-defined description for this tool or configuration." }, - "bing_custom_search_preview": { + "browser_automation_preview": { "allOf": [ { - "$ref": "#/components/schemas/BingCustomSearchToolParameters" + "$ref": "#/components/schemas/BrowserAutomationToolParameters" } ], - "description": "The bing custom search tool parameters." + "description": "The Browser Automation Tool parameters." } }, "allOf": [ @@ -10876,9 +17212,9 @@ "$ref": "#/components/schemas/OpenAI.Tool" } ], - "description": "The input definition information for a Bing custom search tool as used to configure an agent." + "description": "The input definition information for a Browser Automation Tool, as used to configure an Agent." }, - "BingCustomSearchToolCall": { + "BrowserAutomationToolCall": { "type": "object", "required": [ "type", @@ -10890,7 +17226,7 @@ "type": { "type": "string", "enum": [ - "bing_custom_search_preview_call" + "browser_automation_preview_call" ] }, "call_id": { @@ -10915,9 +17251,9 @@ "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "A Bing custom search tool call." + "description": "A browser automation tool call." }, - "BingCustomSearchToolCallOutput": { + "BrowserAutomationToolCallOutput": { "type": "object", "required": [ "type", @@ -10928,7 +17264,7 @@ "type": { "type": "string", "enum": [ - "bing_custom_search_preview_call_output" + "browser_automation_preview_call_output" ] }, "call_id": { @@ -10941,7 +17277,7 @@ "$ref": "#/components/schemas/ToolCallOutputContent" } ], - "description": "The output from the Bing custom search tool call." + "description": "The output from the browser automation tool call." }, "status": { "allOf": [ @@ -10957,12 +17293,12 @@ "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "The output of a Bing custom search tool call." + "description": "The output of a browser automation tool call." }, - "BingCustomSearchToolParameters": { + "BrowserAutomationToolConnectionParameters": { "type": "object", "required": [ - "search_configurations" + "project_connection_id" ], "properties": { "name": { @@ -10973,21 +17309,17 @@ "type": "string", "description": "Optional user-defined description for this tool or configuration." }, - "search_configurations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BingCustomSearchConfiguration" - }, - "maxItems": 1, - "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." + "project_connection_id": { + "type": "string", + "description": "The ID of the project connection to your Azure Playwright resource." } }, - "description": "The bing custom search tool parameters." + "description": "Definition of input parameters for the connection used by the Browser Automation Tool." }, - "BingGroundingSearchConfiguration": { + "BrowserAutomationToolParameters": { "type": "object", "required": [ - "project_connection_id" + "connection" ], "properties": { "name": { @@ -10998,634 +17330,1111 @@ "type": "string", "description": "Optional user-defined description for this tool or configuration." }, - "project_connection_id": { - "type": "string", - "description": "Project connection id for grounding with bing search" - }, - "market": { + "connection": { + "allOf": [ + { + "$ref": "#/components/schemas/BrowserAutomationToolConnectionParameters" + } + ], + "description": "The project connection parameters associated with the Browser Automation Tool." + } + }, + "description": "Definition of input parameters for the Browser Automation Tool." + }, + "CaptureStructuredOutputsTool": { + "type": "object", + "required": [ + "type", + "outputs" + ], + "properties": { + "type": { "type": "string", - "description": "The market where the results come from." + "enum": [ + "capture_structured_outputs" + ], + "description": "The type of the tool. Always `capture_structured_outputs`." }, - "set_lang": { - "type": "string", - "description": "The language to use for user interface strings when calling Bing API." + "outputs": { + "allOf": [ + { + "$ref": "#/components/schemas/StructuredOutputDefinition" + } + ], + "description": "The structured outputs to capture from the model." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Tool" + } + ], + "description": "A tool for capturing structured outputs" + }, + "ChartCoordinate": { + "type": "object", + "required": [ + "x", + "y", + "size" + ], + "properties": { + "x": { + "type": "integer", + "format": "int32", + "description": "X-axis coordinate." }, - "count": { + "y": { "type": "integer", - "format": "int64", - "description": "The number of search results to return in the bing api response" + "format": "int32", + "description": "Y-axis coordinate." }, - "freshness": { - "type": "string", - "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." + "size": { + "type": "integer", + "format": "int32", + "description": "Size of the chart element." } }, - "description": "Search configuration for Bing Grounding" + "description": "Coordinates for the analysis chart." }, - "BingGroundingSearchToolParameters": { + "ChatSummaryMemoryItem": { "type": "object", "required": [ - "search_configurations" + "kind" ], "properties": { - "name": { + "kind": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "enum": [ + "chat_summary" + ], + "description": "The kind of the memory item." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/MemoryItem" + } + ], + "description": "A memory item containing a summary extracted from conversations.", + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + }, + "ChatTemplate": { + "anyOf": [ + { + "type": "string" }, - "description": { + { "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "enum": [ + "Chatml", + "llama-3", + "Zephyr", + "Gemma", + "phi-3" + ] + } + ], + "description": "Chat template used to format conversational training data." + }, + "ClusterInsightResult": { + "type": "object", + "required": [ + "summary", + "clusters" + ], + "properties": { + "summary": { + "allOf": [ + { + "$ref": "#/components/schemas/InsightSummary" + } + ], + "description": "Summary of the insights report." }, - "search_configurations": { + "clusters": { "type": "array", "items": { - "$ref": "#/components/schemas/BingGroundingSearchConfiguration" + "$ref": "#/components/schemas/InsightCluster" }, - "maxItems": 1, - "description": "The search configurations attached to this tool. There can be a maximum of 1\nsearch configuration resource attached to the tool." + "description": "List of clusters identified in the insights." + }, + "coordinates": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/ChartCoordinate" + }, + "description": " Optional mapping of IDs to 2D coordinates used by the UX for visualization.\n\n The map keys are string identifiers (for example, a cluster id or a sample id)\n and the values are the coordinates and visual size for rendering on a 2D chart.\n\n This property is omitted unless the client requests coordinates (for example,\n by passing `includeCoordinates=true` as a query parameter).\n\n Example:\n ```\n {\n \"cluster-1\": { \"x\": 12, \"y\": 34, \"size\": 8 },\n \"sample-123\": { \"x\": 18, \"y\": 22, \"size\": 4 }\n }\n ```\n\n Coordinates are intended only for client-side visualization and do not\n modify the canonical insights results." } }, - "description": "The bing grounding search tool parameters." + "description": "Insights from the cluster analysis." }, - "BingGroundingTool": { + "ClusterTokenUsage": { "type": "object", "required": [ - "type", - "bing_grounding" + "inputTokenUsage", + "outputTokenUsage", + "totalTokenUsage" + ], + "properties": { + "inputTokenUsage": { + "type": "integer", + "format": "int32", + "description": "input token usage" + }, + "outputTokenUsage": { + "type": "integer", + "format": "int32", + "description": "output token usage" + }, + "totalTokenUsage": { + "type": "integer", + "format": "int32", + "description": "total token usage" + } + }, + "description": "Token usage for cluster analysis" + }, + "CodeBasedEvaluatorDefinition": { + "type": "object", + "required": [ + "type" ], "properties": { "type": { "type": "string", "enum": [ - "bing_grounding" + "code" + ] + }, + "code_text": { + "type": "string", + "description": "Inline code text for the evaluator" + }, + "entry_point": { + "type": "string", + "description": "The entry point Python file name for the uploaded evaluator code (e.g. 'answer_length_evaluator.py')" + }, + "image_tag": { + "type": "string", + "description": "The container image tag to use for evaluator code execution" + }, + "blob_uri": { + "type": "string", + "description": "The blob URI for the evaluator storage" + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/EvaluatorDefinition" + } + ], + "description": "Code-based evaluator definition using python code" + }, + "CommandJob": { + "type": "object", + "required": [ + "jobType", + "computeId" + ], + "properties": { + "jobType": { + "type": "string", + "enum": [ + "Command" ], - "description": "The object type, which is always 'bing_grounding'." + "description": "Job type." }, - "name": { + "command": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "description": "The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified." + }, + "environmentImageReference": { + "type": "string", + "description": "ACR path or Azure ML environment reference. Required when training is not specified." + }, + "training": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution." + }, + "displayName": { + "type": "string", + "description": "Display name of job." }, "description": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "description": "The asset description text." }, - "bing_grounding": { + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The asset property dictionary." + }, + "codeId": { + "type": "string", + "description": "Code asset reference." + }, + "computeId": { + "type": "string", + "description": "Compute resource ID." + }, + "inputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Input" + }, + "description": "Mapping of input data bindings used in the job." + }, + "outputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Output" + }, + "description": "Mapping of output data bindings used in the job." + }, + "environmentVariables": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Environment variables included in the job." + }, + "resources": { "allOf": [ { - "$ref": "#/components/schemas/BingGroundingSearchToolParameters" + "$ref": "#/components/schemas/JobResourceConfiguration" } ], - "description": "The bing grounding search tool parameters." + "description": "Compute Resource configuration for the job." + }, + "gpuCount": { + "type": "integer", + "format": "int32", + "description": "Number of GPUs requested by the training job." + }, + "distribution": { + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + }, + "limits": { + "allOf": [ + { + "$ref": "#/components/schemas/CommandJobLimits" + } + ], + "description": "Command Job limit." + }, + "queueSettings": { + "allOf": [ + { + "$ref": "#/components/schemas/QueueSettings" + } + ], + "description": "Queue settings for the job." + }, + "userAssignedIdentityId": { + "type": "string", + "description": "user-assigned managed identity" + }, + "status": { + "type": "string", + "description": "Status of the job.", + "readOnly": true } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.Tool" + "$ref": "#/components/schemas/JobProperties" } ], - "description": "The input definition information for a bing grounding search tool as used to configure an agent." + "description": "Properties of a Command Job." }, - "BingGroundingToolCall": { + "CommandJobLimits": { "type": "object", "required": [ - "type", - "call_id", - "arguments", - "status" + "jobLimitsType" ], "properties": { - "type": { + "jobLimitsType": { "type": "string", "enum": [ - "bing_grounding_call" - ] + "Command" + ], + "description": "JobLimit type." }, - "call_id": { + "timeout": { "type": "string", - "description": "The unique ID of the tool call generated by the model." + "format": "duration", + "description": "The max run duration in ISO 8601 format, after which the job will be cancelled. Only supports duration with precision as low as Seconds." + } + }, + "description": "Command Job limit class." + }, + "CompletionMessageToolCallChunk": { + "type": "object", + "required": [ + "id", + "type" + ], + "properties": { + "id": { + "type": "string", + "description": "The Id for the tool call." }, - "arguments": { + "type": { "type": "string", - "description": "A JSON string of the arguments to pass to the tool." + "enum": [ + "function" + ], + "description": "The type of tool call, which is always \"function\"." }, - "status": { + "function": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/FunctionToolCall" } ], - "description": "The status of the tool call." + "description": "Details of the function tool call, if applicable." } }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.OutputItem" - } - ], - "description": "A Bing grounding tool call." + "description": "Tool call details within a message." }, - "BingGroundingToolCallOutput": { + "Connection": { "type": "object", "required": [ + "name", + "id", "type", - "call_id", - "status" + "target", + "isDefault", + "credentials", + "metadata" ], "properties": { - "type": { + "name": { "type": "string", - "enum": [ - "bing_grounding_call_output" - ] + "description": "The friendly name of the connection, provided by the user.", + "readOnly": true }, - "call_id": { + "id": { "type": "string", - "description": "The unique ID of the tool call generated by the model." + "description": "A unique identifier for the connection, generated by the service", + "readOnly": true }, - "output": { + "type": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallOutputContent" + "$ref": "#/components/schemas/ConnectionType" } ], - "description": "The output from the Bing grounding tool call." + "description": "Category of the connection", + "readOnly": true }, - "status": { + "target": { + "type": "string", + "description": "The connection URL to be used for this service", + "readOnly": true + }, + "isDefault": { + "type": "boolean", + "description": "Whether the connection is tagged as the default connection of its type", + "readOnly": true + }, + "credentials": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/BaseCredentials" } ], - "description": "The status of the tool call." + "description": "The credentials used by the connection", + "readOnly": true + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Metadata of the connection", + "readOnly": true } }, - "allOf": [ + "description": "Response from the list and get connections operations" + }, + "ConnectionType": { + "anyOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "type": "string" + }, + { + "type": "string", + "enum": [ + "AzureOpenAI", + "AzureBlob", + "AzureStorageAccount", + "CognitiveSearch", + "CosmosDB", + "ApiKey", + "AppConfig", + "AppInsights", + "CustomKeys", + "RemoteTool_Preview" + ] } ], - "description": "The output of a Bing grounding tool call." + "description": "The Type (or category) of the connection" }, - "BlobReference": { + "ContentFilterResult": { "type": "object", "required": [ - "blobUri", - "storageAccountArmId", - "credential" + "blocked", + "source_type", + "content_filter_results" ], "properties": { - "blobUri": { - "type": "string", - "format": "uri", - "description": "Blob URI path for client to upload data. Example: `https://blob.windows.core.net/Container/Path`" + "blocked": { + "type": "boolean", + "description": "Whether the content was blocked by the content filter." }, - "storageAccountArmId": { + "source_type": { "type": "string", - "description": "ARM ID of the storage account to use." + "description": "The source type of the content filter evaluation (e.g., 'prompt', 'response', 'pre_tool_call', 'post_tool_call')." }, - "credential": { + "content_filter_results": { "allOf": [ { - "$ref": "#/components/schemas/SasCredential" + "$ref": "#/components/schemas/AzureContentFilterResultsForResponses" } ], - "description": "Credential info to access the storage account." + "description": "The content filter results for this evaluation." + }, + "tool_call_id": { + "type": "string", + "description": "The ID of the tool call associated with this content filter result, if applicable." } }, - "description": "Blob reference details." + "description": "A content filter evaluation result for a specific source in the response." }, - "BrowserAutomationPreviewTool": { + "ContinuousEvaluationRuleAction": { "type": "object", "required": [ "type", - "browser_automation_preview" + "evalId" ], "properties": { "type": { "type": "string", "enum": [ - "browser_automation_preview" - ], - "description": "The object type, which is always 'browser_automation_preview'." - }, - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "continuousEvaluation" + ] }, - "description": { + "evalId": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "description": "Eval Id to add continuous evaluation runs to." }, - "browser_automation_preview": { - "allOf": [ - { - "$ref": "#/components/schemas/BrowserAutomationToolParameters" - } - ], - "description": "The Browser Automation Tool parameters." + "maxHourlyRuns": { + "type": "integer", + "format": "int32", + "description": "Maximum number of evaluation runs allowed per hour." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.Tool" + "$ref": "#/components/schemas/EvaluationRuleAction" } ], - "description": "The input definition information for a Browser Automation Tool, as used to configure an Agent." + "description": "Evaluation rule action for continuous evaluation." }, - "BrowserAutomationToolCall": { + "CosmosDBIndex": { "type": "object", "required": [ - "type", - "call_id", - "arguments", - "status" + "type" ], "properties": { "type": { "type": "string", "enum": [ - "browser_automation_preview_call" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "arguments": { - "type": "string", - "description": "A JSON string of the arguments to pass to the tool." - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } + "CosmosDBNoSqlVectorStore" ], - "description": "The status of the tool call." + "description": "Type of index" } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/Index" } ], - "description": "A browser automation tool call." + "description": "CosmosDB Vector Store Index Definition" }, - "BrowserAutomationToolCallOutput": { + "CosmosDBIndexUpdate": { "type": "object", "required": [ - "type", - "call_id", - "status" + "type" ], "properties": { "type": { "type": "string", "enum": [ - "browser_automation_preview_call_output" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "output": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallOutputContent" - } - ], - "description": "The output from the browser automation tool call." - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } + "CosmosDBNoSqlVectorStore" ], - "description": "The status of the tool call." + "description": "Type of index" } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/IndexUpdate" } ], - "description": "The output of a browser automation tool call." + "description": "CosmosDB Vector Store Index Definition" }, - "BrowserAutomationToolConnectionParameters": { + "CreateAgentFromManifestRequest": { "type": "object", "required": [ - "project_connection_id" + "name", + "manifest_id", + "parameter_values" ], "properties": { "name": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "maxLength": 63, + "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" }, "description": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "maxLength": 512, + "description": "A human-readable description of the agent." }, - "project_connection_id": { + "manifest_id": { "type": "string", - "description": "The ID of the project connection to your Azure Playwright resource." + "description": "The manifest ID to import the agent version from." + }, + "parameter_values": { + "type": "object", + "additionalProperties": {}, + "description": "The inputs to the manifest that will result in a fully materialized Agent." } - }, - "description": "Definition of input parameters for the connection used by the Browser Automation Tool." + } }, - "BrowserAutomationToolParameters": { + "CreateAgentRequest": { "type": "object", "required": [ - "connection" + "name", + "definition" ], "properties": { "name": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "maxLength": 63, + "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" }, "description": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "maxLength": 512, + "description": "A human-readable description of the agent." }, - "connection": { + "definition": { "allOf": [ { - "$ref": "#/components/schemas/BrowserAutomationToolConnectionParameters" + "$ref": "#/components/schemas/AgentDefinition" } ], - "description": "The project connection parameters associated with the Browser Automation Tool." + "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } } }, - "description": "Definition of input parameters for the Browser Automation Tool." + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } }, - "CaptureStructuredOutputsTool": { + "CreateAgentVersionFromManifestRequest": { "type": "object", "required": [ - "type", - "outputs" + "manifest_id", + "parameter_values" ], "properties": { - "type": { - "type": "string", - "enum": [ - "capture_structured_outputs" - ], - "description": "The type of the tool. Always `capture_structured_outputs`." + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" }, - "outputs": { - "allOf": [ - { - "$ref": "#/components/schemas/StructuredOutputDefinition" - } - ], - "description": "The structured outputs to capture from the model." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Tool" - } - ], - "description": "A tool for capturing structured outputs" - }, - "ChartCoordinate": { - "type": "object", - "required": [ - "x", - "y", - "size" - ], - "properties": { - "x": { - "type": "integer", - "format": "int32", - "description": "X-axis coordinate." + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the agent." }, - "y": { - "type": "integer", - "format": "int32", - "description": "Y-axis coordinate." + "manifest_id": { + "type": "string", + "description": "The manifest ID to import the agent version from." }, - "size": { - "type": "integer", - "format": "int32", - "description": "Size of the chart element." + "parameter_values": { + "type": "object", + "additionalProperties": {}, + "description": "The inputs to the manifest that will result in a fully materialized Agent." } - }, - "description": "Coordinates for the analysis chart." + } }, - "ChatSummaryMemoryItem": { + "CreateAgentVersionRequest": { "type": "object", "required": [ - "kind" + "definition" ], "properties": { - "kind": { + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" + }, + "description": { "type": "string", - "enum": [ - "chat_summary" + "maxLength": 512, + "description": "A human-readable description of the agent." + }, + "definition": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentDefinition" + } ], - "description": "The kind of the memory item." + "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } } }, - "allOf": [ - { - "$ref": "#/components/schemas/MemoryItem" - } - ], - "description": "A memory item containing a summary extracted from conversations.", "x-ms-foundry-meta": { "conditional_previews": [ - "MemoryStores=V1Preview" + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" ] } }, - "ClusterInsightResult": { + "CreateEvalRequest": { "type": "object", "required": [ - "summary", - "clusters" + "data_source_config", + "testing_criteria" ], "properties": { - "summary": { + "name": { + "type": "string", + "description": "The name of the evaluation." + }, + "metadata": { + "type": "object", "allOf": [ { - "$ref": "#/components/schemas/InsightSummary" + "$ref": "#/components/schemas/OpenAI.Metadata" } ], - "description": "Summary of the insights report." + "nullable": true }, - "clusters": { + "data_source_config": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.CreateEvalCustomDataSourceConfig" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalLogsDataSourceConfig" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalStoredCompletionsDataSourceConfig" + }, + { + "$ref": "#/components/schemas/AzureAIDataSourceConfig" + }, + { + "$ref": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" + } + ], + "description": "The configuration for the data source used for the evaluation runs. Dictates the schema of the data used in the evaluation." + }, + "testing_criteria": { "type": "array", "items": { - "$ref": "#/components/schemas/InsightCluster" + "anyOf": [ + { + "$ref": "#/components/schemas/OpenAI.EvalGraderLabelModel" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderStringCheck" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderTextSimilarity" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderPython" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderScoreModel" + }, + { + "$ref": "#/components/schemas/EvalGraderAzureAIEvaluator" + }, + { + "$ref": "#/components/schemas/EvalGraderInspectAI" + } + ] }, - "description": "List of clusters identified in the insights." + "description": "A list of graders for all eval runs in this group. Graders can reference variables in the data source using double curly braces notation, like `{{item.variable_name}}`. To reference the model's output, use the `sample` namespace (ie, `{{sample.output_text}}`)." }, - "coordinates": { + "properties": { "type": "object", "additionalProperties": { - "$ref": "#/components/schemas/ChartCoordinate" + "type": "string" }, - "description": " Optional mapping of IDs to 2D coordinates used by the UX for visualization.\n\n The map keys are string identifiers (for example, a cluster id or a sample id)\n and the values are the coordinates and visual size for rendering on a 2D chart.\n\n This property is omitted unless the client requests coordinates (for example,\n by passing `includeCoordinates=true` as a query parameter).\n\n Example:\n ```\n {\n \"cluster-1\": { \"x\": 12, \"y\": 34, \"size\": 8 },\n \"sample-123\": { \"x\": 18, \"y\": 22, \"size\": 4 }\n }\n ```\n\n Coordinates are intended only for client-side visualization and do not\n modify the canonical insights results." + "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." } }, - "description": "Insights from the cluster analysis." + "title": "CreateEvalRequest" }, - "ClusterTokenUsage": { + "CreateEvalRunRequest": { "type": "object", "required": [ - "inputTokenUsage", - "outputTokenUsage", - "totalTokenUsage" + "data_source" ], "properties": { - "inputTokenUsage": { - "type": "integer", - "format": "int32", - "description": "input token usage" + "name": { + "type": "string", + "description": "The name of the run." }, - "outputTokenUsage": { - "type": "integer", - "format": "int32", - "description": "output token usage" + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true }, - "totalTokenUsage": { - "type": "integer", - "format": "int32", - "description": "total token usage" + "data_source": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" + }, + { + "$ref": "#/components/schemas/EvalRunDataSource" + } + ], + "description": "Details about the run's data source." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." + } + }, + "title": "CreateEvalRunRequest" + }, + "CredentialType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "ApiKey", + "AAD", + "SAS", + "CustomKeys", + "None", + "AgenticIdentityToken_Preview" + ] } - }, - "description": "Token usage for cluster analysis" + ], + "description": "The credential type used by the connection" }, - "CodeBasedEvaluatorDefinition": { + "CronTrigger": { "type": "object", "required": [ - "type" + "type", + "expression" ], "properties": { "type": { "type": "string", "enum": [ - "code" + "Cron" ] }, - "code_text": { + "expression": { "type": "string", - "description": "Inline code text for the evaluator" + "description": "Cron expression that defines the schedule frequency." }, - "entry_point": { + "timeZone": { "type": "string", - "description": "The entry point Python file name for the uploaded evaluator code (e.g. 'answer_length_evaluator.py')" + "description": "Time zone for the cron schedule.", + "default": "UTC" }, - "image_tag": { + "startTime": { "type": "string", - "description": "The container image tag to use for evaluator code execution" + "description": "Start time for the cron schedule in ISO 8601 format." }, - "blob_uri": { + "endTime": { "type": "string", - "description": "The blob URI for the evaluator storage" + "description": "End time for the cron schedule in ISO 8601 format." } }, "allOf": [ { - "$ref": "#/components/schemas/EvaluatorDefinition" + "$ref": "#/components/schemas/Trigger" } ], - "description": "Code-based evaluator definition using python code" + "description": "Cron based trigger." }, - "CompletionMessageToolCallChunk": { + "CustomCredential": { "type": "object", "required": [ - "id", "type" ], "properties": { - "id": { + "type": { "type": "string", - "description": "The Id for the tool call." - }, + "enum": [ + "CustomKeys" + ], + "description": "The credential type", + "readOnly": true + } + }, + "additionalProperties": { + "type": "string" + }, + "allOf": [ + { + "$ref": "#/components/schemas/BaseCredentials" + } + ], + "description": "Custom credential definition" + }, + "DailyRecurrenceSchedule": { + "type": "object", + "required": [ + "type", + "hours" + ], + "properties": { "type": { "type": "string", "enum": [ - "function" + "Daily" ], - "description": "The type of tool call, which is always \"function\"." + "description": "Daily recurrence type." }, - "function": { - "allOf": [ - { - "$ref": "#/components/schemas/FunctionToolCall" - } - ], - "description": "Details of the function tool call, if applicable." + "hours": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "description": "Hours for the recurrence schedule." } }, - "description": "Tool call details within a message." + "allOf": [ + { + "$ref": "#/components/schemas/RecurrenceSchedule" + } + ], + "description": "Daily recurrence schedule." }, - "Connection": { + "DataSourceConfig": { "type": "object", "required": [ - "name", - "id", "type", - "target", - "isDefault", - "credentials", - "metadata" + "schema" ], "properties": { - "name": { + "type": { "type": "string", - "description": "The friendly name of the connection, provided by the user.", - "readOnly": true + "description": "The data source type discriminator." }, - "id": { + "schema": { + "type": "object", + "additionalProperties": {}, + "description": "The overall object JSON schema for the run data source items." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": {} + }, + "description": "Base class for run data sources with discriminator support." + }, + "DatasetType": { + "anyOf": [ + { + "type": "string" + }, + { "type": "string", - "description": "A unique identifier for the connection, generated by the service", - "readOnly": true + "enum": [ + "uri_file", + "uri_folder" + ] + } + ], + "description": "Enum to determine the type of data." + }, + "DatasetVersion": { + "type": "object", + "required": [ + "dataUri", + "type", + "name", + "version" + ], + "properties": { + "dataUri": { + "type": "string", + "minLength": 1, + "pattern": "[a-zA-Z0-9_]", + "description": "URI of the data ([example](https://go.microsoft.com/fwlink/?linkid=2202330))" }, "type": { "allOf": [ { - "$ref": "#/components/schemas/ConnectionType" + "$ref": "#/components/schemas/DatasetType" } ], - "description": "Category of the connection", + "description": "Dataset type" + }, + "isReference": { + "type": "boolean", + "description": "Indicates if the dataset holds a reference to the storage, or the dataset manages storage itself. If true, the underlying data will not be deleted when the dataset version is deleted", "readOnly": true }, - "target": { + "connectionName": { "type": "string", - "description": "The connection URL to be used for this service", + "description": "The Azure Storage Account connection name. Required if startPendingUploadVersion was not called before creating the Dataset" + }, + "id": { + "type": "string", + "description": "Asset ID, a unique identifier for the asset", "readOnly": true }, - "isDefault": { - "type": "boolean", - "description": "Whether the connection is tagged as the default connection of its type", + "name": { + "type": "string", + "description": "The name of the resource", "readOnly": true }, - "credentials": { + "version": { + "type": "string", + "description": "The version of the resource", + "readOnly": true + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "uri_file": "#/components/schemas/FileDatasetVersion", + "uri_folder": "#/components/schemas/FolderDatasetVersion" + } + }, + "description": "DatasetVersion Definition" + }, + "DatasetVersionUpdate": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { "allOf": [ { - "$ref": "#/components/schemas/BaseCredentials" + "$ref": "#/components/schemas/DatasetType" } ], - "description": "The credentials used by the connection", - "readOnly": true + "description": "Dataset type" }, - "metadata": { + "description": { + "type": "string", + "description": "The asset description text." + }, + "tags": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Metadata of the connection", - "readOnly": true + "description": "Tag dictionary. Tags can be added, removed, and updated." } }, - "description": "Response from the list and get connections operations" + "discriminator": { + "propertyName": "type", + "mapping": { + "uri_file": "#/components/schemas/FileDatasetVersionUpdate", + "uri_folder": "#/components/schemas/FolderDatasetVersionUpdate" + } + }, + "description": "DatasetVersion Definition" }, - "ConnectionType": { + "DayOfWeek": { "anyOf": [ { "type": "string" @@ -11633,304 +18442,349 @@ { "type": "string", "enum": [ - "AzureOpenAI", - "AzureBlob", - "AzureStorageAccount", - "CognitiveSearch", - "CosmosDB", - "ApiKey", - "AppConfig", - "AppInsights", - "CustomKeys", - "RemoteTool_Preview" + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" ] } ], - "description": "The Type (or category) of the connection" + "description": "Days of the week for recurrence schedule." }, - "ContentFilterResult": { + "DeleteAgentResponse": { "type": "object", "required": [ - "blocked", - "source_type", - "content_filter_results" + "object", + "name", + "deleted" ], "properties": { - "blocked": { - "type": "boolean", - "description": "Whether the content was blocked by the content filter." - }, - "source_type": { + "object": { "type": "string", - "description": "The source type of the content filter evaluation (e.g., 'prompt', 'response', 'pre_tool_call', 'post_tool_call')." - }, - "content_filter_results": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterResultsForResponses" - } + "enum": [ + "agent.deleted" ], - "description": "The content filter results for this evaluation." + "description": "The object type. Always 'agent.deleted'." }, - "tool_call_id": { + "name": { "type": "string", - "description": "The ID of the tool call associated with this content filter result, if applicable." + "description": "The name of the agent." + }, + "deleted": { + "type": "boolean", + "description": "Whether the agent was successfully deleted." } }, - "description": "A content filter evaluation result for a specific source in the response." + "description": "A deleted agent Object" }, - "ContinuousEvaluationRuleAction": { + "DeleteAgentVersionResponse": { "type": "object", "required": [ - "type", - "evalId" + "object", + "name", + "version", + "deleted" ], "properties": { - "type": { + "object": { "type": "string", "enum": [ - "continuousEvaluation" - ] + "agent.version.deleted" + ], + "description": "The object type. Always 'agent.version.deleted'." }, - "evalId": { + "name": { "type": "string", - "description": "Eval Id to add continuous evaluation runs to." + "description": "The name of the agent." }, - "maxHourlyRuns": { - "type": "integer", - "format": "int32", - "description": "Maximum number of evaluation runs allowed per hour." + "version": { + "type": "string", + "description": "The version identifier of the agent." + }, + "deleted": { + "type": "boolean", + "description": "Whether the agent was successfully deleted." } }, - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleAction" - } - ], - "description": "Evaluation rule action for continuous evaluation." + "description": "A deleted agent version Object" }, - "CosmosDBIndex": { + "DeleteEvalResponse": { "type": "object", "required": [ - "type" + "object", + "eval_id", + "deleted" ], "properties": { - "type": { + "object": { "type": "string", "enum": [ - "CosmosDBNoSqlVectorStore" + "eval.deleted" ], - "description": "Type of index" + "description": "The object type. Always 'eval.deleted'." + }, + "eval_id": { + "type": "string", + "description": "id of the eval." + }, + "deleted": { + "type": "boolean", + "description": "Whether the eval was successfully deleted." } }, - "allOf": [ - { - "$ref": "#/components/schemas/Index" - } - ], - "description": "CosmosDB Vector Store Index Definition" + "description": "A deleted evaluation Object" }, - "CosmosDBIndexUpdate": { + "DeleteEvalRunResponse": { "type": "object", - "required": [ - "type" - ], "properties": { - "type": { + "object": { "type": "string", "enum": [ - "CosmosDBNoSqlVectorStore" + "eval.deleted" ], - "description": "Type of index" + "description": "The object type. Always 'eval.deleted'." + }, + "run_id": { + "type": "string", + "description": "id of the eval." + }, + "deleted": { + "type": "boolean", + "description": "Whether the eval was successfully deleted." } }, - "allOf": [ - { - "$ref": "#/components/schemas/IndexUpdate" - } - ], - "description": "CosmosDB Vector Store Index Definition" + "description": "A deleted evaluation run Object." }, - "CreateAgentFromManifestRequest": { + "DeleteMemoryStoreResponse": { "type": "object", "required": [ + "object", "name", - "manifest_id", - "parameter_values" + "deleted" ], "properties": { - "name": { + "object": { "type": "string", - "maxLength": 63, - "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." + "enum": [ + "memory_store.deleted" + ], + "description": "The object type. Always 'memory_store.deleted'." }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" + "name": { + "type": "string", + "description": "The name of the memory store." }, - "description": { + "deleted": { + "type": "boolean", + "description": "Whether the memory store was successfully deleted." + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } + }, + "DeleteResponseResult": { + "type": "object", + "required": [ + "id", + "object", + "deleted" + ], + "properties": { + "id": { "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." + "description": "The operation ID." }, - "manifest_id": { + "object": { "type": "string", - "description": "The manifest ID to import the agent version from." + "enum": [ + "response" + ], + "description": "Always return 'response'." }, - "parameter_values": { - "type": "object", - "additionalProperties": {}, - "description": "The inputs to the manifest that will result in a fully materialized Agent." + "deleted": { + "type": "boolean", + "enum": [ + true + ], + "description": "Always return true" } - } + }, + "description": "The result of a delete response operation." }, - "CreateAgentRequest": { + "DeleteSkillResponse": { "type": "object", "required": [ + "object", "name", - "definition" + "deleted" ], "properties": { + "object": { + "allOf": [ + { + "$ref": "#/components/schemas/SkillObjectType" + } + ], + "description": "The object type. Always 'skill.deleted'.", + "default": "skill.deleted" + }, "name": { "type": "string", - "maxLength": 63, - "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." + "description": "The unique name of the skill." }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" + "deleted": { + "type": "boolean", + "description": "Whether the skill was successfully deleted." + } + }, + "description": "A deleted skill Object" + }, + "DeleteToolsetResponse": { + "type": "object", + "required": [ + "object", + "name", + "deleted" + ], + "properties": { + "object": { + "type": "string", + "enum": [ + "toolset.deleted" + ], + "description": "The object type. Always 'toolset.deleted'." }, - "description": { + "name": { "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." + "description": "The name of the toolset." }, - "definition": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentDefinition" - } - ], - "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", - "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" - ] - } + "deleted": { + "type": "boolean", + "description": "Whether the toolset was successfully deleted." } }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" - ] - } + "description": "Response returned when a toolset is deleted." }, - "CreateAgentVersionFromManifestRequest": { + "Deployment": { "type": "object", "required": [ - "manifest_id", - "parameter_values" + "type", + "name" ], "properties": { - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/DeploymentType" + } + ], + "description": "The type of the deployment" }, - "description": { + "name": { "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." + "description": "Name of the deployment", + "readOnly": true + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "ModelDeployment": "#/components/schemas/ModelDeployment" + } + }, + "description": "Model Deployment Definition" + }, + "DeploymentType": { + "anyOf": [ + { + "type": "string" }, - "manifest_id": { + { "type": "string", - "description": "The manifest ID to import the agent version from." - }, - "parameter_values": { - "type": "object", - "additionalProperties": {}, - "description": "The inputs to the manifest that will result in a fully materialized Agent." + "enum": [ + "ModelDeployment" + ] } - } + ] }, - "CreateAgentVersionRequest": { + "DistributionConfiguration": { "type": "object", "required": [ - "definition" + "distributionType" ], "properties": { - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" - }, - "description": { + "distributionType": { "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." - }, - "definition": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentDefinition" - } + "description": "Specifies the type of distribution framework." + } + }, + "discriminator": { + "propertyName": "distributionType", + "mapping": { + "PyTorch": "#/components/schemas/PyTorchDistribution", + "Mpi": "#/components/schemas/MpiDistribution", + "TensorFlow": "#/components/schemas/TensorFlowDistribution" + } + }, + "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + }, + "EntraIDCredentials": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AAD" ], - "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", - "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" - ] - } + "description": "The credential type", + "readOnly": true } }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" - ] - } + "allOf": [ + { + "$ref": "#/components/schemas/BaseCredentials" + } + ], + "description": "Entra ID credential definition" }, - "CreateEvalRequest": { + "Eval": { "type": "object", "required": [ + "object", + "id", + "name", "data_source_config", - "testing_criteria" + "testing_criteria", + "created_at", + "metadata" ], "properties": { + "object": { + "type": "string", + "enum": [ + "eval" + ], + "description": "The object type.", + "x-stainless-const": true, + "default": "eval" + }, + "id": { + "type": "string", + "description": "Unique identifier for the evaluation." + }, "name": { "type": "string", "description": "The name of the evaluation." }, - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, "data_source_config": { "oneOf": [ { @@ -11949,7 +18803,7 @@ "$ref": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" } ], - "description": "The configuration for the data source used for the evaluation runs. Dictates the schema of the data used in the evaluation." + "description": "Configuration of data sources used in runs of the evaluation." }, "testing_criteria": { "type": "array", @@ -11978,27 +18832,12 @@ } ] }, - "description": "A list of graders for all eval runs in this group. Graders can reference variables in the data source using double curly braces notation, like `{{item.variable_name}}`. To reference the model's output, use the `sample` namespace (ie, `{{sample.output_text}}`)." + "description": "A list of testing criteria." }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." - } - }, - "title": "CreateEvalRequest" - }, - "CreateEvalRunRequest": { - "type": "object", - "required": [ - "data_source" - ], - "properties": { - "name": { - "type": "string", - "description": "The name of the run." + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "The Unix timestamp (in seconds) for when the eval was created." }, "metadata": { "type": "object", @@ -12009,22 +18848,17 @@ ], "nullable": true }, - "data_source": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" - }, + "modified_at": { + "allOf": [ { - "$ref": "#/components/schemas/EvalRunDataSource" + "$ref": "#/components/schemas/integer" } ], - "description": "Details about the run's data source." + "description": "Unix timestamp (in seconds) when the evaluation run was last modified." + }, + "created_by": { + "type": "string", + "description": "the name of the person who created the run." }, "properties": { "type": "object", @@ -12034,1811 +18868,1876 @@ "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." } }, - "title": "CreateEvalRunRequest" - }, - "CredentialType": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "ApiKey", - "AAD", - "SAS", - "CustomKeys", - "None", - "AgenticIdentityToken_Preview" - ] - } - ], - "description": "The credential type used by the connection" + "description": "An Eval object with a data source config and testing criteria.\nAn Eval represents a task to be done for your LLM integration.\nLike:\n- Improve the quality of my chatbot\n- See how well my chatbot handles customer support\n- Check if o4-mini is better at my usecase than gpt-4o", + "title": "Eval", + "x-oaiMeta": { + "name": "The eval object", + "group": "evals", + "example": "{\n \"object\": \"eval\",\n \"id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"data_source_config\": {\n \"type\": \"custom\",\n \"item_schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\"type\": \"string\"},\n },\n \"required\": [\"label\"]\n },\n \"include_sample_schema\": true\n },\n \"testing_criteria\": [\n {\n \"name\": \"My string check grader\",\n \"type\": \"string_check\",\n \"input\": \"{{sample.output_text}}\",\n \"reference\": \"{{item.label}}\",\n \"operation\": \"eq\",\n }\n ],\n \"name\": \"External Data Eval\",\n \"created_at\": 1739314509,\n \"metadata\": {\n \"test\": \"synthetics\",\n }\n}\n" + } }, - "CronTrigger": { + "EvalCsvFileIdSource": { "type": "object", "required": [ "type", - "expression" + "id" ], "properties": { "type": { "type": "string", "enum": [ - "Cron" - ] - }, - "expression": { - "type": "string", - "description": "Cron expression that defines the schedule frequency." - }, - "timeZone": { - "type": "string", - "description": "Time zone for the cron schedule.", - "default": "UTC" - }, - "startTime": { - "type": "string", - "description": "Start time for the cron schedule in ISO 8601 format." + "file_id" + ], + "description": "The type of source, always `file_id`." }, - "endTime": { + "id": { "type": "string", - "description": "End time for the cron schedule in ISO 8601 format." + "description": "The identifier of the uploaded CSV file." } }, - "allOf": [ - { - "$ref": "#/components/schemas/Trigger" - } - ], - "description": "Cron based trigger." + "description": "Represents a reference to an uploaded CSV file used as a source for evaluation data." }, - "CustomCredential": { + "EvalCsvRunDataSource": { "type": "object", "required": [ - "type" + "type", + "source" ], "properties": { "type": { "type": "string", "enum": [ - "CustomKeys" + "csv" ], - "description": "The credential type", - "readOnly": true + "description": "The type of data source, always `csv`." + }, + "source": { + "allOf": [ + { + "$ref": "#/components/schemas/EvalCsvFileIdSource" + } + ], + "description": "The source of the CSV data, either inline content or a file reference." } }, - "additionalProperties": { - "type": "string" - }, "allOf": [ { - "$ref": "#/components/schemas/BaseCredentials" + "$ref": "#/components/schemas/EvalRunDataSource" } ], - "description": "Custom credential definition" + "description": "Represents a CSV data source for evaluation runs." }, - "DailyRecurrenceSchedule": { + "EvalGraderAzureAIEvaluator": { "type": "object", "required": [ "type", - "hours" + "name", + "evaluator_name" ], "properties": { "type": { "type": "string", "enum": [ - "Daily" + "azure_ai_evaluator" ], - "description": "Daily recurrence type." + "description": "The object type, which is always `azure_ai_evaluator`." }, - "hours": { - "type": "array", - "items": { - "type": "integer", - "format": "int32" + "name": { + "type": "string", + "description": "The name of the grader." + }, + "evaluator_name": { + "type": "string", + "description": "The name of the evaluator." + }, + "evaluator_version": { + "type": "string", + "description": "The version of the evaluator. Latest version if not specified." + }, + "initialization_parameters": { + "type": "object", + "additionalProperties": {}, + "description": "The initialization parameters for the evaluation. Must support structured outputs." + }, + "data_mapping": { + "type": "object", + "additionalProperties": { + "type": "string" }, - "description": "Hours for the recurrence schedule." + "description": "The model to use for the evaluation. Must support structured outputs." } }, - "allOf": [ - { - "$ref": "#/components/schemas/RecurrenceSchedule" - } - ], - "description": "Daily recurrence schedule." + "title": "AzureAIEvaluatorGrader" }, - "DataSourceConfig": { + "EvalGraderInspectAI": { "type": "object", "required": [ "type", - "schema" + "name", + "task_name" ], "properties": { "type": { "type": "string", - "description": "The data source type discriminator." + "enum": [ + "inspect_ai" + ], + "description": "The object type, which is always `inspect_ai`." }, - "schema": { - "type": "object", - "additionalProperties": {}, - "description": "The overall object JSON schema for the run data source items." + "name": { + "type": "string", + "description": "The display name of the benchmark." + }, + "task_name": { + "type": "string", + "description": "The inspect_ai task module path (e.g., `inspect_evals/gpqa_diamond`)." } }, - "discriminator": { - "propertyName": "type", - "mapping": {} - }, - "description": "Base class for run data sources with discriminator support." + "description": "Grader inspect_ai definition for inspect_ai benchmark evaluators." }, - "DatasetType": { - "anyOf": [ - { - "type": "string" + "EvalResult": { + "type": "object", + "required": [ + "name", + "type", + "score", + "passed" + ], + "properties": { + "name": { + "type": "string", + "description": "name of the check" }, - { + "type": { "type": "string", - "enum": [ - "uri_file", - "uri_folder" - ] + "description": "type of the check" + }, + "score": { + "type": "number", + "format": "float", + "description": "score" + }, + "passed": { + "type": "boolean", + "description": "indicates if the check passed or failed" } - ], - "description": "Enum to determine the type of data." + }, + "description": "Result of the evaluation." }, - "DatasetVersion": { + "EvalRun": { "type": "object", "required": [ - "dataUri", - "type", + "object", + "id", + "eval_id", + "status", + "model", "name", - "version" + "created_at", + "report_url", + "result_counts", + "per_model_usage", + "per_testing_criteria_results", + "data_source", + "metadata", + "error" ], "properties": { - "dataUri": { + "object": { "type": "string", - "minLength": 1, - "pattern": "[a-zA-Z0-9_]", - "description": "URI of the data ([example](https://go.microsoft.com/fwlink/?linkid=2202330))" - }, - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/DatasetType" - } + "enum": [ + "eval.run" ], - "description": "Dataset type" + "description": "The type of the object. Always \"eval.run\".", + "x-stainless-const": true, + "default": "eval.run" }, - "isReference": { - "type": "boolean", - "description": "Indicates if the dataset holds a reference to the storage, or the dataset manages storage itself. If true, the underlying data will not be deleted when the dataset version is deleted", - "readOnly": true + "id": { + "type": "string", + "description": "Unique identifier for the evaluation run." }, - "connectionName": { + "eval_id": { "type": "string", - "description": "The Azure Storage Account connection name. Required if startPendingUploadVersion was not called before creating the Dataset" + "description": "The identifier of the associated evaluation." }, - "id": { + "status": { "type": "string", - "description": "Asset ID, a unique identifier for the asset", - "readOnly": true + "description": "The status of the evaluation run." + }, + "model": { + "type": "string", + "description": "The model that is evaluated, if applicable." }, "name": { "type": "string", - "description": "The name of the resource", - "readOnly": true + "description": "The name of the evaluation run." }, - "version": { + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "Unix timestamp (in seconds) when the evaluation run was created." + }, + "report_url": { "type": "string", - "description": "The version of the resource", - "readOnly": true - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "uri_file": "#/components/schemas/FileDatasetVersion", - "uri_folder": "#/components/schemas/FolderDatasetVersion" - } - }, - "description": "DatasetVersion Definition" - }, - "DatasetVersionUpdate": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { + "format": "uri", + "description": "The URL to the rendered evaluation run report on the UI dashboard." + }, + "result_counts": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.EvalRunResultCounts" + } + ], + "description": "Counters summarizing the outcomes of the evaluation run." + }, + "per_model_usage": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.EvalRunPerModelUsage" + }, + "description": "Usage statistics for each model during the evaluation run." + }, + "per_testing_criteria_results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.EvalRunPerTestingCriteriaResults" + }, + "description": "Results per testing criteria applied during the evaluation run." + }, + "data_source": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" + }, + { + "$ref": "#/components/schemas/EvalRunDataSource" + } + ], + "description": "Information about the run's data source." + }, + "metadata": { + "type": "object", "allOf": [ { - "$ref": "#/components/schemas/DatasetType" + "$ref": "#/components/schemas/OpenAI.Metadata" } ], - "description": "Dataset type" + "nullable": true }, - "description": { + "error": { + "$ref": "#/components/schemas/OpenAI.EvalApiError" + }, + "modified_at": { + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "description": "Unix timestamp (in seconds) when the evaluation run was last modified." + }, + "created_by": { "type": "string", - "description": "The asset description text." + "description": "the name of the person who created the run." }, - "tags": { + "properties": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." + } + }, + "description": "A schema representing an evaluation run.", + "title": "EvalRun", + "x-oaiMeta": { + "name": "The eval run object", + "group": "evals", + "example": "{\n \"object\": \"eval.run\",\n \"id\": \"evalrun_67e57965b480819094274e3a32235e4c\",\n \"eval_id\": \"eval_67e579652b548190aaa83ada4b125f47\",\n \"report_url\": \"https://platform.openai.com/evaluations/eval_67e579652b548190aaa83ada4b125f47?run_id=evalrun_67e57965b480819094274e3a32235e4c\",\n \"status\": \"queued\",\n \"model\": \"gpt-4o-mini\",\n \"name\": \"gpt-4o-mini\",\n \"created_at\": 1743092069,\n \"result_counts\": {\n \"total\": 0,\n \"errored\": 0,\n \"failed\": 0,\n \"passed\": 0\n },\n \"per_model_usage\": null,\n \"per_testing_criteria_results\": null,\n \"data_source\": {\n \"type\": \"completions\",\n \"source\": {\n \"type\": \"file_content\",\n \"content\": [\n {\n \"item\": {\n \"input\": \"Tech Company Launches Advanced Artificial Intelligence Platform\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Central Bank Increases Interest Rates Amid Inflation Concerns\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Summit Addresses Climate Change Strategies\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Major Retailer Reports Record-Breaking Holiday Sales\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"National Team Qualifies for World Championship Finals\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Stock Markets Rally After Positive Economic Data Released\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Manufacturer Announces Merger with Competitor\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Breakthrough in Renewable Energy Technology Unveiled\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"World Leaders Sign Historic Climate Agreement\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Professional Athlete Sets New Record in Championship Event\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Financial Institutions Adapt to New Regulatory Requirements\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Tech Conference Showcases Advances in Artificial Intelligence\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Markets Respond to Oil Price Fluctuations\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Cooperation Strengthened Through New Treaty\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Sports League Announces Revised Schedule for Upcoming Season\",\n \"ground_truth\": \"Sports\"\n }\n }\n ]\n },\n \"input_messages\": {\n \"type\": \"template\",\n \"template\": [\n {\n \"type\": \"message\",\n \"role\": \"developer\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"Categorize a given news headline into one of the following topics: Technology, Markets, World, Business, or Sports.\n\n# Steps\n\n1. Analyze the content of the news headline to understand its primary focus.\n2. Extract the subject matter, identifying any key indicators or keywords.\n3. Use the identified indicators to determine the most suitable category out of the five options: Technology, Markets, World, Business, or Sports.\n4. Ensure only one category is selected per headline.\n\n# Output Format\n\nRespond with the chosen category as a single word. For instance: \"Technology\", \"Markets\", \"World\", \"Business\", or \"Sports\".\n\n# Examples\n\n**Input**: \"Apple Unveils New iPhone Model, Featuring Advanced AI Features\"\n**Output**: \"Technology\"\n\n**Input**: \"Global Stocks Mixed as Investors Await Central Bank Decisions\"\n**Output**: \"Markets\"\n\n**Input**: \"War in Ukraine: Latest Updates on Negotiation Status\"\n**Output**: \"World\"\n\n**Input**: \"Microsoft in Talks to Acquire Gaming Company for $2 Billion\"\n**Output**: \"Business\"\n\n**Input**: \"Manchester United Secures Win in Premier League Football Match\"\n**Output**: \"Sports\"\n\n# Notes\n\n- If the headline appears to fit into more than one category, choose the most dominant theme.\n- Keywords or phrases such as \"stocks\", \"company acquisition\", \"match\", or technological brands can be good indicators for classification.\n\"\n }\n },\n {\n \"type\": \"message\",\n \"role\": \"user\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"{{item.input}}\"\n }\n }\n ]\n },\n \"model\": \"gpt-4o-mini\",\n \"sampling_params\": {\n \"seed\": 42,\n \"temperature\": 1.0,\n \"top_p\": 1.0,\n \"max_completions_tokens\": 2048\n }\n },\n \"error\": null,\n \"metadata\": {}\n}\n" + } + }, + "EvalRunDataSource": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "description": "The data source type discriminator." } }, "discriminator": { "propertyName": "type", "mapping": { - "uri_file": "#/components/schemas/FileDatasetVersionUpdate", - "uri_folder": "#/components/schemas/FolderDatasetVersionUpdate" + "azure_ai_traces_preview": "#/components/schemas/TracesPreviewEvalRunDataSource", + "azure_ai_synthetic_data_gen_preview": "#/components/schemas/SyntheticDataGenerationPreviewEvalRunDataSource", + "azure_ai_responses": "#/components/schemas/AzureAIResponsesEvalRunDataSource", + "azure_ai_target_completions": "#/components/schemas/TargetCompletionEvalRunDataSource", + "csv": "#/components/schemas/EvalCsvRunDataSource", + "azure_ai_red_team": "#/components/schemas/RedTeamEvalRunDataSource", + "azure_ai_benchmark_preview": "#/components/schemas/AzureAIBenchmarkPreviewEvalRunDataSource" } }, - "description": "DatasetVersion Definition" - }, - "DayOfWeek": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ] - } - ], - "description": "Days of the week for recurrence schedule." + "description": "Base class for run data sources with discriminator support." }, - "DeleteAgentResponse": { + "EvalRunOutputItem": { "type": "object", "required": [ "object", - "name", - "deleted" + "id", + "run_id", + "eval_id", + "created_at", + "status", + "datasource_item_id", + "datasource_item", + "results", + "sample" ], "properties": { "object": { "type": "string", "enum": [ - "agent.deleted" + "eval.run.output_item" ], - "description": "The object type. Always 'agent.deleted'." + "description": "The type of the object. Always \"eval.run.output_item\".", + "x-stainless-const": true, + "default": "eval.run.output_item" }, - "name": { + "id": { "type": "string", - "description": "The name of the agent." + "description": "Unique identifier for the evaluation run output item." }, - "deleted": { - "type": "boolean", - "description": "Whether the agent was successfully deleted." + "run_id": { + "type": "string", + "description": "The identifier of the evaluation run associated with this output item." + }, + "eval_id": { + "type": "string", + "description": "The identifier of the evaluation group." + }, + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "Unix timestamp (in seconds) when the evaluation run was created." + }, + "status": { + "type": "string", + "description": "The status of the evaluation run." + }, + "datasource_item_id": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "description": "The identifier for the data source item." + }, + "datasource_item": { + "type": "object", + "additionalProperties": {}, + "description": "Details of the input data source item." + }, + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRunOutputItemResult" + }, + "description": "A list of grader results for this output item." + }, + "sample": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.EvalRunOutputItemSample" + } + ], + "description": "A sample containing the input and output of the evaluation run." } }, - "description": "A deleted agent Object" + "description": "A schema representing an evaluation run output item.", + "title": "EvalRunOutputItem", + "x-oaiMeta": { + "name": "The eval run output item object", + "group": "evals", + "example": "{\n \"object\": \"eval.run.output_item\",\n \"id\": \"outputitem_67abd55eb6548190bb580745d5644a33\",\n \"run_id\": \"evalrun_67abd54d60ec8190832b46859da808f7\",\n \"eval_id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"created_at\": 1739314509,\n \"status\": \"pass\",\n \"datasource_item_id\": 137,\n \"datasource_item\": {\n \"teacher\": \"To grade essays, I only check for style, content, and grammar.\",\n \"student\": \"I am a student who is trying to write the best essay.\"\n },\n \"results\": [\n {\n \"name\": \"String Check Grader\",\n \"type\": \"string-check-grader\",\n \"score\": 1.0,\n \"passed\": true,\n }\n ],\n \"sample\": {\n \"input\": [\n {\n \"role\": \"system\",\n \"content\": \"You are an evaluator bot...\"\n },\n {\n \"role\": \"user\",\n \"content\": \"You are assessing...\"\n }\n ],\n \"output\": [\n {\n \"role\": \"assistant\",\n \"content\": \"The rubric is not clear nor concise.\"\n }\n ],\n \"finish_reason\": \"stop\",\n \"model\": \"gpt-4o-2024-08-06\",\n \"usage\": {\n \"total_tokens\": 521,\n \"completion_tokens\": 2,\n \"prompt_tokens\": 519,\n \"cached_tokens\": 0\n },\n \"error\": null,\n \"temperature\": 1.0,\n \"max_completion_tokens\": 2048,\n \"top_p\": 1.0,\n \"seed\": 42\n }\n}\n" + } }, - "DeleteAgentVersionResponse": { + "EvalRunOutputItemResult": { "type": "object", "required": [ - "object", "name", - "version", - "deleted" + "score", + "passed" ], "properties": { - "object": { + "name": { "type": "string", - "enum": [ - "agent.version.deleted" + "description": "The name of the grader." + }, + "type": { + "type": "string", + "description": "The grader type (for example, \"string-check-grader\")." + }, + "score": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } ], - "description": "The object type. Always 'agent.version.deleted'." + "description": "The numeric score produced by the grader." }, - "name": { + "passed": { + "type": "boolean", + "description": "Whether the grader considered the output a pass." + }, + "sample": { + "type": "object", + "additionalProperties": {}, + "nullable": true, + "description": "Optional sample or intermediate data produced by the grader." + }, + "metric": { "type": "string", - "description": "The name of the agent." + "description": "The name of the metric (e.g., \"fluency\", \"f1_score\")." }, - "version": { + "label": { "type": "string", - "description": "The version identifier of the agent." + "description": "The label associated with the test criteria metric (e.g., \"pass\", \"fail\", \"good\", \"bad\")." }, - "deleted": { - "type": "boolean", - "description": "Whether the agent was successfully deleted." + "threshold": { + "type": "number", + "format": "float", + "description": "The threshold used to determine pass/fail for this test criteria, if it is numerical." + }, + "reason": { + "type": "string", + "description": "The reason for the test criteria metric." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional details about the test criteria metric." } }, - "description": "A deleted agent version Object" + "additionalProperties": {}, + "description": "A single grader result for an evaluation run output item.", + "title": "EvalRunOutputItemResult" }, - "DeleteEvalResponse": { + "EvalRunOutputItemSampleInput": { "type": "object", "required": [ - "object", - "eval_id", - "deleted" + "role", + "content", + "tool_calls" ], "properties": { - "object": { - "type": "string", - "enum": [ - "eval.deleted" - ], - "description": "The object type. Always 'eval.deleted'." + "role": { + "type": "string" }, - "eval_id": { - "type": "string", - "description": "id of the eval." + "content": { + "type": "string" }, - "deleted": { - "type": "boolean", - "description": "Whether the eval was successfully deleted." + "tool_calls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CompletionMessageToolCallChunk" + }, + "description": "Tool calls made within the message, if any." } }, - "description": "A deleted evaluation Object" + "description": "A message in the evaluation run." }, - "DeleteEvalRunResponse": { + "EvalRunOutputItemSampleOutput": { "type": "object", + "required": [ + "tool_calls" + ], "properties": { - "object": { - "type": "string", - "enum": [ - "eval.deleted" - ], - "description": "The object type. Always 'eval.deleted'." + "role": { + "type": "string" }, - "run_id": { - "type": "string", - "description": "id of the eval." + "content": { + "type": "string" }, - "deleted": { - "type": "boolean", - "description": "Whether the eval was successfully deleted." + "tool_calls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CompletionMessageToolCallChunk" + }, + "description": "Tool calls made within the message, if any." } }, - "description": "A deleted evaluation run Object." + "description": "A message in the evaluation run." }, - "DeleteMemoryStoreResponse": { + "EvalRunResultCompareItem": { "type": "object", "required": [ - "object", - "name", - "deleted" + "treatmentRunId", + "treatmentRunSummary", + "deltaEstimate", + "pValue", + "treatmentEffect" ], "properties": { - "object": { + "treatmentRunId": { "type": "string", - "enum": [ - "memory_store.deleted" + "description": "The treatment run ID." + }, + "treatmentRunSummary": { + "allOf": [ + { + "$ref": "#/components/schemas/EvalRunResultSummary" + } ], - "description": "The object type. Always 'memory_store.deleted'." + "description": "Summary statistics of the treatment run." }, - "name": { - "type": "string", - "description": "The name of the memory store." + "deltaEstimate": { + "type": "number", + "format": "float", + "description": "Estimated difference between treatment and baseline." }, - "deleted": { - "type": "boolean", - "description": "Whether the memory store was successfully deleted." + "pValue": { + "type": "number", + "format": "float", + "description": "P-value for the treatment effect." + }, + "treatmentEffect": { + "allOf": [ + { + "$ref": "#/components/schemas/TreatmentEffectType" + } + ], + "description": "Type of treatment effect." } }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] - } + "description": "Metric comparison for a treatment against the baseline." }, - "DeleteResponseResult": { + "EvalRunResultComparison": { "type": "object", "required": [ - "id", - "object", - "deleted" + "testingCriteria", + "metric", + "evaluator", + "baselineRunSummary", + "compareItems" ], "properties": { - "id": { + "testingCriteria": { "type": "string", - "description": "The operation ID." + "description": "Name of the testing criteria." }, - "object": { + "metric": { "type": "string", - "enum": [ - "response" - ], - "description": "Always return 'response'." + "description": "Metric being evaluated." }, - "deleted": { - "type": "boolean", - "enum": [ - true + "evaluator": { + "type": "string", + "description": "Name of the evaluator for this testing criteria." + }, + "baselineRunSummary": { + "allOf": [ + { + "$ref": "#/components/schemas/EvalRunResultSummary" + } ], - "description": "Always return true" + "description": "Summary statistics of the baseline run." + }, + "compareItems": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRunResultCompareItem" + }, + "description": "List of comparison results for each treatment run." } }, - "description": "The result of a delete response operation." + "description": "Comparison results for treatment runs against the baseline." }, - "DeleteSkillResponse": { + "EvalRunResultSummary": { "type": "object", "required": [ - "object", - "name", - "deleted" + "runId", + "sampleCount", + "average", + "standardDeviation" ], "properties": { - "object": { - "allOf": [ - { - "$ref": "#/components/schemas/SkillObjectType" - } - ], - "description": "The object type. Always 'skill.deleted'.", - "default": "skill.deleted" - }, - "name": { + "runId": { "type": "string", - "description": "The unique name of the skill." + "description": "The evaluation run ID." }, - "deleted": { - "type": "boolean", - "description": "Whether the skill was successfully deleted." + "sampleCount": { + "type": "integer", + "format": "int32", + "description": "Number of samples in the evaluation run." + }, + "average": { + "type": "number", + "format": "float", + "description": "Average value of the metric in the evaluation run." + }, + "standardDeviation": { + "type": "number", + "format": "float", + "description": "Standard deviation of the metric in the evaluation run." } }, - "description": "A deleted skill Object" + "description": "Summary statistics of a metric in an evaluation run." }, - "DeleteToolsetResponse": { + "EvaluationComparisonInsightRequest": { "type": "object", "required": [ - "object", - "name", - "deleted" + "type", + "evalId", + "baselineRunId", + "treatmentRunIds" ], "properties": { - "object": { + "type": { "type": "string", "enum": [ - "toolset.deleted" + "EvaluationComparison" ], - "description": "The object type. Always 'toolset.deleted'." + "description": "The type of request." }, - "name": { + "evalId": { "type": "string", - "description": "The name of the toolset." + "description": "Identifier for the evaluation." }, - "deleted": { - "type": "boolean", - "description": "Whether the toolset was successfully deleted." + "baselineRunId": { + "type": "string", + "description": "The baseline run ID for comparison." + }, + "treatmentRunIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of treatment run IDs for comparison." } }, - "description": "Response returned when a toolset is deleted." + "allOf": [ + { + "$ref": "#/components/schemas/InsightRequest" + } + ], + "description": "Evaluation Comparison Request" }, - "Deployment": { + "EvaluationComparisonInsightResult": { "type": "object", "required": [ "type", - "name" + "comparisons", + "method" ], "properties": { "type": { - "allOf": [ - { - "$ref": "#/components/schemas/DeploymentType" - } + "type": "string", + "enum": [ + "EvaluationComparison" ], - "description": "The type of the deployment" + "description": "The type of insights result." }, - "name": { + "comparisons": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRunResultComparison" + }, + "description": "Comparison results for each treatment run against the baseline." + }, + "method": { "type": "string", - "description": "Name of the deployment", - "readOnly": true - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "ModelDeployment": "#/components/schemas/ModelDeployment" + "description": "The statistical method used for comparison." } }, - "description": "Model Deployment Definition" - }, - "DeploymentType": { - "anyOf": [ - { - "type": "string" - }, + "allOf": [ { - "type": "string", - "enum": [ - "ModelDeployment" - ] + "$ref": "#/components/schemas/InsightResult" } - ] + ], + "description": "Insights from the evaluation comparison." }, - "EntraIDCredentials": { + "EvaluationResultSample": { "type": "object", "required": [ - "type" + "type", + "evaluationResult" ], "properties": { "type": { "type": "string", "enum": [ - "AAD" + "EvaluationResultSample" + ], + "description": "Evaluation Result Sample Type" + }, + "evaluationResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EvalResult" + } ], - "description": "The credential type", - "readOnly": true + "description": "Evaluation result for the analysis sample." } }, "allOf": [ { - "$ref": "#/components/schemas/BaseCredentials" + "$ref": "#/components/schemas/InsightSample" } ], - "description": "Entra ID credential definition" + "description": "A sample from the evaluation result." }, - "Eval": { + "EvaluationRule": { "type": "object", "required": [ - "object", "id", - "name", - "data_source_config", - "testing_criteria", - "created_at", - "metadata" + "action", + "eventType", + "enabled", + "systemData" ], "properties": { - "object": { + "id": { "type": "string", - "enum": [ - "eval" - ], - "description": "The object type.", - "x-stainless-const": true, - "default": "eval" + "description": "Unique identifier for the evaluation rule.", + "readOnly": true }, - "id": { + "displayName": { "type": "string", - "description": "Unique identifier for the evaluation." + "description": "Display Name for the evaluation rule." }, - "name": { + "description": { "type": "string", - "description": "The name of the evaluation." + "description": "Description for the evaluation rule." }, - "data_source_config": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.CreateEvalCustomDataSourceConfig" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalLogsDataSourceConfig" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalStoredCompletionsDataSourceConfig" - }, - { - "$ref": "#/components/schemas/AzureAIDataSourceConfig" - }, + "action": { + "allOf": [ { - "$ref": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" + "$ref": "#/components/schemas/EvaluationRuleAction" } ], - "description": "Configuration of data sources used in runs of the evaluation." - }, - "testing_criteria": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/OpenAI.EvalGraderLabelModel" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderStringCheck" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderTextSimilarity" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderPython" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderScoreModel" - }, - { - "$ref": "#/components/schemas/EvalGraderAzureAIEvaluator" - }, - { - "$ref": "#/components/schemas/EvalGraderInspectAI" - } + "description": "Definition of the evaluation rule action.", + "x-ms-foundry-meta": { + "conditional_previews": [ + "Evaluations=V1Preview" ] - }, - "description": "A list of testing criteria." - }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "The Unix timestamp (in seconds) for when the eval was created." + } }, - "metadata": { - "type": "object", + "filter": { "allOf": [ { - "$ref": "#/components/schemas/OpenAI.Metadata" + "$ref": "#/components/schemas/EvaluationRuleFilter" } ], - "nullable": true + "description": "Filter condition of the evaluation rule." }, - "modified_at": { + "eventType": { "allOf": [ { - "$ref": "#/components/schemas/integer" + "$ref": "#/components/schemas/EvaluationRuleEventType" } ], - "description": "Unix timestamp (in seconds) when the evaluation run was last modified." + "description": "Event type that the evaluation rule applies to." }, - "created_by": { - "type": "string", - "description": "the name of the person who created the run." + "enabled": { + "type": "boolean", + "description": "Indicates whether the evaluation rule is enabled. Default is true." }, - "properties": { + "systemData": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." + "description": "System metadata for the evaluation rule.", + "readOnly": true } }, - "description": "An Eval object with a data source config and testing criteria.\nAn Eval represents a task to be done for your LLM integration.\nLike:\n- Improve the quality of my chatbot\n- See how well my chatbot handles customer support\n- Check if o4-mini is better at my usecase than gpt-4o", - "title": "Eval", - "x-oaiMeta": { - "name": "The eval object", - "group": "evals", - "example": "{\n \"object\": \"eval\",\n \"id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"data_source_config\": {\n \"type\": \"custom\",\n \"item_schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\"type\": \"string\"},\n },\n \"required\": [\"label\"]\n },\n \"include_sample_schema\": true\n },\n \"testing_criteria\": [\n {\n \"name\": \"My string check grader\",\n \"type\": \"string_check\",\n \"input\": \"{{sample.output_text}}\",\n \"reference\": \"{{item.label}}\",\n \"operation\": \"eq\",\n }\n ],\n \"name\": \"External Data Eval\",\n \"created_at\": 1739314509,\n \"metadata\": {\n \"test\": \"synthetics\",\n }\n}\n" - } + "description": "Evaluation rule model." }, - "EvalCsvFileIdSource": { + "EvaluationRuleAction": { "type": "object", "required": [ - "type", - "id" + "type" ], "properties": { "type": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleActionType" + } + ], + "description": "Type of the evaluation action." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "continuousEvaluation": "#/components/schemas/ContinuousEvaluationRuleAction", + "humanEvaluationPreview": "#/components/schemas/HumanEvaluationPreviewRuleAction" + } + }, + "description": "Evaluation action model." + }, + "EvaluationRuleActionType": { + "anyOf": [ + { + "type": "string" + }, + { "type": "string", "enum": [ - "file_id" - ], - "description": "The type of source, always `file_id`." + "continuousEvaluation", + "humanEvaluationPreview" + ] + } + ], + "description": "Type of the evaluation action." + }, + "EvaluationRuleEventType": { + "anyOf": [ + { + "type": "string" }, - "id": { + { "type": "string", - "description": "The identifier of the uploaded CSV file." + "enum": [ + "responseCompleted", + "manual" + ] + } + ], + "description": "Type of the evaluation rule event." + }, + "EvaluationRuleFilter": { + "type": "object", + "required": [ + "agentName" + ], + "properties": { + "agentName": { + "type": "string", + "description": "Filter by agent name." } }, - "description": "Represents a reference to an uploaded CSV file used as a source for evaluation data." + "description": "Evaluation filter model." }, - "EvalCsvRunDataSource": { + "EvaluationRunClusterInsightRequest": { "type": "object", "required": [ "type", - "source" + "evalId", + "runIds" ], "properties": { "type": { "type": "string", "enum": [ - "csv" + "EvaluationRunClusterInsight" ], - "description": "The type of data source, always `csv`." + "description": "The type of insights request." }, - "source": { + "evalId": { + "type": "string", + "description": "Evaluation Id for the insights." + }, + "runIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of evaluation run IDs for the insights." + }, + "modelConfiguration": { "allOf": [ { - "$ref": "#/components/schemas/EvalCsvFileIdSource" + "$ref": "#/components/schemas/InsightModelConfiguration" } ], - "description": "The source of the CSV data, either inline content or a file reference." + "description": "Configuration of the model used in the insight generation." } }, "allOf": [ { - "$ref": "#/components/schemas/EvalRunDataSource" + "$ref": "#/components/schemas/InsightRequest" } ], - "description": "Represents a CSV data source for evaluation runs." + "description": "Insights on set of Evaluation Results" }, - "EvalGraderAzureAIEvaluator": { + "EvaluationRunClusterInsightResult": { "type": "object", "required": [ "type", - "name", - "evaluator_name" + "clusterInsight" ], "properties": { "type": { "type": "string", "enum": [ - "azure_ai_evaluator" + "EvaluationRunClusterInsight" ], - "description": "The object type, which is always `azure_ai_evaluator`." - }, - "name": { - "type": "string", - "description": "The name of the grader." - }, - "evaluator_name": { - "type": "string", - "description": "The name of the evaluator." - }, - "evaluator_version": { - "type": "string", - "description": "The version of the evaluator. Latest version if not specified." - }, - "initialization_parameters": { - "type": "object", - "additionalProperties": {}, - "description": "The initialization parameters for the evaluation. Must support structured outputs." + "description": "The type of insights result." }, - "data_mapping": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "The model to use for the evaluation. Must support structured outputs." + "clusterInsight": { + "$ref": "#/components/schemas/ClusterInsightResult" } }, - "title": "AzureAIEvaluatorGrader" + "allOf": [ + { + "$ref": "#/components/schemas/InsightResult" + } + ], + "description": "Insights from the evaluation run cluster analysis." }, - "EvalGraderInspectAI": { + "EvaluationScheduleTask": { "type": "object", "required": [ "type", - "name", - "task_name" + "evalId", + "evalRun" ], "properties": { "type": { "type": "string", "enum": [ - "inspect_ai" - ], - "description": "The object type, which is always `inspect_ai`." + "Evaluation" + ] }, - "name": { + "evalId": { "type": "string", - "description": "The display name of the benchmark." + "description": "Identifier of the evaluation group." }, - "task_name": { - "type": "string", - "description": "The inspect_ai task module path (e.g., `inspect_evals/gpqa_diamond`)." + "evalRun": { + "type": "object", + "description": "The evaluation run payload." } }, - "description": "Grader inspect_ai definition for inspect_ai benchmark evaluators." + "allOf": [ + { + "$ref": "#/components/schemas/ScheduleTask" + } + ], + "description": "Evaluation task for the schedule." }, - "EvalResult": { + "EvaluationTaxonomy": { "type": "object", "required": [ "name", - "type", - "score", - "passed" + "version", + "taxonomyInput" ], "properties": { + "id": { + "type": "string", + "description": "Asset ID, a unique identifier for the asset", + "readOnly": true + }, "name": { "type": "string", - "description": "name of the check" + "description": "The name of the resource", + "readOnly": true }, - "type": { + "version": { "type": "string", - "description": "type of the check" + "description": "The version of the resource", + "readOnly": true }, - "score": { - "type": "number", - "format": "float", - "description": "score" + "taxonomyInput": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationTaxonomyInput" + } + ], + "description": "Input configuration for the evaluation taxonomy." }, - "passed": { - "type": "boolean", - "description": "indicates if the check passed or failed" + "taxonomyCategories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaxonomyCategory" + }, + "description": "List of taxonomy categories." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional properties for the evaluation taxonomy." } }, - "description": "Result of the evaluation." + "description": "Evaluation Taxonomy Definition" }, - "EvalRun": { + "EvaluationTaxonomyCreateOrUpdate": { "type": "object", "required": [ - "object", - "id", - "eval_id", - "status", - "model", - "name", - "created_at", - "report_url", - "result_counts", - "per_model_usage", - "per_testing_criteria_results", - "data_source", - "metadata", - "error" + "taxonomyInput" ], "properties": { - "object": { - "type": "string", - "enum": [ - "eval.run" - ], - "description": "The type of the object. Always \"eval.run\".", - "x-stainless-const": true, - "default": "eval.run" - }, - "id": { - "type": "string", - "description": "Unique identifier for the evaluation run." - }, - "eval_id": { - "type": "string", - "description": "The identifier of the associated evaluation." - }, - "status": { - "type": "string", - "description": "The status of the evaluation run." - }, - "model": { - "type": "string", - "description": "The model that is evaluated, if applicable." - }, - "name": { + "description": { "type": "string", - "description": "The name of the evaluation run." - }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "Unix timestamp (in seconds) when the evaluation run was created." + "description": "The asset description text." }, - "report_url": { - "type": "string", - "format": "uri", - "description": "The URL to the rendered evaluation run report on the UI dashboard." + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." }, - "result_counts": { + "taxonomyInput": { "allOf": [ { - "$ref": "#/components/schemas/OpenAI.EvalRunResultCounts" + "$ref": "#/components/schemas/EvaluationTaxonomyInput" } ], - "description": "Counters summarizing the outcomes of the evaluation run." + "description": "Input configuration for the evaluation taxonomy." }, - "per_model_usage": { + "taxonomyCategories": { "type": "array", "items": { - "$ref": "#/components/schemas/OpenAI.EvalRunPerModelUsage" + "$ref": "#/components/schemas/TaxonomyCategory" }, - "description": "Usage statistics for each model during the evaluation run." + "description": "List of taxonomy categories." }, - "per_testing_criteria_results": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.EvalRunPerTestingCriteriaResults" + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" }, - "description": "Results per testing criteria applied during the evaluation run." - }, - "data_source": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" - }, + "description": "Additional properties for the evaluation taxonomy." + } + }, + "description": "Evaluation Taxonomy Definition" + }, + "EvaluationTaxonomyInput": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "allOf": [ { - "$ref": "#/components/schemas/EvalRunDataSource" + "$ref": "#/components/schemas/EvaluationTaxonomyInputType" } ], - "description": "Information about the run's data source." + "description": "Input type of the evaluation taxonomy." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "agent": "#/components/schemas/AgentTaxonomyInput" + } + }, + "description": "Input configuration for the evaluation taxonomy." + }, + "EvaluationTaxonomyInputType": { + "anyOf": [ + { + "type": "string" }, - "metadata": { - "type": "object", + { + "type": "string", + "enum": [ + "agent", + "policy" + ] + } + ], + "description": "Type of the evaluation taxonomy input." + }, + "EvaluationTaxonomyInputUpdate": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { "allOf": [ { - "$ref": "#/components/schemas/OpenAI.Metadata" + "$ref": "#/components/schemas/EvaluationTaxonomyInputType" } ], - "nullable": true + "description": "Input type of the evaluation taxonomy." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "agent": "#/components/schemas/AgentTaxonomyInputUpdate" + } + }, + "description": "Input configuration for the evaluation taxonomy." + }, + "EvaluationTaxonomyUpdate": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "The asset description text." }, - "error": { - "$ref": "#/components/schemas/OpenAI.EvalApiError" + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." }, - "modified_at": { + "taxonomyInput": { "allOf": [ { - "$ref": "#/components/schemas/integer" + "$ref": "#/components/schemas/EvaluationTaxonomyInputUpdate" } ], - "description": "Unix timestamp (in seconds) when the evaluation run was last modified." + "description": "Input configuration for the evaluation taxonomy." }, - "created_by": { - "type": "string", - "description": "the name of the person who created the run." + "taxonomyCategories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaxonomyCategory" + }, + "description": "List of taxonomy categories." }, "properties": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." + "description": "Additional properties for the evaluation taxonomy." } }, - "description": "A schema representing an evaluation run.", - "title": "EvalRun", - "x-oaiMeta": { - "name": "The eval run object", - "group": "evals", - "example": "{\n \"object\": \"eval.run\",\n \"id\": \"evalrun_67e57965b480819094274e3a32235e4c\",\n \"eval_id\": \"eval_67e579652b548190aaa83ada4b125f47\",\n \"report_url\": \"https://platform.openai.com/evaluations/eval_67e579652b548190aaa83ada4b125f47?run_id=evalrun_67e57965b480819094274e3a32235e4c\",\n \"status\": \"queued\",\n \"model\": \"gpt-4o-mini\",\n \"name\": \"gpt-4o-mini\",\n \"created_at\": 1743092069,\n \"result_counts\": {\n \"total\": 0,\n \"errored\": 0,\n \"failed\": 0,\n \"passed\": 0\n },\n \"per_model_usage\": null,\n \"per_testing_criteria_results\": null,\n \"data_source\": {\n \"type\": \"completions\",\n \"source\": {\n \"type\": \"file_content\",\n \"content\": [\n {\n \"item\": {\n \"input\": \"Tech Company Launches Advanced Artificial Intelligence Platform\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Central Bank Increases Interest Rates Amid Inflation Concerns\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Summit Addresses Climate Change Strategies\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Major Retailer Reports Record-Breaking Holiday Sales\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"National Team Qualifies for World Championship Finals\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Stock Markets Rally After Positive Economic Data Released\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Manufacturer Announces Merger with Competitor\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Breakthrough in Renewable Energy Technology Unveiled\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"World Leaders Sign Historic Climate Agreement\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Professional Athlete Sets New Record in Championship Event\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Financial Institutions Adapt to New Regulatory Requirements\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Tech Conference Showcases Advances in Artificial Intelligence\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Markets Respond to Oil Price Fluctuations\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Cooperation Strengthened Through New Treaty\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Sports League Announces Revised Schedule for Upcoming Season\",\n \"ground_truth\": \"Sports\"\n }\n }\n ]\n },\n \"input_messages\": {\n \"type\": \"template\",\n \"template\": [\n {\n \"type\": \"message\",\n \"role\": \"developer\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"Categorize a given news headline into one of the following topics: Technology, Markets, World, Business, or Sports.\n\n# Steps\n\n1. Analyze the content of the news headline to understand its primary focus.\n2. Extract the subject matter, identifying any key indicators or keywords.\n3. Use the identified indicators to determine the most suitable category out of the five options: Technology, Markets, World, Business, or Sports.\n4. Ensure only one category is selected per headline.\n\n# Output Format\n\nRespond with the chosen category as a single word. For instance: \"Technology\", \"Markets\", \"World\", \"Business\", or \"Sports\".\n\n# Examples\n\n**Input**: \"Apple Unveils New iPhone Model, Featuring Advanced AI Features\"\n**Output**: \"Technology\"\n\n**Input**: \"Global Stocks Mixed as Investors Await Central Bank Decisions\"\n**Output**: \"Markets\"\n\n**Input**: \"War in Ukraine: Latest Updates on Negotiation Status\"\n**Output**: \"World\"\n\n**Input**: \"Microsoft in Talks to Acquire Gaming Company for $2 Billion\"\n**Output**: \"Business\"\n\n**Input**: \"Manchester United Secures Win in Premier League Football Match\"\n**Output**: \"Sports\"\n\n# Notes\n\n- If the headline appears to fit into more than one category, choose the most dominant theme.\n- Keywords or phrases such as \"stocks\", \"company acquisition\", \"match\", or technological brands can be good indicators for classification.\n\"\n }\n },\n {\n \"type\": \"message\",\n \"role\": \"user\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"{{item.input}}\"\n }\n }\n ]\n },\n \"model\": \"gpt-4o-mini\",\n \"sampling_params\": {\n \"seed\": 42,\n \"temperature\": 1.0,\n \"top_p\": 1.0,\n \"max_completions_tokens\": 2048\n }\n },\n \"error\": null,\n \"metadata\": {}\n}\n" - } + "description": "Evaluation Taxonomy Definition" }, - "EvalRunDataSource": { + "EvaluatorCategory": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "quality", + "safety", + "agents" + ] + } + ], + "description": "The category of the evaluator" + }, + "EvaluatorCredentialRequest": { "type": "object", "required": [ - "type" + "blobUri" ], "properties": { - "type": { + "blobUri": { "type": "string", - "description": "The data source type discriminator." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "azure_ai_traces_preview": "#/components/schemas/TracesPreviewEvalRunDataSource", - "azure_ai_synthetic_data_gen_preview": "#/components/schemas/SyntheticDataGenerationPreviewEvalRunDataSource", - "azure_ai_responses": "#/components/schemas/AzureAIResponsesEvalRunDataSource", - "azure_ai_target_completions": "#/components/schemas/TargetCompletionEvalRunDataSource", - "csv": "#/components/schemas/EvalCsvRunDataSource", - "azure_ai_red_team": "#/components/schemas/RedTeamEvalRunDataSource", - "azure_ai_benchmark_preview": "#/components/schemas/AzureAIBenchmarkPreviewEvalRunDataSource" + "format": "uri", + "description": "The blob URI for the evaluator storage. Example: `https://account.blob.core.windows.net:443/container`" } }, - "description": "Base class for run data sources with discriminator support." + "description": "Request body for getting evaluator credentials" }, - "EvalRunOutputItem": { + "EvaluatorDefinition": { "type": "object", "required": [ - "object", - "id", - "run_id", - "eval_id", - "created_at", - "status", - "datasource_item_id", - "datasource_item", - "results", - "sample" + "type" ], "properties": { - "object": { - "type": "string", - "enum": [ - "eval.run.output_item" - ], - "description": "The type of the object. Always \"eval.run.output_item\".", - "x-stainless-const": true, - "default": "eval.run.output_item" - }, - "id": { - "type": "string", - "description": "Unique identifier for the evaluation run output item." - }, - "run_id": { - "type": "string", - "description": "The identifier of the evaluation run associated with this output item." - }, - "eval_id": { - "type": "string", - "description": "The identifier of the evaluation group." - }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "Unix timestamp (in seconds) when the evaluation run was created." - }, - "status": { - "type": "string", - "description": "The status of the evaluation run." - }, - "datasource_item_id": { + "type": { "allOf": [ { - "$ref": "#/components/schemas/OpenAI.integer" + "$ref": "#/components/schemas/EvaluatorDefinitionType" } ], - "description": "The identifier for the data source item." + "description": "The type of evaluator definition" }, - "datasource_item": { + "init_parameters": { "type": "object", "additionalProperties": {}, - "description": "Details of the input data source item." + "description": "The JSON schema (Draft 2020-12) for the evaluator's input parameters. This includes parameters like type, properties, required." }, - "results": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRunOutputItemResult" - }, - "description": "A list of grader results for this output item." + "data_schema": { + "type": "object", + "additionalProperties": {}, + "description": "The JSON schema (Draft 2020-12) for the evaluator's input data. This includes parameters like type, properties, required." }, - "sample": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.EvalRunOutputItemSample" - } - ], - "description": "A sample containing the input and output of the evaluation run." + "metrics": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/EvaluatorMetric" + }, + "description": "List of output metrics produced by this evaluator" } }, - "description": "A schema representing an evaluation run output item.", - "title": "EvalRunOutputItem", - "x-oaiMeta": { - "name": "The eval run output item object", - "group": "evals", - "example": "{\n \"object\": \"eval.run.output_item\",\n \"id\": \"outputitem_67abd55eb6548190bb580745d5644a33\",\n \"run_id\": \"evalrun_67abd54d60ec8190832b46859da808f7\",\n \"eval_id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"created_at\": 1739314509,\n \"status\": \"pass\",\n \"datasource_item_id\": 137,\n \"datasource_item\": {\n \"teacher\": \"To grade essays, I only check for style, content, and grammar.\",\n \"student\": \"I am a student who is trying to write the best essay.\"\n },\n \"results\": [\n {\n \"name\": \"String Check Grader\",\n \"type\": \"string-check-grader\",\n \"score\": 1.0,\n \"passed\": true,\n }\n ],\n \"sample\": {\n \"input\": [\n {\n \"role\": \"system\",\n \"content\": \"You are an evaluator bot...\"\n },\n {\n \"role\": \"user\",\n \"content\": \"You are assessing...\"\n }\n ],\n \"output\": [\n {\n \"role\": \"assistant\",\n \"content\": \"The rubric is not clear nor concise.\"\n }\n ],\n \"finish_reason\": \"stop\",\n \"model\": \"gpt-4o-2024-08-06\",\n \"usage\": {\n \"total_tokens\": 521,\n \"completion_tokens\": 2,\n \"prompt_tokens\": 519,\n \"cached_tokens\": 0\n },\n \"error\": null,\n \"temperature\": 1.0,\n \"max_completion_tokens\": 2048,\n \"top_p\": 1.0,\n \"seed\": 42\n }\n}\n" - } + "discriminator": { + "propertyName": "type", + "mapping": { + "code": "#/components/schemas/CodeBasedEvaluatorDefinition", + "prompt": "#/components/schemas/PromptBasedEvaluatorDefinition" + } + }, + "description": "Base evaluator configuration with discriminator" }, - "EvalRunOutputItemResult": { - "type": "object", - "required": [ - "name", - "score", - "passed" + "EvaluatorDefinitionType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "prompt", + "code", + "prompt_and_code", + "service", + "openai_graders" + ] + } ], + "description": "The type of evaluator definition" + }, + "EvaluatorMetric": { + "type": "object", "properties": { - "name": { - "type": "string", - "description": "The name of the grader." - }, "type": { - "type": "string", - "description": "The grader type (for example, \"string-check-grader\")." - }, - "score": { "allOf": [ { - "$ref": "#/components/schemas/OpenAI.numeric" + "$ref": "#/components/schemas/EvaluatorMetricType" } ], - "description": "The numeric score produced by the grader." - }, - "passed": { - "type": "boolean", - "description": "Whether the grader considered the output a pass." + "description": "Type of the metric." }, - "sample": { - "type": "object", - "additionalProperties": {}, - "nullable": true, - "description": "Optional sample or intermediate data produced by the grader." + "desirable_direction": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluatorMetricDirection" + } + ], + "description": "It indicates whether a higher value is better or a lower value is better for this metric." }, - "metric": { - "type": "string", - "description": "The name of the metric (e.g., \"fluency\", \"f1_score\")." + "min_value": { + "type": "number", + "format": "float", + "description": "Minimum value for the metric" }, - "label": { - "type": "string", - "description": "The label associated with the test criteria metric (e.g., \"pass\", \"fail\", \"good\", \"bad\")." + "max_value": { + "type": "number", + "format": "float", + "description": "Maximum value for the metric. If not specified, it is assumed to be unbounded." }, "threshold": { "type": "number", "format": "float", - "description": "The threshold used to determine pass/fail for this test criteria, if it is numerical." - }, - "reason": { - "type": "string", - "description": "The reason for the test criteria metric." + "description": "Default pass/fail threshold for this metric." }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional details about the test criteria metric." + "is_primary": { + "type": "boolean", + "description": "Indicates if this metric is primary when there are multiple metrics." } }, - "additionalProperties": {}, - "description": "A single grader result for an evaluation run output item.", - "title": "EvalRunOutputItemResult" + "description": "Evaluator Metric" }, - "EvalRunOutputItemSampleInput": { - "type": "object", - "required": [ - "role", - "content", - "tool_calls" - ], - "properties": { - "role": { - "type": "string" - }, - "content": { + "EvaluatorMetricDirection": { + "anyOf": [ + { "type": "string" }, - "tool_calls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CompletionMessageToolCallChunk" - }, - "description": "Tool calls made within the message, if any." + { + "type": "string", + "enum": [ + "increase", + "decrease", + "neutral" + ] } - }, - "description": "A message in the evaluation run." - }, - "EvalRunOutputItemSampleOutput": { - "type": "object", - "required": [ - "tool_calls" ], - "properties": { - "role": { + "description": "The direction of the metric indicating whether a higher value is better, a lower value is better, or neutral" + }, + "EvaluatorMetricType": { + "anyOf": [ + { "type": "string" }, - "content": { + { + "type": "string", + "enum": [ + "ordinal", + "continuous", + "boolean" + ] + } + ], + "description": "The type of the evaluator" + }, + "EvaluatorType": { + "anyOf": [ + { "type": "string" }, - "tool_calls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CompletionMessageToolCallChunk" - }, - "description": "Tool calls made within the message, if any." + { + "type": "string", + "enum": [ + "builtin", + "custom" + ] } - }, - "description": "A message in the evaluation run." + ], + "description": "The type of the evaluator" }, - "EvalRunResultCompareItem": { + "EvaluatorVersion": { "type": "object", "required": [ - "treatmentRunId", - "treatmentRunSummary", - "deltaEstimate", - "pValue", - "treatmentEffect" + "evaluator_type", + "categories", + "definition", + "created_by", + "created_at", + "modified_at", + "name", + "version" ], "properties": { - "treatmentRunId": { + "display_name": { "type": "string", - "description": "The treatment run ID." + "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." }, - "treatmentRunSummary": { + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Metadata about the evaluator" + }, + "evaluator_type": { "allOf": [ { - "$ref": "#/components/schemas/EvalRunResultSummary" + "$ref": "#/components/schemas/EvaluatorType" } ], - "description": "Summary statistics of the treatment run." - }, - "deltaEstimate": { - "type": "number", - "format": "float", - "description": "Estimated difference between treatment and baseline." + "description": "The type of the evaluator" }, - "pValue": { - "type": "number", - "format": "float", - "description": "P-value for the treatment effect." + "categories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluatorCategory" + }, + "description": "The categories of the evaluator" }, - "treatmentEffect": { + "definition": { "allOf": [ { - "$ref": "#/components/schemas/TreatmentEffectType" + "$ref": "#/components/schemas/EvaluatorDefinition" } ], - "description": "Type of treatment effect." + "description": "Definition of the evaluator" + }, + "created_by": { + "type": "string", + "description": "Creator of the evaluator", + "readOnly": true + }, + "created_at": { + "type": "string", + "description": "Creation date/time of the evaluator", + "readOnly": true + }, + "modified_at": { + "type": "string", + "description": "Last modified date/time of the evaluator", + "readOnly": true + }, + "id": { + "type": "string", + "description": "Asset ID, a unique identifier for the asset", + "readOnly": true + }, + "name": { + "type": "string", + "description": "The name of the resource", + "readOnly": true + }, + "version": { + "type": "string", + "description": "The version of the resource", + "readOnly": true } }, - "description": "Metric comparison for a treatment against the baseline." + "description": "Evaluator Definition" }, - "EvalRunResultComparison": { + "EvaluatorVersionCreate": { "type": "object", "required": [ - "testingCriteria", - "metric", - "evaluator", - "baselineRunSummary", - "compareItems" + "evaluator_type", + "categories", + "definition" ], "properties": { - "testingCriteria": { - "type": "string", - "description": "Name of the testing criteria." - }, - "metric": { + "display_name": { "type": "string", - "description": "Metric being evaluated." + "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." }, - "evaluator": { - "type": "string", - "description": "Name of the evaluator for this testing criteria." + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Metadata about the evaluator" }, - "baselineRunSummary": { + "evaluator_type": { "allOf": [ { - "$ref": "#/components/schemas/EvalRunResultSummary" + "$ref": "#/components/schemas/EvaluatorType" } ], - "description": "Summary statistics of the baseline run." + "description": "The type of the evaluator" }, - "compareItems": { + "categories": { "type": "array", "items": { - "$ref": "#/components/schemas/EvalRunResultCompareItem" + "$ref": "#/components/schemas/EvaluatorCategory" }, - "description": "List of comparison results for each treatment run." - } - }, - "description": "Comparison results for treatment runs against the baseline." - }, - "EvalRunResultSummary": { - "type": "object", - "required": [ - "runId", - "sampleCount", - "average", - "standardDeviation" - ], - "properties": { - "runId": { - "type": "string", - "description": "The evaluation run ID." + "description": "The categories of the evaluator" }, - "sampleCount": { - "type": "integer", - "format": "int32", - "description": "Number of samples in the evaluation run." + "definition": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluatorDefinition" + } + ], + "description": "Definition of the evaluator" }, - "average": { - "type": "number", - "format": "float", - "description": "Average value of the metric in the evaluation run." + "description": { + "type": "string", + "description": "The asset description text." }, - "standardDeviation": { - "type": "number", - "format": "float", - "description": "Standard deviation of the metric in the evaluation run." + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." } }, - "description": "Summary statistics of a metric in an evaluation run." + "description": "Evaluator Definition" }, - "EvaluationComparisonInsightRequest": { + "EvaluatorVersionUpdate": { "type": "object", - "required": [ - "type", - "evalId", - "baselineRunId", - "treatmentRunIds" - ], "properties": { - "type": { - "type": "string", - "enum": [ - "EvaluationComparison" - ], - "description": "The type of request." - }, - "evalId": { + "display_name": { "type": "string", - "description": "Identifier for the evaluation." + "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." }, - "baselineRunId": { - "type": "string", - "description": "The baseline run ID for comparison." + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Metadata about the evaluator" }, - "treatmentRunIds": { + "categories": { "type": "array", "items": { + "$ref": "#/components/schemas/EvaluatorCategory" + }, + "description": "The categories of the evaluator" + }, + "description": { + "type": "string", + "description": "The asset description text." + }, + "tags": { + "type": "object", + "additionalProperties": { "type": "string" }, - "description": "List of treatment run IDs for comparison." + "description": "Tag dictionary. Tags can be added, removed, and updated." } }, - "allOf": [ - { - "$ref": "#/components/schemas/InsightRequest" - } - ], - "description": "Evaluation Comparison Request" + "description": "Evaluator Definition" }, - "EvaluationComparisonInsightResult": { + "FabricDataAgentToolCall": { "type": "object", "required": [ "type", - "comparisons", - "method" + "call_id", + "arguments", + "status" ], "properties": { "type": { "type": "string", "enum": [ - "EvaluationComparison" - ], - "description": "The type of insights result." + "fabric_dataagent_preview_call" + ] }, - "comparisons": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRunResultComparison" - }, - "description": "Comparison results for each treatment run against the baseline." + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." }, - "method": { + "arguments": { "type": "string", - "description": "The statistical method used for comparison." + "description": "A JSON string of the arguments to pass to the tool." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/InsightResult" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "Insights from the evaluation comparison." + "description": "A Fabric data agent tool call." }, - "EvaluationResultSample": { + "FabricDataAgentToolCallOutput": { "type": "object", "required": [ "type", - "evaluationResult" + "call_id", + "status" ], "properties": { "type": { "type": "string", "enum": [ - "EvaluationResultSample" + "fabric_dataagent_preview_call_output" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "output": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallOutputContent" + } ], - "description": "Evaluation Result Sample Type" + "description": "The output from the Fabric data agent tool call." }, - "evaluationResult": { + "status": { "allOf": [ { - "$ref": "#/components/schemas/EvalResult" + "$ref": "#/components/schemas/ToolCallStatus" } ], - "description": "Evaluation result for the analysis sample." + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/InsightSample" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "A sample from the evaluation result." + "description": "The output of a Fabric data agent tool call." }, - "EvaluationRule": { + "FabricDataAgentToolParameters": { "type": "object", - "required": [ - "id", - "action", - "eventType", - "enabled", - "systemData" - ], "properties": { - "id": { - "type": "string", - "description": "Unique identifier for the evaluation rule.", - "readOnly": true - }, - "displayName": { + "name": { "type": "string", - "description": "Display Name for the evaluation rule." + "description": "Optional user-defined name for this tool or configuration." }, "description": { "type": "string", - "description": "Description for the evaluation rule." - }, - "action": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleAction" - } - ], - "description": "Definition of the evaluation rule action.", - "x-ms-foundry-meta": { - "conditional_previews": [ - "Evaluations=V1Preview" - ] - } - }, - "filter": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleFilter" - } - ], - "description": "Filter condition of the evaluation rule." - }, - "eventType": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleEventType" - } - ], - "description": "Event type that the evaluation rule applies to." - }, - "enabled": { - "type": "boolean", - "description": "Indicates whether the evaluation rule is enabled. Default is true." + "description": "Optional user-defined description for this tool or configuration." }, - "systemData": { - "type": "object", - "additionalProperties": { - "type": "string" + "project_connections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolProjectConnection" }, - "description": "System metadata for the evaluation rule.", - "readOnly": true + "maxItems": 1, + "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." } }, - "description": "Evaluation rule model." + "description": "The fabric data agent tool parameters." }, - "EvaluationRuleAction": { + "FileDatasetVersion": { "type": "object", "required": [ "type" ], "properties": { "type": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleActionType" - } - ], - "description": "Type of the evaluation action." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "continuousEvaluation": "#/components/schemas/ContinuousEvaluationRuleAction", - "humanEvaluationPreview": "#/components/schemas/HumanEvaluationPreviewRuleAction" - } - }, - "description": "Evaluation action model." - }, - "EvaluationRuleActionType": { - "anyOf": [ - { - "type": "string" - }, - { "type": "string", "enum": [ - "continuousEvaluation", - "humanEvaluationPreview" - ] + "uri_file" + ], + "description": "Dataset type" } - ], - "description": "Type of the evaluation action." - }, - "EvaluationRuleEventType": { - "anyOf": [ - { - "type": "string" - }, + }, + "allOf": [ { - "type": "string", - "enum": [ - "responseCompleted", - "manual" - ] + "$ref": "#/components/schemas/DatasetVersion" } ], - "description": "Type of the evaluation rule event." - }, - "EvaluationRuleFilter": { - "type": "object", - "required": [ - "agentName" - ], - "properties": { - "agentName": { - "type": "string", - "description": "Filter by agent name." - } - }, - "description": "Evaluation filter model." + "description": "FileDatasetVersion Definition" }, - "EvaluationRunClusterInsightRequest": { + "FileDatasetVersionUpdate": { "type": "object", "required": [ - "type", - "evalId", - "runIds" + "type" ], "properties": { "type": { "type": "string", "enum": [ - "EvaluationRunClusterInsight" - ], - "description": "The type of insights request." - }, - "evalId": { - "type": "string", - "description": "Evaluation Id for the insights." - }, - "runIds": { - "type": "array", - "items": { - "type": "string" - }, - "description": "List of evaluation run IDs for the insights." - }, - "modelConfiguration": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightModelConfiguration" - } + "uri_file" ], - "description": "Configuration of the model used in the insight generation." + "description": "Dataset type" } }, "allOf": [ { - "$ref": "#/components/schemas/InsightRequest" + "$ref": "#/components/schemas/DatasetVersionUpdate" } ], - "description": "Insights on set of Evaluation Results" + "description": "FileDatasetVersion Definition" }, - "EvaluationRunClusterInsightResult": { + "FolderDatasetVersion": { "type": "object", "required": [ - "type", - "clusterInsight" + "type" ], "properties": { "type": { "type": "string", "enum": [ - "EvaluationRunClusterInsight" + "uri_folder" ], - "description": "The type of insights result." - }, - "clusterInsight": { - "$ref": "#/components/schemas/ClusterInsightResult" + "description": "Dataset type" } }, "allOf": [ { - "$ref": "#/components/schemas/InsightResult" + "$ref": "#/components/schemas/DatasetVersion" } ], - "description": "Insights from the evaluation run cluster analysis." + "description": "FileDatasetVersion Definition" }, - "EvaluationScheduleTask": { + "FolderDatasetVersionUpdate": { "type": "object", "required": [ - "type", - "evalId", - "evalRun" + "type" ], "properties": { "type": { "type": "string", "enum": [ - "Evaluation" - ] - }, - "evalId": { - "type": "string", - "description": "Identifier of the evaluation group." - }, - "evalRun": { - "type": "object", - "description": "The evaluation run payload." + "uri_folder" + ], + "description": "Dataset type" } }, "allOf": [ { - "$ref": "#/components/schemas/ScheduleTask" + "$ref": "#/components/schemas/DatasetVersionUpdate" } ], - "description": "Evaluation task for the schedule." + "description": "FileDatasetVersion Definition" }, - "EvaluationTaxonomy": { + "FunctionToolCall": { "type": "object", "required": [ "name", - "version", - "taxonomyInput" + "arguments" ], "properties": { - "id": { - "type": "string", - "description": "Asset ID, a unique identifier for the asset", - "readOnly": true - }, "name": { "type": "string", - "description": "The name of the resource", - "readOnly": true + "description": "The name of the function to call." }, - "version": { + "arguments": { "type": "string", - "description": "The version of the resource", - "readOnly": true - }, - "taxonomyInput": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationTaxonomyInput" - } - ], - "description": "Input configuration for the evaluation taxonomy." - }, - "taxonomyCategories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TaxonomyCategory" - }, - "description": "List of taxonomy categories." - }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional properties for the evaluation taxonomy." + "description": "The arguments to call the function with, as generated by the model in JSON format." } }, - "description": "Evaluation Taxonomy Definition" + "description": "Details of a function tool call." }, - "EvaluationTaxonomyCreateOrUpdate": { + "HostedAgentDefinition": { "type": "object", "required": [ - "taxonomyInput" + "kind", + "container_protocol_versions", + "cpu", + "memory" ], "properties": { - "description": { + "kind": { "type": "string", - "description": "The asset description text." + "enum": [ + "hosted" + ] }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" }, - "description": "Tag dictionary. Tags can be added, removed, and updated." - }, - "taxonomyInput": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationTaxonomyInput" - } - ], - "description": "Input configuration for the evaluation taxonomy." + "description": "An array of tools the hosted agent's model may call while generating a response. You\ncan specify which tool to use by setting the `tool_choice` parameter." }, - "taxonomyCategories": { + "container_protocol_versions": { "type": "array", "items": { - "$ref": "#/components/schemas/TaxonomyCategory" + "$ref": "#/components/schemas/ProtocolVersionRecord" }, - "description": "List of taxonomy categories." + "description": "The protocols that the agent supports for ingress communication of the containers.", + "example": [ + { + "protocol": "responses", + "version": "v0.1.1" + }, + { + "protocol": "a2a", + "version": "v0.3.0" + } + ] }, - "properties": { + "cpu": { + "type": "string", + "description": "The CPU configuration for the hosted agent.", + "example": "0.25" + }, + "memory": { + "type": "string", + "description": "The memory configuration for the hosted agent.", + "example": "0.5Gi" + }, + "environment_variables": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Additional properties for the evaluation taxonomy." + "description": "Environment variables to set in the hosted agent container.", + "example": { + "name": "LOG_LEVEL", + "value": "debug" + } + }, + "image": { + "type": "string", + "description": "The image ID for the agent, applicable to image-based hosted agents.", + "example": "my-registry.azurecr.io/my-hosted-agent:latest" } }, - "description": "Evaluation Taxonomy Definition" + "allOf": [ + { + "$ref": "#/components/schemas/AgentDefinition" + } + ], + "description": "The hosted agent definition.", + "x-ms-foundry-meta": { + "required_previews": [ + "HostedAgents=V1Preview" + ] + } }, - "EvaluationTaxonomyInput": { + "HourlyRecurrenceSchedule": { "type": "object", "required": [ "type" ], "properties": { "type": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationTaxonomyInputType" - } - ], - "description": "Input type of the evaluation taxonomy." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "agent": "#/components/schemas/AgentTaxonomyInput" - } - }, - "description": "Input configuration for the evaluation taxonomy." - }, - "EvaluationTaxonomyInputType": { - "anyOf": [ - { - "type": "string" - }, - { "type": "string", "enum": [ - "agent", - "policy" + "Hourly" ] } + }, + "allOf": [ + { + "$ref": "#/components/schemas/RecurrenceSchedule" + } ], - "description": "Type of the evaluation taxonomy input." + "description": "Hourly recurrence schedule." }, - "EvaluationTaxonomyInputUpdate": { + "HumanEvaluationPreviewRuleAction": { "type": "object", "required": [ - "type" + "type", + "templateId" ], "properties": { "type": { + "type": "string", + "enum": [ + "humanEvaluationPreview" + ] + }, + "templateId": { "allOf": [ { - "$ref": "#/components/schemas/EvaluationTaxonomyInputType" + "$ref": "#/components/schemas/AssetId" } ], - "description": "Input type of the evaluation taxonomy." + "description": "Human evaluation template Id." } }, - "discriminator": { - "propertyName": "type", - "mapping": { - "agent": "#/components/schemas/AgentTaxonomyInputUpdate" + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleAction" } - }, - "description": "Input configuration for the evaluation taxonomy." + ], + "description": "Evaluation rule action for human evaluation." }, - "EvaluationTaxonomyUpdate": { + "Index": { "type": "object", + "required": [ + "type", + "name", + "version" + ], "properties": { - "description": { - "type": "string", - "description": "The asset description text." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." - }, - "taxonomyInput": { + "type": { "allOf": [ { - "$ref": "#/components/schemas/EvaluationTaxonomyInputUpdate" + "$ref": "#/components/schemas/IndexType" } ], - "description": "Input configuration for the evaluation taxonomy." + "description": "Type of index" }, - "taxonomyCategories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TaxonomyCategory" - }, - "description": "List of taxonomy categories." + "id": { + "type": "string", + "description": "Asset ID, a unique identifier for the asset", + "readOnly": true + }, + "name": { + "type": "string", + "description": "The name of the resource", + "readOnly": true }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional properties for the evaluation taxonomy." + "version": { + "type": "string", + "description": "The version of the resource", + "readOnly": true } }, - "description": "Evaluation Taxonomy Definition" + "discriminator": { + "propertyName": "type", + "mapping": { + "AzureSearch": "#/components/schemas/AzureAISearchIndex", + "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndex", + "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndex" + } + }, + "description": "Index resource Definition" }, - "EvaluatorCategory": { + "IndexType": { "anyOf": [ { "type": "string" @@ -13846,29 +20745,14 @@ { "type": "string", "enum": [ - "quality", - "safety", - "agents" + "AzureSearch", + "CosmosDBNoSqlVectorStore", + "ManagedAzureSearch" ] } - ], - "description": "The category of the evaluator" - }, - "EvaluatorCredentialRequest": { - "type": "object", - "required": [ - "blobUri" - ], - "properties": { - "blobUri": { - "type": "string", - "format": "uri", - "description": "The blob URI for the evaluator storage. Example: `https://account.blob.core.windows.net:443/container`" - } - }, - "description": "Request body for getting evaluator credentials" + ] }, - "EvaluatorDefinition": { + "IndexUpdate": { "type": "object", "required": [ "type" @@ -13877,130 +20761,67 @@ "type": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorDefinitionType" + "$ref": "#/components/schemas/IndexType" } ], - "description": "The type of evaluator definition" - }, - "init_parameters": { - "type": "object", - "additionalProperties": {}, - "description": "The JSON schema (Draft 2020-12) for the evaluator's input parameters. This includes parameters like type, properties, required." + "description": "Type of index" }, - "data_schema": { - "type": "object", - "additionalProperties": {}, - "description": "The JSON schema (Draft 2020-12) for the evaluator's input data. This includes parameters like type, properties, required." + "description": { + "type": "string", + "description": "The asset description text." }, - "metrics": { + "tags": { "type": "object", "additionalProperties": { - "$ref": "#/components/schemas/EvaluatorMetric" + "type": "string" }, - "description": "List of output metrics produced by this evaluator" + "description": "Tag dictionary. Tags can be added, removed, and updated." } }, "discriminator": { "propertyName": "type", "mapping": { - "code": "#/components/schemas/CodeBasedEvaluatorDefinition", - "prompt": "#/components/schemas/PromptBasedEvaluatorDefinition" + "AzureSearch": "#/components/schemas/AzureAISearchIndexUpdate", + "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndexUpdate", + "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndexUpdate" } }, - "description": "Base evaluator configuration with discriminator" - }, - "EvaluatorDefinitionType": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "prompt", - "code", - "prompt_and_code", - "service", - "openai_graders" - ] - } - ], - "description": "The type of evaluator definition" + "description": "Index resource Definition" }, - "EvaluatorMetric": { + "Input": { "type": "object", + "required": [ + "jobInputType" + ], "properties": { - "type": { + "jobInputType": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorMetricType" + "$ref": "#/components/schemas/AssetTypes" } ], - "description": "Type of the metric." + "description": "Specifies the type of job input." }, - "desirable_direction": { + "uri": { + "type": "string", + "description": "Input Asset URI. Required for uri_file, uri_folder, and safetensors_model types." + }, + "mode": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorMetricDirection" + "$ref": "#/components/schemas/InputOutputModes" } ], - "description": "It indicates whether a higher value is better or a lower value is better for this metric." - }, - "min_value": { - "type": "number", - "format": "float", - "description": "Minimum value for the metric" - }, - "max_value": { - "type": "number", - "format": "float", - "description": "Maximum value for the metric. If not specified, it is assumed to be unbounded." - }, - "threshold": { - "type": "number", - "format": "float", - "description": "Default pass/fail threshold for this metric." - }, - "is_primary": { - "type": "boolean", - "description": "Indicates if this metric is primary when there are multiple metrics." - } - }, - "description": "Evaluator Metric" - }, - "EvaluatorMetricDirection": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "increase", - "decrease", - "neutral" - ] - } - ], - "description": "The direction of the metric indicating whether a higher value is better, a lower value is better, or neutral" - }, - "EvaluatorMetricType": { - "anyOf": [ - { - "type": "string" + "description": "Input Asset Delivery Mode. Applies to uri-based inputs." }, - { + "value": { "type": "string", - "enum": [ - "ordinal", - "continuous", - "boolean" - ] + "description": "Literal value. Required for literal type." } - ], - "description": "The type of the evaluator" + }, + "description": "Job input definition." }, - "EvaluatorType": { + "InputOutputModes": { "anyOf": [ { "type": "string" @@ -14008,559 +20829,667 @@ { "type": "string", "enum": [ - "builtin", - "custom" + "ReadOnlyMount", + "ReadWriteMount", + "Download", + "Direct", + "Upload" ] } ], - "description": "The type of the evaluator" + "description": "Enum to determine the input/output data delivery mode." }, - "EvaluatorVersion": { + "Insight": { "type": "object", "required": [ - "evaluator_type", - "categories", - "definition", - "created_by", - "created_at", - "modified_at", - "name", - "version" + "id", + "metadata", + "state", + "displayName", + "request" ], "properties": { - "display_name": { + "id": { "type": "string", - "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." + "description": "The unique identifier for the insights report.", + "readOnly": true }, "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Metadata about the evaluator" + "allOf": [ + { + "$ref": "#/components/schemas/InsightsMetadata" + } + ], + "description": "Metadata about the insights report.", + "readOnly": true }, - "evaluator_type": { + "state": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorType" + "$ref": "#/components/schemas/Azure.Core.Foundations.OperationState" } ], - "description": "The type of the evaluator" + "description": "The current state of the insights.", + "readOnly": true }, - "categories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvaluatorCategory" - }, - "description": "The categories of the evaluator" + "displayName": { + "type": "string", + "description": "User friendly display name for the insight." }, - "definition": { + "request": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorDefinition" + "$ref": "#/components/schemas/InsightRequest" } ], - "description": "Definition of the evaluator" + "description": "Request for the insights analysis." }, - "created_by": { - "type": "string", - "description": "Creator of the evaluator", + "result": { + "allOf": [ + { + "$ref": "#/components/schemas/InsightResult" + } + ], + "description": "The result of the insights report.", "readOnly": true - }, - "created_at": { + } + }, + "description": "The response body for cluster insights." + }, + "InsightCluster": { + "type": "object", + "required": [ + "id", + "label", + "suggestion", + "suggestionTitle", + "description", + "weight" + ], + "properties": { + "id": { "type": "string", - "description": "Creation date/time of the evaluator", - "readOnly": true + "description": "The id of the analysis cluster." }, - "modified_at": { + "label": { "type": "string", - "description": "Last modified date/time of the evaluator", - "readOnly": true + "description": "Label for the cluster" }, - "id": { + "suggestion": { "type": "string", - "description": "Asset ID, a unique identifier for the asset", - "readOnly": true + "description": "Suggestion for the cluster" }, - "name": { + "suggestionTitle": { "type": "string", - "description": "The name of the resource", - "readOnly": true + "description": "The title of the suggestion for the cluster" }, - "version": { + "description": { "type": "string", - "description": "The version of the resource", - "readOnly": true + "description": "Description of the analysis cluster." + }, + "weight": { + "type": "integer", + "format": "int32", + "description": "The weight of the analysis cluster. This indicate number of samples in the cluster." + }, + "subClusters": { + "description": "List of subclusters within this cluster. Empty if no subclusters exist.", + "type": "array", + "items": { + "$ref": "#/components/schemas/InsightCluster" + } + }, + "samples": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InsightSample" + }, + "description": "List of samples that belong to this cluster. Empty if samples are part of subclusters." } }, - "description": "Evaluator Definition" + "description": "A cluster of analysis samples." }, - "EvaluatorVersionCreate": { + "InsightModelConfiguration": { "type": "object", "required": [ - "evaluator_type", - "categories", - "definition" + "modelDeploymentName" ], "properties": { - "display_name": { + "modelDeploymentName": { "type": "string", - "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Metadata about the evaluator" - }, - "evaluator_type": { + "description": "The model deployment to be evaluated. Accepts either the deployment name alone or with the connection name as '{connectionName}/'." + } + }, + "description": "Configuration of the model used in the insight generation." + }, + "InsightRequest": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorType" + "$ref": "#/components/schemas/InsightType" } ], - "description": "The type of the evaluator" - }, - "categories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvaluatorCategory" - }, - "description": "The categories of the evaluator" - }, - "definition": { + "description": "The type of request." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightRequest", + "AgentClusterInsight": "#/components/schemas/AgentClusterInsightRequest", + "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightRequest" + } + }, + "description": "The request of the insights report." + }, + "InsightResult": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorDefinition" + "$ref": "#/components/schemas/InsightType" } ], - "description": "Definition of the evaluator" - }, - "description": { - "type": "string", - "description": "The asset description text." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "description": "The type of insights result." } }, - "description": "Evaluator Definition" + "discriminator": { + "propertyName": "type", + "mapping": { + "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightResult", + "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightResult", + "AgentClusterInsight": "#/components/schemas/AgentClusterInsightResult" + } + }, + "description": "The result of the insights." }, - "EvaluatorVersionUpdate": { + "InsightSample": { "type": "object", + "required": [ + "id", + "type", + "features", + "correlationInfo" + ], "properties": { - "display_name": { + "id": { "type": "string", - "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Metadata about the evaluator" + "description": "The unique identifier for the analysis sample." }, - "categories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvaluatorCategory" - }, - "description": "The categories of the evaluator" + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/SampleType" + } + ], + "description": "Sample type" }, - "description": { - "type": "string", - "description": "The asset description text." + "features": { + "type": "object", + "additionalProperties": {}, + "description": "Features to help with additional filtering of data in UX." }, - "tags": { + "correlationInfo": { "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "additionalProperties": {}, + "description": "Info about the correlation for the analysis sample." } }, - "description": "Evaluator Definition" + "discriminator": { + "propertyName": "type", + "mapping": { + "EvaluationResultSample": "#/components/schemas/EvaluationResultSample" + } + }, + "description": "A sample from the analysis." }, - "FabricDataAgentToolCall": { + "InsightScheduleTask": { "type": "object", "required": [ "type", - "call_id", - "arguments", - "status" + "insight" ], "properties": { "type": { "type": "string", "enum": [ - "fabric_dataagent_preview_call" + "Insight" ] }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "arguments": { - "type": "string", - "description": "A JSON string of the arguments to pass to the tool." - }, - "status": { + "insight": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/Insight" } ], - "description": "The status of the tool call." + "description": "The insight payload." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/ScheduleTask" } ], - "description": "A Fabric data agent tool call." + "description": "Insight task for the schedule." }, - "FabricDataAgentToolCallOutput": { + "InsightSummary": { "type": "object", "required": [ - "type", - "call_id", - "status" + "sampleCount", + "uniqueSubclusterCount", + "uniqueClusterCount", + "method", + "usage" ], "properties": { - "type": { - "type": "string", - "enum": [ - "fabric_dataagent_preview_call_output" - ] + "sampleCount": { + "type": "integer", + "format": "int32", + "description": "Total number of samples analyzed." }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." + "uniqueSubclusterCount": { + "type": "integer", + "format": "int32", + "description": "Total number of unique subcluster labels." }, - "output": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallOutputContent" - } - ], - "description": "The output from the Fabric data agent tool call." + "uniqueClusterCount": { + "type": "integer", + "format": "int32", + "description": "Total number of unique clusters." }, - "status": { + "method": { + "type": "string", + "description": "Method used for clustering." + }, + "usage": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/ClusterTokenUsage" } ], - "description": "The status of the tool call." + "description": "Token usage while performing clustering analysis" } }, - "allOf": [ + "description": "Summary of the error cluster analysis." + }, + "InsightType": { + "anyOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "type": "string" + }, + { + "type": "string", + "enum": [ + "EvaluationRunClusterInsight", + "AgentClusterInsight", + "EvaluationComparison" + ] } ], - "description": "The output of a Fabric data agent tool call." + "description": "The request of the insights." }, - "FabricDataAgentToolParameters": { + "InsightsMetadata": { "type": "object", + "required": [ + "createdAt" + ], "properties": { - "name": { + "createdAt": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "format": "date-time", + "description": "The timestamp when the insights were created." }, - "description": { + "completedAt": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "project_connections": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ToolProjectConnection" - }, - "maxItems": 1, - "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." + "format": "date-time", + "description": "The timestamp when the insights were completed." } }, - "description": "The fabric data agent tool parameters." + "description": "Metadata about the insights." }, - "FileDatasetVersion": { + "ItemGenerationParams": { "type": "object", "required": [ "type" ], "properties": { "type": { - "type": "string", - "enum": [ - "uri_file" + "allOf": [ + { + "$ref": "#/components/schemas/ItemGenerationParamsType" + } ], - "description": "Dataset type" + "description": "The type of item generation parameters to use." } }, - "allOf": [ + "discriminator": { + "propertyName": "type", + "mapping": { + "red_team": "#/components/schemas/RedTeamItemGenerationParams", + "red_team_seed_prompts": "#/components/schemas/RedTeamSeedPromptsItemGenerationParams", + "red_team_taxonomy": "#/components/schemas/RedTeamTaxonomyItemGenerationParams", + "response_retrieval": "#/components/schemas/ResponseRetrievalItemGenerationParams" + } + }, + "description": "Represents the set of parameters used to control item generation operations." + }, + "ItemGenerationParamsType": { + "anyOf": [ { - "$ref": "#/components/schemas/DatasetVersion" + "type": "string" + }, + { + "type": "string", + "enum": [ + "red_team", + "response_retrieval", + "red_team_seed_prompts", + "red_team_taxonomy", + "synthetic_data_gen_preview" + ] } ], - "description": "FileDatasetVersion Definition" + "description": "The types of parameters for red team item generation." }, - "FileDatasetVersionUpdate": { + "Job": { "type": "object", "required": [ - "type" + "name", + "properties" ], "properties": { + "name": { + "type": "string", + "description": "The name of the training job. This is case-sensitive.", + "readOnly": true + }, + "id": { + "type": "string", + "description": "The resource ID.", + "readOnly": true + }, "type": { "type": "string", - "enum": [ - "uri_file" + "description": "The resource type.", + "readOnly": true + }, + "properties": { + "allOf": [ + { + "$ref": "#/components/schemas/JobProperties" + } ], - "description": "Dataset type" + "description": "Properties of the job." + }, + "systemData": { + "allOf": [ + { + "$ref": "#/components/schemas/SystemData" + } + ], + "description": "Metadata pertaining to creation and last modification of the resource.", + "readOnly": true } }, - "allOf": [ - { - "$ref": "#/components/schemas/DatasetVersionUpdate" - } - ], - "description": "FileDatasetVersion Definition" + "description": "Training job resource." }, - "FolderDatasetVersion": { + "JobArtifact": { "type": "object", "required": [ - "type" + "path" ], "properties": { - "type": { + "path": { "type": "string", - "enum": [ - "uri_folder" + "description": "Artifact path relative to the job artifact root.", + "readOnly": true + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/JobArtifactType" + } ], - "description": "Dataset type" + "description": "Artifact type.", + "readOnly": true + }, + "size": { + "type": "integer", + "format": "int64", + "description": "Artifact size in bytes.", + "readOnly": true + }, + "createdTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the artifact was created.", + "readOnly": true + }, + "updatedTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the artifact was last updated.", + "readOnly": true } }, - "allOf": [ - { - "$ref": "#/components/schemas/DatasetVersion" - } - ], - "description": "FileDatasetVersion Definition" + "description": "Metadata for an artifact produced by or attached to a job." }, - "FolderDatasetVersionUpdate": { + "JobArtifactContentInfo": { "type": "object", "required": [ - "type" + "path" ], "properties": { - "type": { + "path": { "type": "string", - "enum": [ - "uri_folder" - ], - "description": "Dataset type" + "description": "Artifact path relative to the job artifact root.", + "readOnly": true + }, + "contentUri": { + "type": "string", + "format": "uri", + "description": "Download URI for the artifact content.", + "readOnly": true + }, + "contentType": { + "type": "string", + "description": "MIME type of the content.", + "readOnly": true + }, + "expiresAtUtc": { + "type": "string", + "format": "date-time", + "description": "Time the content URI expires.", + "readOnly": true } }, - "allOf": [ + "description": "Content access information for a job artifact." + }, + "JobArtifactType": { + "anyOf": [ { - "$ref": "#/components/schemas/DatasetVersionUpdate" + "type": "string" + }, + { + "type": "string", + "enum": [ + "File", + "Directory" + ] } ], - "description": "FileDatasetVersion Definition" + "description": "Type of a job artifact." }, - "FunctionToolCall": { + "JobCreate": { "type": "object", "required": [ "name", - "arguments" + "properties" ], "properties": { "name": { "type": "string", - "description": "The name of the function to call." + "description": "The name of the training job. This is case-sensitive." }, - "arguments": { - "type": "string", - "description": "The arguments to call the function with, as generated by the model in JSON format." + "properties": { + "allOf": [ + { + "$ref": "#/components/schemas/JobProperties" + } + ], + "description": "Properties of the job." } }, - "description": "Details of a function tool call." + "description": "Request body for creating a training job." }, - "HostedAgentDefinition": { + "JobMetric": { "type": "object", "required": [ - "kind", - "container_protocol_versions", - "cpu", - "memory" + "name" ], "properties": { - "kind": { + "name": { "type": "string", - "enum": [ - "hosted" - ] - }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" - }, - "description": "An array of tools the hosted agent's model may call while generating a response. You\ncan specify which tool to use by setting the `tool_choice` parameter." + "description": "Metric name.", + "readOnly": true }, - "container_protocol_versions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProtocolVersionRecord" - }, - "description": "The protocols that the agent supports for ingress communication of the containers.", - "example": [ - { - "protocol": "responses", - "version": "v0.1.1" - }, + "metricType": { + "allOf": [ { - "protocol": "a2a", - "version": "v0.3.0" + "$ref": "#/components/schemas/JobMetricType" } - ] - }, - "cpu": { - "type": "string", - "description": "The CPU configuration for the hosted agent.", - "example": "0.25" - }, - "memory": { - "type": "string", - "description": "The memory configuration for the hosted agent.", - "example": "0.5Gi" + ], + "description": "Metric type.", + "readOnly": true }, - "environment_variables": { + "columns": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Environment variables to set in the hosted agent container.", - "example": { - "name": "LOG_LEVEL", - "value": "debug" - } - }, - "image": { - "type": "string", - "description": "The image ID for the agent, applicable to image-based hosted agents.", - "example": "my-registry.azurecr.io/my-hosted-agent:latest" + "description": "Column metadata for structured metric values.", + "readOnly": true } }, - "allOf": [ - { - "$ref": "#/components/schemas/AgentDefinition" - } - ], - "description": "The hosted agent definition.", - "x-ms-foundry-meta": { - "required_previews": [ - "HostedAgents=V1Preview" - ] - } + "description": "Metadata for a metric emitted by a job or run." }, - "HourlyRecurrenceSchedule": { + "JobMetricAggregate": { "type": "object", "required": [ - "type" + "name" ], "properties": { - "type": { + "name": { "type": "string", - "enum": [ - "Hourly" - ] + "description": "Metric name.", + "readOnly": true + }, + "startUtc": { + "type": "string", + "format": "date-time", + "description": "Aggregate window start.", + "readOnly": true + }, + "endUtc": { + "type": "string", + "format": "date-time", + "description": "Aggregate window end.", + "readOnly": true + }, + "values": { + "type": "object", + "additionalProperties": {}, + "description": "Aggregate values.", + "readOnly": true } }, - "allOf": [ - { - "$ref": "#/components/schemas/RecurrenceSchedule" - } - ], - "description": "Hourly recurrence schedule." + "description": "Aggregated values for a metric." }, - "HumanEvaluationPreviewRuleAction": { + "JobMetricLastValue": { "type": "object", "required": [ - "type", - "templateId" + "name" ], "properties": { - "type": { + "name": { "type": "string", - "enum": [ - "humanEvaluationPreview" - ] + "description": "Metric name.", + "readOnly": true }, - "templateId": { + "value": { "allOf": [ { - "$ref": "#/components/schemas/AssetId" + "$ref": "#/components/schemas/JobMetricPoint" } ], - "description": "Human evaluation template Id." + "description": "Latest metric point.", + "readOnly": true } }, - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleAction" - } - ], - "description": "Evaluation rule action for human evaluation." + "description": "Latest value for a metric." }, - "Index": { + "JobMetricPoint": { "type": "object", - "required": [ - "type", - "name", - "version" - ], "properties": { - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/IndexType" - } - ], - "description": "Type of index" - }, - "id": { + "metricId": { "type": "string", - "description": "Asset ID, a unique identifier for the asset", + "description": "Metric identifier.", "readOnly": true }, - "name": { - "type": "string", - "description": "The name of the resource", + "step": { + "type": "integer", + "format": "int64", + "description": "Metric step.", "readOnly": true }, - "version": { + "createdUtc": { "type": "string", - "description": "The version of the resource", + "format": "date-time", + "description": "Time the metric point was created.", + "readOnly": true + }, + "data": { + "type": "object", + "additionalProperties": {}, + "description": "Metric data values.", "readOnly": true } }, - "discriminator": { - "propertyName": "type", - "mapping": { - "AzureSearch": "#/components/schemas/AzureAISearchIndex", - "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndex", - "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndex" + "description": "A metric data point." + }, + "JobMetricSample": { + "type": "object", + "required": [ + "name", + "points" + ], + "properties": { + "name": { + "type": "string", + "description": "Metric name.", + "readOnly": true + }, + "points": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricPoint" + }, + "description": "Sampled metric points.", + "readOnly": true } }, - "description": "Index resource Definition" + "description": "Sampled values for a metric." }, - "IndexType": { + "JobMetricType": { "anyOf": [ { "type": "string" @@ -14568,332 +21497,372 @@ { "type": "string", "enum": [ - "AzureSearch", - "CosmosDBNoSqlVectorStore", - "ManagedAzureSearch" + "Scalar", + "Table", + "Image" ] } - ] + ], + "description": "The kind of metric emitted by a job." }, - "IndexUpdate": { + "JobOperationError": { "type": "object", - "required": [ - "type" - ], "properties": { - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/IndexType" - } - ], - "description": "Type of index" + "code": { + "type": "string", + "description": "Machine-readable error code." }, - "description": { + "message": { "type": "string", - "description": "The asset description text." + "description": "Human-readable error message." }, - "tags": { + "details": { "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "AzureSearch": "#/components/schemas/AzureAISearchIndexUpdate", - "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndexUpdate", - "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndexUpdate" + "additionalProperties": {}, + "description": "Additional error information." } }, - "description": "Index resource Definition" + "description": "Error details for an asynchronous training job operation." }, - "Insight": { + "JobOperationResource": { "type": "object", "required": [ - "id", - "metadata", - "state", - "displayName", - "request" + "status" ], "properties": { "id": { "type": "string", - "description": "The unique identifier for the insights report.", + "description": "Operation resource ID.", "readOnly": true }, - "metadata": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightsMetadata" - } - ], - "description": "Metadata about the insights report.", + "name": { + "type": "string", + "description": "Operation name.", "readOnly": true }, - "state": { + "status": { "allOf": [ { - "$ref": "#/components/schemas/Azure.Core.Foundations.OperationState" + "$ref": "#/components/schemas/JobOperationStatus" } ], - "description": "The current state of the insights.", + "description": "Operation status.", "readOnly": true }, - "displayName": { + "properties": { + "type": "object", + "additionalProperties": {}, + "description": "Operation result properties.", + "readOnly": true + }, + "startTime": { "type": "string", - "description": "User friendly display name for the insight." + "format": "date-time", + "description": "Operation start time.", + "readOnly": true }, - "request": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightRequest" - } - ], - "description": "Request for the insights analysis." + "endTime": { + "type": "string", + "format": "date-time", + "description": "Operation end time.", + "readOnly": true }, - "result": { + "percentComplete": { + "type": "number", + "format": "double", + "description": "Operation completion percentage from 0 to 100.", + "readOnly": true + }, + "error": { "allOf": [ { - "$ref": "#/components/schemas/InsightResult" + "$ref": "#/components/schemas/JobOperationError" } ], - "description": "The result of the insights report.", + "description": "Operation error information.", "readOnly": true } }, - "description": "The response body for cluster insights." + "description": "Asynchronous training job operation resource." }, - "InsightCluster": { - "type": "object", - "required": [ - "id", - "label", - "suggestion", - "suggestionTitle", - "description", - "weight" - ], - "properties": { - "id": { - "type": "string", - "description": "The id of the analysis cluster." - }, - "label": { - "type": "string", - "description": "Label for the cluster" - }, - "suggestion": { - "type": "string", - "description": "Suggestion for the cluster" - }, - "suggestionTitle": { - "type": "string", - "description": "The title of the suggestion for the cluster" - }, - "description": { - "type": "string", - "description": "Description of the analysis cluster." - }, - "weight": { - "type": "integer", - "format": "int32", - "description": "The weight of the analysis cluster. This indicate number of samples in the cluster." - }, - "subClusters": { - "description": "List of subclusters within this cluster. Empty if no subclusters exist.", - "type": "array", - "items": { - "$ref": "#/components/schemas/InsightCluster" - } + "JobOperationStatus": { + "anyOf": [ + { + "type": "string" }, - "samples": { - "type": "array", - "items": { - "$ref": "#/components/schemas/InsightSample" - }, - "description": "List of samples that belong to this cluster. Empty if samples are part of subclusters." - } - }, - "description": "A cluster of analysis samples." - }, - "InsightModelConfiguration": { - "type": "object", - "required": [ - "modelDeploymentName" - ], - "properties": { - "modelDeploymentName": { + { "type": "string", - "description": "The model deployment to be evaluated. Accepts either the deployment name alone or with the connection name as '{connectionName}/'." + "enum": [ + "InProgress", + "Deleting", + "Succeeded", + "Failed", + "Canceled" + ] } - }, - "description": "Configuration of the model used in the insight generation." + ], + "description": "Status of an asynchronous training job operation." }, - "InsightRequest": { + "JobOutputReference": { "type": "object", "required": [ - "type" + "name" ], "properties": { + "name": { + "type": "string", + "description": "Output name.", + "readOnly": true + }, "type": { "allOf": [ { - "$ref": "#/components/schemas/InsightType" + "$ref": "#/components/schemas/AssetTypes" } ], - "description": "The type of request." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightRequest", - "AgentClusterInsight": "#/components/schemas/AgentClusterInsightRequest", - "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightRequest" + "description": "Output asset type.", + "readOnly": true + }, + "mode": { + "allOf": [ + { + "$ref": "#/components/schemas/InputOutputModes" + } + ], + "description": "Output delivery mode.", + "readOnly": true + }, + "uri": { + "type": "string", + "description": "Output storage URI.", + "readOnly": true + }, + "assetName": { + "type": "string", + "description": "Registered asset name, if the output produced an asset.", + "readOnly": true + }, + "assetVersion": { + "type": "string", + "description": "Registered asset version, if the output produced an asset.", + "readOnly": true + }, + "baseModelId": { + "type": "string", + "description": "Base model ID for model outputs.", + "readOnly": true + }, + "description": { + "type": "string", + "description": "Output description.", + "readOnly": true } }, - "description": "The request of the insights report." + "description": "Named output produced by a job." }, - "InsightResult": { + "JobProperties": { "type": "object", "required": [ - "type" + "jobType" ], "properties": { - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightType" - } - ], - "description": "The type of insights result." + "jobType": { + "type": "string", + "description": "Job type." } }, "discriminator": { - "propertyName": "type", + "propertyName": "jobType", "mapping": { - "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightResult", - "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightResult", - "AgentClusterInsight": "#/components/schemas/AgentClusterInsightResult" + "Command": "#/components/schemas/CommandJob" } }, - "description": "The result of the insights." + "description": "Base properties of a Job." }, - "InsightSample": { + "JobResourceConfiguration": { + "type": "object", + "properties": { + "instanceCount": { + "type": "integer", + "format": "int32", + "description": "Optional number of instances or nodes used by the compute target." + }, + "instanceType": { + "type": "string", + "description": "Optional type of VM used as supported by the compute target." + }, + "properties": { + "type": "object", + "additionalProperties": {}, + "description": "Additional properties bag." + }, + "shmSize": { + "type": "string", + "description": "Size of the docker container's shared memory block. This should be in the format of (number)(unit) where number as to be greater than 0 and the unit can be one of b(bytes), k(kilobytes), m(megabytes), or g(gigabytes)." + }, + "dockerArgs": { + "type": "string", + "description": "Extra arguments to pass to the Docker run command. This would override any parameters that have already been set by the system, or in this section. This parameter is only supported for Azure ML compute types." + } + }, + "description": "Compute Resource configuration for the job." + }, + "JobRun": { "type": "object", "required": [ "id", - "type", - "features", - "correlationInfo" + "jobName" ], "properties": { "id": { "type": "string", - "description": "The unique identifier for the analysis sample." + "description": "The run identifier.", + "readOnly": true }, - "type": { + "jobName": { + "type": "string", + "description": "The job name this run belongs to.", + "readOnly": true + }, + "status": { "allOf": [ { - "$ref": "#/components/schemas/SampleType" + "$ref": "#/components/schemas/JobRunStatus" } ], - "description": "Sample type" + "description": "The run status.", + "readOnly": true }, - "features": { - "type": "object", - "additionalProperties": {}, - "description": "Features to help with additional filtering of data in UX." + "statusReason": { + "type": "string", + "description": "Additional status reason.", + "readOnly": true }, - "correlationInfo": { + "startTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the run started.", + "readOnly": true + }, + "endTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the run ended.", + "readOnly": true + }, + "lastStartTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Most recent time the run started running.", + "readOnly": true + }, + "computeDuration": { + "type": "string", + "format": "duration", + "description": "Total compute duration consumed by the run.", + "readOnly": true + }, + "queueingInfo": { "type": "object", "additionalProperties": {}, - "description": "Info about the correlation for the analysis sample." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "EvaluationResultSample": "#/components/schemas/EvaluationResultSample" - } - }, - "description": "A sample from the analysis." - }, - "InsightScheduleTask": { - "type": "object", - "required": [ - "type", - "insight" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Insight" - ] + "description": "Queueing details associated with the run.", + "readOnly": true }, - "insight": { + "computeDetails": { "allOf": [ { - "$ref": "#/components/schemas/Insight" + "$ref": "#/components/schemas/JobRunComputeDetails" } ], - "description": "The insight payload." + "description": "Compute details associated with the run.", + "readOnly": true + }, + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/JobRunError" + } + ], + "description": "Terminal error for the run, if any.", + "readOnly": true + }, + "warnings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobRunWarning" + }, + "description": "Warnings emitted for the run.", + "readOnly": true + }, + "isCurrent": { + "type": "boolean", + "description": "Whether this run is the current run for the job.", + "readOnly": true } }, - "allOf": [ - { - "$ref": "#/components/schemas/ScheduleTask" - } - ], - "description": "Insight task for the schedule." + "description": "One execution run of a training job." }, - "InsightSummary": { + "JobRunComputeDetails": { "type": "object", - "required": [ - "sampleCount", - "uniqueSubclusterCount", - "uniqueClusterCount", - "method", - "usage" - ], "properties": { - "sampleCount": { - "type": "integer", - "format": "int32", - "description": "Total number of samples analyzed." + "vmSize": { + "type": "string", + "description": "Virtual machine size used for this run attempt.", + "readOnly": true }, - "uniqueSubclusterCount": { + "instanceType": { + "type": "string", + "description": "Instance type used for this run attempt.", + "readOnly": true + }, + "instanceCount": { "type": "integer", "format": "int32", - "description": "Total number of unique subcluster labels." + "description": "Number of instances allocated to this run attempt.", + "readOnly": true }, - "uniqueClusterCount": { + "gpuCount": { "type": "integer", "format": "int32", - "description": "Total number of unique clusters." + "description": "Number of GPUs allocated to this run attempt.", + "readOnly": true }, - "method": { + "region": { "type": "string", - "description": "Method used for clustering." + "description": "Region where this run attempt was placed.", + "readOnly": true }, - "usage": { - "allOf": [ - { - "$ref": "#/components/schemas/ClusterTokenUsage" - } - ], - "description": "Token usage while performing clustering analysis" + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional backend-specific compute placement properties.", + "readOnly": true } }, - "description": "Summary of the error cluster analysis." + "description": "Compute placement details for a job run attempt." }, - "InsightType": { + "JobRunError": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable error code." + }, + "message": { + "type": "string", + "description": "Human-readable error message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional error details." + } + }, + "description": "Error emitted during a job run." + }, + "JobRunStatus": { "anyOf": [ { "type": "string" @@ -14901,60 +21870,50 @@ { "type": "string", "enum": [ - "EvaluationRunClusterInsight", - "AgentClusterInsight", - "EvaluationComparison" + "Queued", + "Running", + "Completed", + "Failed", + "Canceled" ] } ], - "description": "The request of the insights." + "description": "Status of a job execution run." }, - "InsightsMetadata": { + "JobRunWarning": { "type": "object", - "required": [ - "createdAt" - ], "properties": { - "createdAt": { + "code": { "type": "string", - "format": "date-time", - "description": "The timestamp when the insights were created." + "description": "Machine-readable warning code." }, - "completedAt": { + "message": { "type": "string", - "format": "date-time", - "description": "The timestamp when the insights were completed." + "description": "Human-readable warning message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional warning details." } }, - "description": "Metadata about the insights." + "description": "Warning emitted during a job run." }, - "ItemGenerationParams": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/ItemGenerationParamsType" - } - ], - "description": "The type of item generation parameters to use." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "red_team": "#/components/schemas/RedTeamItemGenerationParams", - "red_team_seed_prompts": "#/components/schemas/RedTeamSeedPromptsItemGenerationParams", - "red_team_taxonomy": "#/components/schemas/RedTeamTaxonomyItemGenerationParams", - "response_retrieval": "#/components/schemas/ResponseRetrievalItemGenerationParams" + "JobType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Command" + ] } - }, - "description": "Represents the set of parameters used to control item generation operations." + ], + "description": "Type of a job." }, - "ItemGenerationParamsType": { + "ListViewType": { "anyOf": [ { "type": "string" @@ -14962,15 +21921,13 @@ { "type": "string", "enum": [ - "red_team", - "response_retrieval", - "red_team_seed_prompts", - "red_team_taxonomy", - "synthetic_data_gen_preview" + "ActiveOnly", + "ArchivedOnly", + "All" ] } ], - "description": "The types of parameters for red team item generation." + "description": "Specifies which jobs to include in a list result based on their lifecycle state." }, "ManagedAzureAISearchIndex": { "type": "object", @@ -15744,6 +22701,16 @@ ], "description": "The input definition information for a Microsoft Fabric tool as used to configure an agent." }, + "Mlflow.MlflowPayload": { + "type": "object", + "additionalProperties": {}, + "description": "Generic MLflow compatibility request payload." + }, + "Mlflow.MlflowResponse": { + "type": "object", + "additionalProperties": {}, + "description": "Generic MLflow compatibility response payload." + }, "ModelDeployment": { "type": "object", "required": [ @@ -15895,6 +22862,32 @@ ], "description": "Monthly recurrence schedule." }, + "MpiDistribution": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "enum": [ + "Mpi" + ], + "description": "Specifies the type of distribution framework." + }, + "processCountPerNode": { + "type": "integer", + "format": "int32", + "description": "Number of processes per MPI node." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "MPI distribution configuration." + }, "NoAuthenticationCredentials": { "type": "object", "required": [ @@ -35686,6 +42679,51 @@ ], "description": "The output of an OpenAPI tool call." }, + "Output": { + "type": "object", + "required": [ + "jobOutputType" + ], + "properties": { + "jobOutputType": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypes" + } + ], + "description": "Specifies the type of job output." + }, + "mode": { + "allOf": [ + { + "$ref": "#/components/schemas/InputOutputModes" + } + ], + "description": "Output Asset Delivery Mode." + }, + "assetName": { + "type": "string", + "description": "Name of the output data asset to register." + }, + "assetVersion": { + "type": "string", + "description": "Version of the output data asset to register." + }, + "uri": { + "type": "string", + "description": "Output Asset URI." + }, + "baseModelId": { + "type": "string", + "description": "Base model ID. Applies to safetensors_model outputs." + }, + "description": { + "type": "string", + "description": "Description for the output." + } + }, + "description": "Job output definition." + }, "PageOrder": { "type": "string", "enum": [ @@ -35861,6 +42899,195 @@ }, "description": "Paged collection of Insight items" }, + "PagedJob": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Job" + }, + "description": "The Job items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of Job items" + }, + "PagedJobArtifact": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobArtifact" + }, + "description": "The JobArtifact items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobArtifact items" + }, + "PagedJobArtifactContentInfo": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobArtifactContentInfo" + }, + "description": "The JobArtifactContentInfo items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobArtifactContentInfo items" + }, + "PagedJobMetric": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetric" + }, + "description": "The JobMetric items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetric items" + }, + "PagedJobMetricAggregate": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricAggregate" + }, + "description": "The JobMetricAggregate items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetricAggregate items" + }, + "PagedJobMetricLastValue": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricLastValue" + }, + "description": "The JobMetricLastValue items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetricLastValue items" + }, + "PagedJobMetricPoint": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricPoint" + }, + "description": "The JobMetricPoint items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetricPoint items" + }, + "PagedJobOutputReference": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobOutputReference" + }, + "description": "The JobOutputReference items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobOutputReference items" + }, + "PagedJobRun": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobRun" + }, + "description": "The JobRun items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobRun items" + }, "PagedRedTeam": { "type": "object", "required": [ @@ -36128,6 +43355,42 @@ }, "description": "A record mapping for a single protocol and its version." }, + "PyTorchDistribution": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "enum": [ + "PyTorch" + ], + "description": "Specifies the type of distribution framework." + }, + "processCountPerInstance": { + "type": "integer", + "format": "int32", + "description": "Number of processes per node." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "PyTorch distribution configuration." + }, + "QueueSettings": { + "type": "object", + "properties": { + "jobTier": { + "type": "string", + "description": "Controls the compute job tier." + } + }, + "description": "Queue settings for the job." + }, "RaiConfig": { "type": "object", "required": [ @@ -37192,6 +44455,44 @@ } ] }, + "SystemData": { + "type": "object", + "properties": { + "createdBy": { + "type": "string", + "description": "The identity that created the resource.", + "readOnly": true + }, + "createdByType": { + "type": "string", + "description": "The type of identity that created the resource.", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "The timestamp of resource creation (UTC).", + "readOnly": true + }, + "lastModifiedBy": { + "type": "string", + "description": "The identity that last modified the resource.", + "readOnly": true + }, + "lastModifiedByType": { + "type": "string", + "description": "The type of identity that last modified the resource.", + "readOnly": true + }, + "lastModifiedAt": { + "type": "string", + "format": "date-time", + "description": "The timestamp of resource last modification (UTC).", + "readOnly": true + } + }, + "description": "Metadata pertaining to creation and last modification of the resource." + }, "Target": { "type": "object", "required": [ @@ -37381,6 +44682,37 @@ }, "description": "Taxonomy sub-category definition." }, + "TensorFlowDistribution": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "enum": [ + "TensorFlow" + ], + "description": "Specifies the type of distribution framework." + }, + "workerCount": { + "type": "integer", + "format": "int32", + "description": "Number of workers. If not specified, will default to the instance count." + }, + "parameterServerCount": { + "type": "integer", + "format": "int32", + "description": "Number of parameter server tasks." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "TensorFlow distribution configuration." + }, "ToolCallOutputContent": { "anyOf": [ { @@ -37560,6 +44892,450 @@ ], "description": "Represents a data source for evaluation runs that operate over Agent traces stored in Application Insights." }, + "TrainingAlgorithm": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Sft", + "Dpo", + "Kto", + "Orpo", + "Cpo", + "SimPo", + "Grpo", + "Ppo", + "Rloo", + "ReinforcePp", + "RewardModel" + ] + } + ], + "description": "Training algorithm used by a declarative training job." + }, + "TrainingColumnMapping": { + "type": "object", + "properties": { + "prompt": { + "type": "string", + "description": "Column containing prompts." + }, + "chosen": { + "type": "string", + "description": "Column containing chosen responses for preference training." + }, + "rejected": { + "type": "string", + "description": "Column containing rejected responses for preference training." + }, + "reference": { + "type": "string", + "description": "Column containing reference answers or reward context." + }, + "messages": { + "type": "string", + "description": "Column containing chat messages." + } + }, + "description": "Mapping from logical training fields to columns in the dataset." + }, + "TrainingConfiguration": { + "type": "object", + "required": [ + "algorithm", + "model", + "dataset" + ], + "properties": { + "algorithm": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingAlgorithm" + } + ], + "description": "Training algorithm." + }, + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework. If omitted, the service selects a compatible framework." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "reward": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Reward signal configuration." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "description": "Declarative training recipe. When specified, command must be omitted and environmentImageReference is optional." + }, + "TrainingDataFormatConfiguration": { + "type": "object", + "properties": { + "chatTemplate": { + "allOf": [ + { + "$ref": "#/components/schemas/ChatTemplate" + } + ], + "description": "Built-in chat template to apply to the dataset." + }, + "chatTemplatePath": { + "type": "string", + "description": "Path to a custom chat template relative to the job's code directory." + } + }, + "description": "Formatting options for conversational training data." + }, + "TrainingDatasetConfiguration": { + "type": "object", + "required": [ + "train" + ], + "properties": { + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingColumnMapping" + } + ], + "description": "Mapping from training fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "description": "Dataset configuration for a declarative training job." + }, + "TrainingEntryPointReference": { + "type": "object", + "required": [ + "entryPoint" + ], + "properties": { + "entryPoint": { + "type": "string", + "description": "Path to the Python callable in module/file.py:function format." + } + }, + "description": "Reference to a Python callable relative to the job's code directory." + }, + "TrainingEvalBenchmark": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Gsm8k", + "Mmlu", + "Humaneval", + "Mbpp", + "Arc", + "Hellaswag" + ] + } + ], + "description": "Built-in evaluation benchmark." + }, + "TrainingEvalConfiguration": { + "type": "object", + "properties": { + "benchmark": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalBenchmark" + } + ], + "description": "Named built-in benchmark. Mutually exclusive with dataset." + }, + "dataset": { + "type": "string", + "description": "Custom evaluation dataset asset reference. Mutually exclusive with benchmark." + }, + "everyNSteps": { + "type": "integer", + "format": "int32", + "description": "Evaluation frequency in training steps. Omit for end-of-training only." + } + }, + "description": "Evaluation configuration for a declarative training job." + }, + "TrainingFramework": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Trl", + "Verl", + "OpenRlhf", + "NemoRl", + "Slime", + "TorchForge" + ] + } + ], + "description": "Training framework used to lower a declarative training job into an execution command." + }, + "TrainingInlineFunctionConfiguration": { + "type": "object", + "required": [ + "def" + ], + "properties": { + "def": { + "type": "string", + "description": "Python function definition." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingInlineFunctionRuntime" + } + ], + "description": "Runtime dependencies for the inline function." + } + }, + "description": "Inline Python function definition for custom training logic." + }, + "TrainingInlineFunctionRuntime": { + "type": "object", + "properties": { + "pip": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Pip packages to install before invoking the inline function." + } + }, + "description": "Python runtime dependencies for an inline function." + }, + "TrainingJobService": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Service type.", + "readOnly": true + }, + "port": { + "type": "integer", + "format": "int32", + "description": "Service port.", + "readOnly": true + }, + "status": { + "type": "string", + "description": "Service status.", + "readOnly": true + }, + "error": { + "type": "object", + "additionalProperties": {}, + "description": "Terminal error for the service, if any.", + "readOnly": true + }, + "endpoint": { + "type": "string", + "description": "Service endpoint URI.", + "readOnly": true + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional service properties.", + "readOnly": true + } + }, + "description": "Service endpoint details for a training job." + }, + "TrainingJobServiceCollection": { + "type": "object", + "required": [ + "services" + ], + "properties": { + "services": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TrainingJobService" + }, + "description": "Services keyed by service name.", + "readOnly": true + } + }, + "description": "Services exposed by a training job." + }, + "TrainingLoraConfiguration": { + "type": "object", + "required": [ + "rank" + ], + "properties": { + "rank": { + "type": "integer", + "format": "int32", + "description": "Low-rank dimension." + }, + "alpha": { + "type": "integer", + "format": "int32", + "description": "LoRA scaling factor." + }, + "dropout": { + "type": "number", + "format": "double", + "description": "Dropout applied to adapter inputs.", + "default": 0.05 + }, + "targetModules": { + "type": "string", + "description": "Linear layers that receive adapters. Use 'auto' to let the framework choose defaults.", + "default": "auto" + }, + "quantize": { + "type": "boolean", + "description": "Whether to enable QLoRA 4-bit base weight loading.", + "default": false + } + }, + "description": "LoRA adapter configuration for parameter-efficient fine tuning." + }, + "TrainingRewardConfiguration": { + "type": "object", + "properties": { + "model": { + "type": "string", + "description": "Reward model asset reference." + }, + "function": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEntryPointReference" + } + ], + "description": "Python callable used to compute reward scores." + }, + "inline_function": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingInlineFunctionConfiguration" + } + ], + "description": "Inline Python function used to compute reward scores." + } + }, + "description": "Reward signal configuration for reinforcement or reward model training." + }, + "TrainingRolloutConfiguration": { + "type": "object", + "required": [ + "engine" + ], + "properties": { + "engine": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutEngine" + } + ], + "description": "Rollout inference engine." + }, + "tensorParallelSize": { + "type": "integer", + "format": "int32", + "description": "Tensor parallel size used by the rollout engine.", + "default": 1 + }, + "gpuMemoryUtilization": { + "type": "number", + "format": "double", + "description": "GPU memory utilization target for the rollout engine, between 0.0 and 1.0." + } + }, + "description": "Rollout generation configuration for online reinforcement learning." + }, + "TrainingRolloutEngine": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Vllm", + "Sglang", + "Hf", + "MegatronInference" + ] + } + ], + "description": "Inference engine used for rollout generation during online reinforcement learning." + }, "TreatmentEffectType": { "anyOf": [ { diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 4d2fd9278d8d..636f9a707746 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -5,6 +5,24 @@ "version": "virtual-public-preview" }, "tags": [ + { + "name": "MLflow Experiments" + }, + { + "name": "MLflow Runs" + }, + { + "name": "MLflow Metrics" + }, + { + "name": "MLflow Artifacts" + }, + { + "name": "MLflow Registered Models" + }, + { + "name": "MLflow Model Versions" + }, { "name": "Agents" }, @@ -67,6 +85,9 @@ }, { "name": "Toolsets" + }, + { + "name": "TrainingJobs" } ], "paths": { @@ -7105,108 +7126,46 @@ } } }, - "/openai/v1/conversations": { - "post": { - "operationId": "createConversation", - "description": "Create a conversation.", - "parameters": [], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Conversations" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateConversationBody" - } - } - } - } - }, + "/mlflow/api/2.0/mlflow/artifacts/list": { "get": { - "operationId": "listConversations", - "description": "Returns the list of all conversations.", + "operationId": "Artifacts_list", + "description": "List MLflow artifacts.", "parameters": [ { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", + "name": "run_id", "in": "query", "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "description": "MLflow run identifier.", "schema": { "type": "string" }, "explode": false }, { - "name": "before", + "name": "run_uuid", "in": "query", "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "description": "MLflow run UUID.", "schema": { "type": "string" }, "explode": false }, { - "name": "agent_name", + "name": "path", "in": "query", "required": false, - "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", + "description": "Artifact path to list.", "schema": { "type": "string" }, "explode": false }, { - "name": "agent_id", + "name": "api-version", "in": "query", - "required": false, - "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, @@ -7219,33 +7178,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7262,23 +7195,24 @@ } }, "tags": [ - "Conversations" + "MLflow Artifacts" ] } }, - "/openai/v1/conversations/{conversation_id}": { + "/mlflow/api/2.0/mlflow/experiments/create": { "post": { - "operationId": "updateConversation", - "description": "Update a conversation.", + "operationId": "Experiments_create", + "description": "Create an MLflow experiment.", "parameters": [ { - "name": "conversation_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The id of the conversation to update.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -7287,7 +7221,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7304,31 +7238,34 @@ } }, "tags": [ - "Conversations" + "MLflow Experiments" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.UpdateConversationBody" + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } } - }, - "get": { - "operationId": "getConversation", - "description": "Retrieves a conversation.", + } + }, + "/mlflow/api/2.0/mlflow/experiments/delete": { + "post": { + "operationId": "Experiments_delete", + "description": "Delete an MLflow experiment.", "parameters": [ { - "name": "conversation_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The id of the conversation to retrieve.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -7337,7 +7274,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7354,21 +7291,54 @@ } }, "tags": [ - "Conversations" - ] - }, - "delete": { - "operationId": "deleteConversation", - "description": "Deletes a conversation.", + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/get": { + "get": { + "operationId": "Experiments_get", + "description": "Get an MLflow experiment by ID.", "parameters": [ { - "name": "conversation_id", - "in": "path", + "name": "experiment_id", + "in": "query", + "required": false, + "description": "MLflow experiment identifier.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "experiment_name", + "in": "query", + "required": false, + "description": "MLflow experiment name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", "required": true, - "description": "The id of the conversation to delete.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -7377,7 +7347,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.DeletedConversationResource" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7394,34 +7364,42 @@ } }, "tags": [ - "Conversations" + "MLflow Experiments" ] } }, - "/openai/v1/conversations/{conversation_id}/items": { - "post": { - "operationId": "createConversationItems", - "description": "Create items in a conversation with the given ID.", + "/mlflow/api/2.0/mlflow/experiments/get-by-name": { + "get": { + "operationId": "Experiments_getByName", + "description": "Get an MLflow experiment by name.", "parameters": [ { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation on which the item needs to be created.", + "name": "experiment_id", + "in": "query", + "required": false, + "description": "MLflow experiment identifier.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "include", + "name": "experiment_name", "in": "query", "required": false, - "description": "Additional fields to include in the response.\nSee the `include` parameter for listing Conversation items for more information.", + "description": "MLflow experiment name.", "schema": { - "type": "array", - "items": { - "type": "string" - } + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" }, "explode": false } @@ -7432,7 +7410,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationItemList" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7449,94 +7427,53 @@ } }, "tags": [ - "Conversations" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Item" - }, - "maxItems": 20, - "description": "The items to add to the conversation. You may add up to 20 items at a time." - } - }, - "required": [ - "items" - ] - } - } - } - } - }, + "MLflow Experiments" + ] + } + }, + "/mlflow/api/2.0/mlflow/experiments/list": { "get": { - "operationId": "listConversationItems", - "description": "List all items for a conversation with the given ID.", + "operationId": "Experiments_list", + "description": "List MLflow experiments.", "parameters": [ { - "name": "conversation_id", - "in": "path", - "required": true, - "description": "The id of the conversation on which the items needs to be listed.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", + "name": "max_results", "in": "query", "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "description": "Maximum number of items to return.", "schema": { "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" + "format": "int32" }, "explode": false }, { - "name": "after", + "name": "page_token", "in": "query", "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "description": "Token used to retrieve the next page of results.", "schema": { "type": "string" }, "explode": false }, { - "name": "before", + "name": "view_type", "in": "query", "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "description": "Experiment lifecycle stage filter.", "schema": { "type": "string" }, "explode": false }, { - "name": "item_type", + "name": "api-version", "in": "query", - "required": false, - "description": "Filter by item type. If provided, only items of the specified type will be returned.", + "required": true, + "description": "The API version to use for this operation.", "schema": { - "$ref": "#/components/schemas/OpenAI.ItemType" + "type": "string" }, "explode": false } @@ -7547,33 +7484,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.OutputItem" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7590,32 +7501,77 @@ } }, "tags": [ - "Conversations" + "MLflow Experiments" ] } }, - "/openai/v1/conversations/{conversation_id}/items/{item_id}": { - "get": { - "operationId": "getConversationItem", - "description": "Get a single item from a conversation with the given IDs.", + "/mlflow/api/2.0/mlflow/experiments/restore": { + "post": { + "operationId": "Experiments_restore", + "description": "Restore a deleted MLflow experiment.", "parameters": [ { - "name": "conversation_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the conversation that contains the item.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/search": { + "post": { + "operationId": "Experiments_search", + "description": "Search MLflow experiments.", + "parameters": [ { - "name": "item_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The id of the conversation item to retrieve.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -7624,7 +7580,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7641,30 +7597,87 @@ } }, "tags": [ - "Conversations" - ] - }, - "delete": { - "operationId": "deleteConversationItem", - "description": "Delete an item from a conversation with the given IDs.", + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/set-experiment-tag": { + "post": { + "operationId": "Experiments_setTag", + "description": "Set an MLflow experiment tag.", "parameters": [ { - "name": "conversation_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The id of the conversation on which the item needs to be deleted from.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/experiments/update": { + "post": { + "operationId": "Experiments_update", + "description": "Update MLflow experiment metadata.", + "parameters": [ { - "name": "item_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The id of the conversation item to delete.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -7673,7 +7686,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ConversationResource" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7690,104 +7703,94 @@ } }, "tags": [ - "Conversations" - ] + "MLflow Experiments" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/evals": { + "/mlflow/api/2.0/mlflow/metrics/get-history": { "get": { - "operationId": "Evals_listEvals", - "summary": "List all evaluations", - "description": "List evaluations for a project.", + "operationId": "Metrics_getHistory", + "description": "Get MLflow metric history.", "parameters": [ { - "name": "after", + "name": "run_id", "in": "query", "required": false, - "description": "Identifier for the last run from the previous pagination request.", + "description": "MLflow run identifier.", "schema": { "type": "string" }, "explode": false }, { - "name": "limit", + "name": "run_uuid", "in": "query", "required": false, - "description": "Number of runs to retrieve.", + "description": "MLflow run UUID.", "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 + "type": "string" }, "explode": false }, { - "name": "order", + "name": "metric_key", "in": "query", "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", + "description": "Metric key.", "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" + "type": "string" }, "explode": false }, { - "name": "order_by", + "name": "max_results", "in": "query", "required": false, - "description": "Evals can be ordered by creation time or last updated time.\nUse `created_at` for creation time or `updated_at` for last updated time.", + "description": "Maximum number of metric points to return.", "schema": { - "type": "string", - "enum": [ - "created_at", - "updated_at" - ], - "default": "created_at" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Eval" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "page_token", + "in": "query", + "required": false, + "description": "Token used to retrieve the next page of metric points.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7804,21 +7807,33 @@ } }, "tags": [ - "Evals" + "MLflow Metrics" ] - }, + } + }, + "/mlflow/api/2.0/mlflow/model-versions/create": { "post": { - "operationId": "Evals_createEval", - "summary": "Create evaluation", - "description": "Create the structure of an evaluation that can be used to test a model's performance.\nAn evaluation is a set of testing criteria and the config for a data source, which dictates the schema of the data used in the evaluation. After creating an evaluation, you can run it on different models and model parameters. We support several types of graders and datasources.\nFor more information, see the [Evals guide](https://platform.openai.com/docs/guides/evals).", - "parameters": [], + "operationId": "ModelVersions_create", + "description": "Create an MLflow model version.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Eval" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7835,34 +7850,34 @@ } }, "tags": [ - "Evals" + "MLflow Model Versions" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateEvalRequest" + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } } } }, - "/openai/v1/evals/{eval_id}": { + "/mlflow/api/2.0/mlflow/model-versions/delete": { "delete": { - "operationId": "Evals_deleteEval", - "summary": "Delete an evaluation", - "description": "Delete an evaluation.", + "operationId": "ModelVersions_delete", + "description": "Delete an MLflow model version.", "parameters": [ { - "name": "eval_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the evaluation to delete.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -7871,7 +7886,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteEvalResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7888,22 +7903,34 @@ } }, "tags": [ - "Evals" - ] - }, - "get": { - "operationId": "Evals_getEval", - "summary": "Get an evaluation", - "description": "Get an evaluation by ID.", + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/delete-tag": { + "delete": { + "operationId": "ModelVersions_deleteTag", + "description": "Delete an MLflow model-version tag.", "parameters": [ { - "name": "eval_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the evaluation to retrieve.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -7912,7 +7939,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Eval" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7929,22 +7956,54 @@ } }, "tags": [ - "Evals" - ] - }, - "post": { - "operationId": "Evals_updateEval", - "summary": "Update an evaluation", - "description": "Update certain properties of an evaluation.", + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/get": { + "get": { + "operationId": "ModelVersions_get", + "description": "Get an MLflow model version.", "parameters": [ { - "name": "eval_id", - "in": "path", + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "version", + "in": "query", + "required": false, + "description": "Model version.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the evaluation to update.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -7953,7 +8012,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Eval" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -7970,89 +8029,189 @@ } }, "tags": [ - "Evals" + "MLflow Model Versions" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/get-download-uri": { + "get": { + "operationId": "ModelVersions_getDownloadUri", + "description": "Get an MLflow model version download URI.", + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "version", + "in": "query", + "required": false, + "description": "Model version.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateEvalParametersBody" + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } } } } - } + }, + "tags": [ + "MLflow Model Versions" + ] } }, - "/openai/v1/evals/{eval_id}/runs": { + "/mlflow/api/2.0/mlflow/model-versions/get-storage-location-uri": { "get": { - "operationId": "Evals_listRuns", - "summary": "Get a list of runs for an evaluation", - "description": "Get a list of runs for an evaluation.", + "operationId": "ModelVersions_getStorageLocationUri", + "description": "Get an MLflow model version storage location URI.", "parameters": [ { - "name": "eval_id", - "in": "path", + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "version", + "in": "query", + "required": false, + "description": "Model version.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the evaluation to retrieve runs for.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Model Versions" + ] + } + }, + "/mlflow/api/2.0/mlflow/model-versions/search": { + "get": { + "operationId": "ModelVersions_search", + "description": "Search MLflow model versions.", + "parameters": [ { - "name": "after", + "name": "max_results", "in": "query", "required": false, - "description": "Identifier for the last run from the previous pagination request.", + "description": "Maximum number of items to return.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" }, "explode": false }, { - "name": "limit", + "name": "page_token", "in": "query", "required": false, - "description": "Number of runs to retrieve.", + "description": "Token used to retrieve the next page of results.", "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 + "type": "string" }, "explode": false }, { - "name": "order", + "name": "filter", "in": "query", "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", + "description": "Model version search filter.", "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" + "type": "string" }, "explode": false }, { - "name": "status", + "name": "order_by", "in": "query", "required": false, - "description": "Filter runs by status. One of `queued` | `in_progress` | `failed` | `completed` | `canceled`.", + "description": "Model version ordering expression.", "schema": { - "type": "string", - "enum": [ - "queued", - "in_progress", - "completed", - "canceled", - "failed" - ] + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" }, "explode": false } @@ -8063,33 +8222,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRun" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8106,21 +8239,22 @@ } }, "tags": [ - "Evals" + "MLflow Model Versions" ] }, "post": { - "operationId": "Evals_createEvalRun", - "summary": "Create evaluation run", + "operationId": "ModelVersions_searchWithFilter", + "description": "Search MLflow model versions with search options in the request body.", "parameters": [ { - "name": "eval_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the evaluation to create a run for.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -8129,7 +8263,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRun" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8146,43 +8280,34 @@ } }, "tags": [ - "Evals" + "MLflow Model Versions" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateEvalRunRequest" + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } } } }, - "/openai/v1/evals/{eval_id}/runs/{run_id}": { - "delete": { - "operationId": "Evals_deleteEvalRun", - "summary": "Delete evaluation run", - "description": "Delete an eval run.", + "/mlflow/api/2.0/mlflow/model-versions/set-tag": { + "post": { + "operationId": "ModelVersions_setTag", + "description": "Set an MLflow model-version tag.", "parameters": [ { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to delete the run from.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the run to delete.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -8191,7 +8316,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteEvalRunResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8208,31 +8333,34 @@ } }, "tags": [ - "Evals" - ] - }, - "get": { - "operationId": "Evals_getEvalRun", - "summary": "Get an evaluation run", - "description": "Get an evaluation run by ID.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to retrieve runs for.", - "schema": { - "type": "string" + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } } - }, + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/transition-stage": { + "post": { + "operationId": "ModelVersions_transitionStage", + "description": "Transition an MLflow model version stage.", + "parameters": [ { - "name": "run_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the run to retrieve.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -8241,7 +8369,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRun" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8258,31 +8386,34 @@ } }, "tags": [ - "Evals" - ] - }, - "post": { - "operationId": "Evals_cancelEvalRun", - "summary": "Cancel evaluation run", - "description": "Cancel an ongoing evaluation run.", - "parameters": [ - { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation whose run you want to cancel.", - "schema": { - "type": "string" + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } } - }, + } + } + } + }, + "/mlflow/api/2.0/mlflow/model-versions/update": { + "patch": { + "operationId": "ModelVersions_update", + "description": "Update an MLflow model version.", + "parameters": [ { - "name": "run_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the run to cancel.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -8291,7 +8422,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRun" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8308,85 +8439,34 @@ } }, "tags": [ - "Evals" - ] + "MLflow Model Versions" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items": { - "get": { - "operationId": "Evals_getEvalRunOutputItems", - "summary": "Get evaluation run output items", - "description": "Get a list of output items for an evaluation run.", + "/mlflow/api/2.0/mlflow/registered-models/create": { + "post": { + "operationId": "RegisteredModels_create", + "description": "Create an MLflow registered model.", "parameters": [ { - "name": "eval_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the run to retrieve output items for.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "Identifier for the last run from the previous pagination request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of runs to retrieve.", - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/integer" - } - ], - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", - "schema": { - "type": "string", - "enum": [ - "asc", - "desc" - ], - "default": "asc" }, "explode": false - }, - { - "name": "status", - "in": "query", - "required": false, - "description": "Filter output items by status. Use `failed` to filter by failed output\nitems or `pass` to filter by passed output items.", - "schema": { - "type": "string", - "enum": [ - "fail", - "pass" - ] - } } ], "responses": { @@ -8395,33 +8475,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRunOutputItem" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8438,42 +8492,34 @@ } }, "tags": [ - "Evals" - ] + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}": { - "get": { - "operationId": "Evals_getEvalRunOutputItem", - "summary": "Get an output item of an evaluation run", - "description": "Get an evaluation run output item by ID.", + "/mlflow/api/2.0/mlflow/registered-models/delete": { + "delete": { + "operationId": "RegisteredModels_delete", + "description": "Delete an MLflow registered model.", "parameters": [ { - "name": "eval_id", - "in": "path", - "required": true, - "description": "The ID of the evaluation to retrieve runs for.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", - "in": "path", - "required": true, - "description": "The ID of the run to retrieve.", - "schema": { - "type": "string" - } - }, - { - "name": "output_item_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the output item to retrieve.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -8482,7 +8528,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/EvalRunOutputItem" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8499,14 +8545,24 @@ } }, "tags": [ - "Evals" - ] + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/fine_tuning/jobs": { - "post": { - "operationId": "createFineTuningJob", - "description": "Creates a fine-tuning job which begins the process of creating a new model from a given dataset.\n\nResponse includes details of the enqueued job including job status and the name of the fine-tuned models once complete.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", + "/mlflow/api/2.0/mlflow/registered-models/delete-tag": { + "delete": { + "operationId": "RegisteredModels_deleteTag", + "description": "Delete an MLflow registered-model tag.", "parameters": [ { "name": "api-version", @@ -8525,7 +8581,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8542,45 +8598,35 @@ } }, "tags": [ - "Fine-Tuning" + "MLflow Registered Models" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.CreateFineTuningJobRequest" + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } } - }, + } + }, + "/mlflow/api/2.0/mlflow/registered-models/get": { "get": { - "operationId": "listPaginatedFineTuningJobs", - "description": "List your organization's fine-tuning jobs", + "operationId": "RegisteredModels_get", + "description": "Get an MLflow registered model.", "parameters": [ { - "name": "after", + "name": "name", "in": "query", "required": false, - "description": "Identifier for the last job from the previous pagination request.", + "description": "Registered model name.", "schema": { "type": "string" }, "explode": false }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Number of fine-tuning jobs to retrieve.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -8598,7 +8644,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ListPaginatedFineTuningJobsResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8615,23 +8661,37 @@ } }, "tags": [ - "Fine-Tuning" + "MLflow Registered Models" ] } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}": { + "/mlflow/api/2.0/mlflow/registered-models/get-latest-versions": { "get": { - "operationId": "retrieveFineTuningJob", - "description": "Get info about a fine-tuning job.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", + "operationId": "RegisteredModels_getLatestVersions", + "description": "Get latest versions for an MLflow registered model.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job.", + "name": "name", + "in": "query", + "required": false, + "description": "Registered model name.", "schema": { "type": "string" - } + }, + "explode": false + }, + { + "name": "stages", + "in": "query", + "required": false, + "description": "Model version stages to include.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + }, + "explode": false }, { "name": "api-version", @@ -8650,7 +8710,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8667,24 +8727,13 @@ } }, "tags": [ - "Fine-Tuning" + "MLflow Registered Models" ] - } - }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel": { + }, "post": { - "operationId": "cancelFineTuningJob", - "description": "Immediately cancel a fine-tune job.", + "operationId": "RegisteredModels_getLatestVersionsNameInBody", + "description": "Get latest versions for an MLflow registered model with the model name in the request body.", "parameters": [ - { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to cancel.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -8702,7 +8751,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8719,43 +8768,43 @@ } }, "tags": [ - "Fine-Tuning" - ] + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints": { + "/mlflow/api/2.0/mlflow/registered-models/list": { "get": { - "operationId": "listFineTuningJobCheckpoints", - "description": "List checkpoints for a fine-tuning job.", + "operationId": "RegisteredModels_list", + "description": "List MLflow registered models.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", - "required": true, - "description": "The ID of the fine-tuning job to get checkpoints for.", - "schema": { - "type": "string" - } - }, - { - "name": "after", + "name": "max_results", "in": "query", "required": false, - "description": "Identifier for the last checkpoint ID from the previous pagination request.", + "description": "Maximum number of items to return.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" }, "explode": false }, { - "name": "limit", + "name": "page_token", "in": "query", "required": false, - "description": "Number of checkpoints to retrieve.", + "description": "Token used to retrieve the next page of results.", "schema": { - "type": "integer", - "format": "int32", - "default": 10 + "type": "string" }, "explode": false }, @@ -8776,7 +8825,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ListFineTuningJobCheckpointsResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8793,43 +8842,96 @@ } }, "tags": [ - "Fine-Tuning" + "MLflow Registered Models" ] } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events": { - "get": { - "operationId": "listFineTuningJobEvents", - "description": "Get fine-grained status updates for a fine-tuning job.", + "/mlflow/api/2.0/mlflow/registered-models/rename": { + "post": { + "operationId": "RegisteredModels_rename", + "description": "Rename an MLflow registered model.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the fine-tuning job to get events for.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } } + } + } + } + }, + "/mlflow/api/2.0/mlflow/registered-models/search": { + "get": { + "operationId": "RegisteredModels_search", + "description": "Search MLflow registered models.", + "parameters": [ + { + "name": "max_results", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false }, { - "name": "after", + "name": "page_token", "in": "query", "required": false, - "description": "Identifier for the last event from the previous pagination request.", + "description": "Token used to retrieve the next page of results.", "schema": { "type": "string" }, "explode": false }, { - "name": "limit", + "name": "filter", "in": "query", "required": false, - "description": "Number of events to retrieve.", + "description": "Registered model search filter.", "schema": { - "type": "integer", - "format": "int32", - "default": 20 + "type": "string" }, "explode": false }, @@ -8850,7 +8952,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.ListFineTuningJobEventsResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8867,24 +8969,68 @@ } }, "tags": [ - "Fine-Tuning" + "MLflow Registered Models" ] } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause": { + "/mlflow/api/2.0/mlflow/registered-models/set-tag": { "post": { - "operationId": "pauseFineTuningJob", - "description": "Pause a running fine-tune job.", + "operationId": "RegisteredModels_setTag", + "description": "Set an MLflow registered-model tag.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the fine-tuning job to pause.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/registered-models/update": { + "patch": { + "operationId": "RegisteredModels_update", + "description": "Update an MLflow registered model.", + "parameters": [ { "name": "api-version", "in": "query", @@ -8902,7 +9048,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8919,24 +9065,78 @@ } }, "tags": [ - "Fine-Tuning" - ] + "MLflow Registered Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume": { + "/mlflow/api/2.0/mlflow/runs/create": { "post": { - "operationId": "resumeFineTuningJob", - "description": "Resume a paused fine-tune job.", + "operationId": "Runs_create", + "description": "Create an MLflow run.", "parameters": [ { - "name": "fine_tuning_job_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the fine-tuning job to resume.", + "description": "The API version to use for this operation.", "schema": { "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowResponse" + } + } } }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/delete": { + "post": { + "operationId": "Runs_delete", + "description": "Delete an MLflow run.", + "parameters": [ { "name": "api-version", "in": "query", @@ -8954,7 +9154,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.FineTuningJob" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -8971,27 +9171,43 @@ } }, "tags": [ - "Fine-Tuning" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/responses": { + "/mlflow/api/2.0/mlflow/runs/delete-tag": { "post": { - "operationId": "createResponse_createResponseStream", - "parameters": [], - "description": "Creates a model response. Creates a model response (streaming response).", + "operationId": "Runs_deleteTag", + "description": "Delete an MLflow run tag.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.Response" - } - }, - "text/event-stream": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9008,515 +9224,50 @@ } }, "tags": [ - "Responses" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "anyOf": [ - { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "top_logprobs": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "temperature": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "top_p": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "user": { - "type": "string", - "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", - "deprecated": true - }, - "safety_identifier": { - "type": "string", - "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." - }, - "prompt_cache_key": { - "type": "string", - "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." - }, - "service_tier": { - "$ref": "#/components/schemas/OpenAI.ServiceTier" - }, - "prompt_cache_retention": { - "type": "string", - "enum": [ - "in-memory", - "24h" - ], - "nullable": true - }, - "previous_response_id": { - "type": "string", - "nullable": true - }, - "model": { - "type": "string", - "description": "The model deployment to use for the creation of this response." - }, - "reasoning": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Reasoning" - } - ], - "nullable": true - }, - "background": { - "type": "boolean", - "nullable": true - }, - "max_output_tokens": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "max_tool_calls": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "text": { - "$ref": "#/components/schemas/OpenAI.ResponseTextParam" - }, - "tools": { - "$ref": "#/components/schemas/OpenAI.ToolsArray" - }, - "tool_choice": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" - }, - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" - } - ] - }, - "prompt": { - "$ref": "#/components/schemas/OpenAI.Prompt" - }, - "truncation": { - "type": "string", - "enum": [ - "auto", - "disabled" - ], - "nullable": true, - "default": "disabled" - }, - "input": { - "$ref": "#/components/schemas/OpenAI.InputParam" - }, - "include": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "nullable": true - }, - "parallel_tool_calls": { - "type": "boolean", - "nullable": true, - "default": true - }, - "store": { - "type": "boolean", - "nullable": true, - "default": true - }, - "instructions": { - "type": "string", - "nullable": true - }, - "stream": { - "type": "boolean", - "nullable": true - }, - "stream_options": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" - } - ], - "nullable": true - }, - "conversation": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ConversationParam" - } - ], - "nullable": true - }, - "context_management": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ContextManagementParam" - }, - "nullable": true, - "description": "Context management configuration for this request." - }, - "agent": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "(Deprecated) Use agent_reference instead.\nThe agent to use for generating the response." - }, - "agent_session_id": { - "type": "string", - "description": "Optional session identifier for sandbox affinity. Currently only relevant for hosted agents.\nWhen provided, the request is routed to the same sandbox. When omitted, auto-derived from\nconversation_id/prev_response_id or a new UUID is generated." - }, - "agent_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "The agent to use for generating the response." - }, - "structured_inputs": { - "type": "object", - "additionalProperties": {}, - "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." - } - } - }, - { - "type": "object", - "properties": { - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, - "top_logprobs": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "temperature": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "top_p": { - "type": "number", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "nullable": true, - "default": 1 - }, - "user": { - "type": "string", - "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", - "deprecated": true - }, - "safety_identifier": { - "type": "string", - "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." - }, - "prompt_cache_key": { - "type": "string", - "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." - }, - "service_tier": { - "$ref": "#/components/schemas/OpenAI.ServiceTier" - }, - "prompt_cache_retention": { - "type": "string", - "enum": [ - "in-memory", - "24h" - ], - "nullable": true - }, - "previous_response_id": { - "type": "string", - "nullable": true - }, - "model": { - "type": "string", - "description": "The model deployment to use for the creation of this response." - }, - "reasoning": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Reasoning" - } - ], - "nullable": true - }, - "background": { - "type": "boolean", - "nullable": true - }, - "max_output_tokens": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "max_tool_calls": { - "type": "integer", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.integer" - } - ], - "nullable": true - }, - "text": { - "$ref": "#/components/schemas/OpenAI.ResponseTextParam" - }, - "tools": { - "$ref": "#/components/schemas/OpenAI.ToolsArray" - }, - "tool_choice": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" - }, - { - "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" - } - ] - }, - "prompt": { - "$ref": "#/components/schemas/OpenAI.Prompt" - }, - "truncation": { - "type": "string", - "enum": [ - "auto", - "disabled" - ], - "nullable": true, - "default": "disabled" - }, - "input": { - "$ref": "#/components/schemas/OpenAI.InputParam" - }, - "include": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "nullable": true - }, - "parallel_tool_calls": { - "type": "boolean", - "nullable": true, - "default": true - }, - "store": { - "type": "boolean", - "nullable": true, - "default": true - }, - "instructions": { - "type": "string", - "nullable": true - }, - "stream": { - "type": "boolean", - "nullable": true - }, - "stream_options": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" - } - ], - "nullable": true - }, - "conversation": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.ConversationParam" - } - ], - "nullable": true - }, - "context_management": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ContextManagementParam" - }, - "nullable": true, - "description": "Context management configuration for this request." - }, - "agent": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "(Deprecated) Use agent_reference instead.\nThe agent to use for generating the response." - }, - "agent_session_id": { - "type": "string", - "description": "Optional session identifier for sandbox affinity. Currently only relevant for hosted agents.\nWhen provided, the request is routed to the same sandbox. When omitted, auto-derived from\nconversation_id/prev_response_id or a new UUID is generated." - }, - "agent_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentReference" - } - ], - "description": "The agent to use for generating the response." - }, - "structured_inputs": { - "type": "object", - "additionalProperties": {}, - "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." - } - } - } - ] + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } } - }, + } + }, + "/mlflow/api/2.0/mlflow/runs/get": { "get": { - "operationId": "listResponses", - "description": "Returns the list of all responses.", + "operationId": "Runs_get", + "description": "Get an MLflow run.", "parameters": [ { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "agent_name", + "name": "run_id", "in": "query", "required": false, - "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", + "description": "MLflow run identifier.", "schema": { "type": "string" }, "explode": false }, { - "name": "agent_id", + "name": "run_uuid", "in": "query", "required": false, - "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", + "description": "MLflow run UUID.", "schema": { "type": "string" }, "explode": false }, { - "name": "conversation_id", + "name": "api-version", "in": "query", - "required": false, - "description": "Filter by conversation ID. If provided, only responses associated with the specified conversation will be returned.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, @@ -9529,33 +9280,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Response" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9572,22 +9297,33 @@ } }, "tags": [ - "Responses" + "MLflow Runs" ] } }, - "/openai/v1/responses/compact": { + "/mlflow/api/2.0/mlflow/runs/log-batch": { "post": { - "operationId": "compactResponseConversation", - "description": "Produces a compaction of a responses conversation.", - "parameters": [], + "operationId": "Runs_logBatch", + "description": "Log a batch of metrics, parameters, and tags to an MLflow run.", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.CompactResource" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9604,89 +9340,43 @@ } }, "tags": [ - "Responses" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.CompactResponseMethodPublicBody" + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } } } } }, - "/openai/v1/responses/{response_id}": { - "get": { - "operationId": "getResponse_getResponseStream", + "/mlflow/api/2.0/mlflow/runs/log-inputs": { + "post": { + "operationId": "Runs_logInputs", + "description": "Log MLflow run input relationships.", "parameters": [ { - "name": "response_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" - } - }, - { - "name": "include[]", - "in": "query", - "required": false, - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.IncludeEnum" - }, - "default": [] - } - }, - { - "name": "stream", - "in": "query", - "required": false, - "schema": { - "type": "boolean", - "default": false }, "explode": false - }, - { - "name": "starting_after", - "in": "query", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "accept", - "in": "header", - "required": false, - "schema": { - "type": "string", - "enum": [ - "text/event-stream" - ] - } } ], - "description": "Retrieves a model response with the given ID. Retrieves a model response with the given ID (streaming response).", "responses": { "200": { "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.Response" - } - }, - "text/event-stream": { - "schema": { - "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9703,21 +9393,34 @@ } }, "tags": [ - "Responses" - ] - }, - "delete": { - "operationId": "deleteResponse", - "description": "Deletes a model response.", + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } + } + }, + "/mlflow/api/2.0/mlflow/runs/log-metric": { + "post": { + "operationId": "Runs_logMetric", + "description": "Log one metric to an MLflow run.", "parameters": [ { - "name": "response_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the response to delete.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -9726,7 +9429,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteResponseResult" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9743,23 +9446,34 @@ } }, "tags": [ - "Responses" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/responses/{response_id}/cancel": { + "/mlflow/api/2.0/mlflow/runs/log-model": { "post": { - "operationId": "cancelResponse", - "description": "Cancels a model response.", + "operationId": "Runs_logModel", + "description": "Log MLflow model metadata.", "parameters": [ { - "name": "response_id", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The ID of the response to cancel.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } + }, + "explode": false } ], "responses": { @@ -9768,7 +9482,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OpenAI.Response" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9785,60 +9499,30 @@ } }, "tags": [ - "Responses" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/openai/v1/responses/{response_id}/input_items": { - "get": { - "operationId": "listInputItems", - "description": "Returns a list of input items for a given response.", + "/mlflow/api/2.0/mlflow/runs/log-parameter": { + "post": { + "operationId": "Runs_logParameter", + "description": "Log one parameter to an MLflow run.", "parameters": [ { - "name": "response_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, - { - "name": "after", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "before", + "name": "api-version", "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "required": true, + "description": "The API version to use for this operation.", "schema": { "type": "string" }, @@ -9851,33 +9535,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "data", - "has_more" - ], - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.ItemResource" - }, - "description": "The requested list of items." - }, - "first_id": { - "type": "string", - "description": "The first ID represented in this list." - }, - "last_id": { - "type": "string", - "description": "The last ID represented in this list." - }, - "has_more": { - "type": "boolean", - "description": "A value indicating whether there are additional values available not captured in this list." - } - }, - "description": "The response data for a requested list of items." + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -9894,29 +9552,34 @@ } }, "tags": [ - "Responses" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/redTeams/runs": { - "get": { - "operationId": "RedTeams_list", - "description": "List a redteam by name.", + "/mlflow/api/2.0/mlflow/runs/restore": { + "post": { + "operationId": "Runs_restore", + "description": "Restore a deleted MLflow run.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "Foundry-Features", - "in": "header", + "name": "api-version", + "in": "query", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The API version to use for this operation.", "schema": { - "type": "string", - "enum": [ - "RedTeams=V1Preview" - ] - } + "type": "string" + }, + "explode": false } ], "responses": { @@ -9925,64 +9588,51 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedRedTeam" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Redteams" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/redTeams/runs/{name}": { - "get": { - "operationId": "RedTeams_get", - "description": "Get a redteam by name.", + "/mlflow/api/2.0/mlflow/runs/search": { + "post": { + "operationId": "Runs_search", + "description": "Search MLflow runs.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "Identifier of the red team run.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "RedTeams=V1Preview" - ] - } + }, + "explode": false } ], "responses": { @@ -9991,53 +9641,42 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RedTeam" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Redteams" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } + } + } + } } }, - "/redTeams/runs:run": { + "/mlflow/api/2.0/mlflow/runs/set-tag": { "post": { - "operationId": "RedTeams_create", - "description": "Creates a redteam run.", + "operationId": "Runs_setTag", + "description": "Set an MLflow run tag.", "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "RedTeams=V1Preview" - ] - } - }, { "name": "api-version", "in": "query", @@ -10050,12 +9689,12 @@ } ], "responses": { - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", + "200": { + "description": "The request has succeeded.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RedTeam" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } @@ -10072,60 +9711,34 @@ } }, "tags": [ - "Redteams" + "MLflow Runs" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/RedTeam" + "$ref": "#/components/schemas/Mlflow.MlflowPayload" } } - }, - "description": "Redteam to be run" + } } } }, - "/schedules": { - "get": { - "operationId": "Schedules_list", - "description": "List all schedules.", + "/mlflow/api/2.0/mlflow/runs/update": { + "post": { + "operationId": "Runs_update", + "description": "Update MLflow run metadata or status.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "type", - "in": "query", - "required": false, - "description": "Filter by the type of schedule.", - "schema": { - "$ref": "#/components/schemas/ScheduleTaskType" - }, - "explode": false - }, - { - "name": "enabled", + "name": "api-version", "in": "query", - "required": false, - "description": "Filter by the enabled status.", + "required": true, + "description": "The API version to use for this operation.", "schema": { - "type": "boolean" + "type": "string" }, "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } } ], "responses": { @@ -10134,121 +9747,143 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedSchedule" + "$ref": "#/components/schemas/Mlflow.MlflowResponse" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" - ] - } - }, - "/schedules/{id}": { - "delete": { - "operationId": "Schedules_delete", - "description": "Delete a schedule.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "id", - "in": "path", - "required": true, - "description": "Identifier of the schedule.", - "schema": { - "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] + "MLflow Runs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Mlflow.MlflowPayload" + } } } - ], + } + } + }, + "/openai/v1/conversations": { + "post": { + "operationId": "createConversation", + "description": "Create a conversation.", + "parameters": [], "responses": { - "204": { - "description": "There is no content to send for this request, but the headers may be useful." - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } - }, + } + }, + "default": { + "description": "An unexpected error response.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" - ] + "Conversations" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CreateConversationBody" + } + } + } + } }, "get": { - "operationId": "Schedules_get", - "description": "Get a schedule by id.", + "operationId": "listConversations", + "description": "Returns the list of all conversations.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false }, { - "name": "id", - "in": "path", - "required": true, - "description": "Identifier of the schedule.", + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } + "type": "string" + }, + "explode": false + }, + { + "name": "agent_name", + "in": "query", + "required": false, + "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "agent_id", + "in": "query", + "required": false, + "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", + "schema": { + "type": "string" + }, + "explode": false } ], "responses": { @@ -10257,62 +9892,66 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ConversationResource" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } - }, + } + }, + "default": { + "description": "An unexpected error response.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" + "Conversations" ] - }, - "put": { - "operationId": "Schedules_createOrUpdate", - "description": "Create or update operation template.", + } + }, + "/openai/v1/conversations/{conversation_id}": { + "post": { + "operationId": "updateConversation", + "description": "Update a conversation.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "id", + "name": "conversation_id", "in": "path", "required": true, - "description": "Identifier of the schedule.", + "description": "The id of the conversation to update.", "schema": { "type": "string" } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } } ], "responses": { @@ -10321,105 +9960,48 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Schedule" - } - } - } - }, - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Schedule" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" + "Conversations" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Schedule" + "$ref": "#/components/schemas/OpenAI.UpdateConversationBody" } } - }, - "description": "The resource instance." + } } - } - }, - "/schedules/{id}/runs": { + }, "get": { - "operationId": "Schedules_listRuns", - "description": "List all schedule runs.", + "operationId": "getConversation", + "description": "Retrieves a conversation.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "id", + "name": "conversation_id", "in": "path", "required": true, - "description": "Identifier of the schedule.", + "description": "The id of the conversation to retrieve.", "schema": { "type": "string" } - }, - { - "name": "type", - "in": "query", - "required": false, - "description": "Filter by the type of schedule.", - "schema": { - "$ref": "#/components/schemas/ScheduleTaskType" - }, - "explode": false - }, - { - "name": "enabled", - "in": "query", - "required": false, - "description": "Filter by the enabled status.", - "schema": { - "type": "boolean" - }, - "explode": false - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } } ], "responses": { @@ -10428,80 +10010,38 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedScheduleRun" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Schedules" + "Conversations" ] - } - }, - "/schedules/{schedule_id}/runs/{run_id}": { - "get": { - "operationId": "Schedules_getRun", - "description": "Get a schedule run by id.", + }, + "delete": { + "operationId": "deleteConversation", + "description": "Deletes a conversation.", "parameters": [ { - "name": "schedule_id", - "in": "path", - "required": true, - "description": "The unique identifier of the schedule.", - "schema": { - "type": "string" - } - }, - { - "name": "run_id", + "name": "conversation_id", "in": "path", "required": true, - "description": "The unique identifier of the schedule run.", + "description": "The id of the conversation to delete.", "schema": { "type": "string" } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Schedules=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { @@ -10510,7 +10050,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ScheduleRun" + "$ref": "#/components/schemas/OpenAI.DeletedConversationResource" } } } @@ -10527,34 +10067,34 @@ } }, "tags": [ - "Schedules" + "Conversations" ] } }, - "/skills": { + "/openai/v1/conversations/{conversation_id}/items": { "post": { - "operationId": "Skills_createSkill", - "description": "Creates a skill.", + "operationId": "createConversationItems", + "description": "Create items in a conversation with the given ID.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", + "name": "conversation_id", + "in": "path", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The id of the conversation on which the item needs to be created.", "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] + "type": "string" } }, { - "name": "api-version", + "name": "include", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Additional fields to include in the response.\nSee the `include` parameter for listing Conversation items for more information.", "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } }, "explode": false } @@ -10565,7 +10105,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillObject" + "$ref": "#/components/schemas/OpenAI.ConversationItemList" } } } @@ -10582,7 +10122,7 @@ } }, "tags": [ - "Skills" + "Conversations" ], "requestBody": { "required": true, @@ -10591,46 +10131,36 @@ "schema": { "type": "object", "properties": { - "name": { - "type": "string", - "maxLength": 63, - "description": "The unique name of the skill." - }, - "description": { - "type": "string", - "maxLength": 1024, - "description": "A human-readable description of the skill." - }, - "instructions": { - "type": "string", - "maxLength": 102400, - "description": "Instructions that define the behavior of the skill." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Item" }, - "description": "Set of key-value pairs associated with the skill." + "maxItems": 20, + "description": "The items to add to the conversation. You may add up to 20 items at a time." } }, "required": [ - "name" + "items" ] } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] } }, "get": { - "operationId": "Skills_listSkills", - "description": "Returns the list of all skills.", + "operationId": "listConversationItems", + "description": "List all items for a conversation with the given ID.", "parameters": [ + { + "name": "conversation_id", + "in": "path", + "required": true, + "description": "The id of the conversation on which the items needs to be listed.", + "schema": { + "type": "string" + } + }, { "name": "limit", "in": "query", @@ -10674,24 +10204,12 @@ "explode": false }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", + "name": "item_type", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Filter by item type. If provided, only items of the specified type will be returned.", "schema": { - "type": "string" + "$ref": "#/components/schemas/OpenAI.ItemType" }, "explode": false } @@ -10711,7 +10229,7 @@ "data": { "type": "array", "items": { - "$ref": "#/components/schemas/SkillObject" + "$ref": "#/components/schemas/OpenAI.OutputItem" }, "description": "The requested list of items." }, @@ -10745,50 +10263,32 @@ } }, "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } + "Conversations" + ] } }, - "/skills/{skill_name}": { + "/openai/v1/conversations/{conversation_id}/items/{item_id}": { "get": { - "operationId": "Skills_getSkill", - "description": "Retrieves a skill.", + "operationId": "getConversationItem", + "description": "Get a single item from a conversation with the given IDs.", "parameters": [ { - "name": "skill_name", + "name": "conversation_id", "in": "path", "required": true, - "description": "The unique name of the skill.", + "description": "The ID of the conversation that contains the item.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", + "name": "item_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation item to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -10797,7 +10297,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillObject" + "$ref": "#/components/schemas/OpenAI.OutputItem" } } } @@ -10814,48 +10314,30 @@ } }, "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } + "Conversations" + ] }, - "post": { - "operationId": "Skills_updateSkill", - "description": "Updates an existing skill.", + "delete": { + "operationId": "deleteConversationItem", + "description": "Delete an item from a conversation with the given IDs.", "parameters": [ { - "name": "skill_name", + "name": "conversation_id", "in": "path", "required": true, - "description": "The unique name of the skill.", + "description": "The id of the conversation on which the item needs to be deleted from.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", + "name": "item_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The id of the conversation item to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -10864,7 +10346,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillObject" + "$ref": "#/components/schemas/OpenAI.ConversationResource" } } } @@ -10881,77 +10363,69 @@ } }, "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 1024, - "description": "A human-readable description of the skill." - }, - "instructions": { - "type": "string", - "maxLength": 102400, - "description": "Instructions that define the behavior of the skill." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of key-value pairs associated with the skill." - } - } - } - } - } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - }, - "delete": { - "operationId": "Skills_deleteSkill", - "description": "Deletes a skill.", + "Conversations" + ] + } + }, + "/openai/v1/evals": { + "get": { + "operationId": "Evals_listEvals", + "summary": "List all evaluations", + "description": "List evaluations for a project.", "parameters": [ { - "name": "skill_name", - "in": "path", - "required": true, - "description": "The unique name of the skill.", + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last run from the previous pagination request.", "schema": { "type": "string" - } + }, + "explode": false }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "limit", + "in": "query", + "required": false, + "description": "Number of runs to retrieve.", "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 + }, + "explode": false }, { - "name": "api-version", + "name": "order", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" }, "explode": false + }, + { + "name": "order_by", + "in": "query", + "required": false, + "description": "Evals can be ordered by creation time or last updated time.\nUse `created_at` for creation time or `updated_at` for last updated time.", + "schema": { + "type": "string", + "enum": [ + "created_at", + "updated_at" + ], + "default": "created_at" + } } ], "responses": { @@ -10960,12 +10434,38 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteSkillResponse" - } - } - } - }, - "default": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Eval" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { "description": "An unexpected error response.", "content": { "application/json": { @@ -10977,60 +10477,74 @@ } }, "tags": [ - "Skills" + "Evals" + ] + }, + "post": { + "operationId": "Evals_createEval", + "summary": "Create evaluation", + "description": "Create the structure of an evaluation that can be used to test a model's performance.\nAn evaluation is a set of testing criteria and the config for a data source, which dictates the schema of the data used in the evaluation. After creating an evaluation, you can run it on different models and model parameters. We support several types of graders and datasources.\nFor more information, see the [Evals guide](https://platform.openai.com/docs/guides/evals).", + "parameters": [], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Eval" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Evals" ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateEvalRequest" + } + } + } } } }, - "/skills/{skill_name}:download": { - "get": { - "operationId": "Skills_downloadSkill", - "description": "Downloads a skill package.", + "/openai/v1/evals/{eval_id}": { + "delete": { + "operationId": "Evals_deleteEval", + "summary": "Delete an evaluation", + "description": "Delete an evaluation.", "parameters": [ { - "name": "skill_name", + "name": "eval_id", "in": "path", "required": true, - "description": "The unique name of the skill.", + "description": "The ID of the evaluation to delete.", "schema": { "type": "string" } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { "200": { - "description": "The response body for downloading a skill package.", + "description": "The request has succeeded.", "content": { - "application/gzip": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/DeleteEvalResponse" } } } @@ -11047,41 +10561,22 @@ } }, "tags": [ - "Skills" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - } - }, - "/skills:import": { - "post": { - "operationId": "Skills_createSkillFromPackage", - "description": "Creates a skill from a GZip package.", + "Evals" + ] + }, + "get": { + "operationId": "Evals_getEval", + "summary": "Get an evaluation", + "description": "Get an evaluation by ID.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Skills=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -11090,7 +10585,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SkillObject" + "$ref": "#/components/schemas/Eval" } } } @@ -11107,53 +10602,22 @@ } }, "tags": [ - "Skills" - ], - "requestBody": { - "required": true, - "content": { - "application/gzip": { - "schema": { - "type": "string", - "format": "binary" - } - } - }, - "description": "The GZip package used to create the skill." - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Skills=V1Preview" - ] - } - } - }, - "/toolsets": { + "Evals" + ] + }, "post": { - "operationId": "createToolset", - "description": "Create a toolset.", + "operationId": "Evals_updateEval", + "summary": "Update an evaluation", + "description": "Update certain properties of an evaluation.", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", + "name": "eval_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the evaluation to update.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -11162,7 +10626,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolsetObject" + "$ref": "#/components/schemas/Eval" } } } @@ -11179,119 +10643,89 @@ } }, "tags": [ - "Toolsets" + "Evals" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the toolset." - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the toolset." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the toolset." - }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" - }, - "description": "The list of tools to include in the toolset." - } - }, - "required": [ - "name", - "tools" - ] + "$ref": "#/components/schemas/UpdateEvalParametersBody" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] } - }, + } + }, + "/openai/v1/evals/{eval_id}/runs": { "get": { - "operationId": "listToolsets", - "description": "List all toolsets.", + "operationId": "Evals_listRuns", + "summary": "Get a list of runs for an evaluation", + "description": "Get a list of runs for an evaluation.", "parameters": [ { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation to retrieve runs for.", "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false + "type": "string" + } }, { - "name": "order", + "name": "after", "in": "query", "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "description": "Identifier for the last run from the previous pagination request.", "schema": { - "$ref": "#/components/schemas/PageOrder" + "type": "string" }, "explode": false }, { - "name": "after", + "name": "limit", "in": "query", "required": false, - "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "description": "Number of runs to retrieve.", "schema": { - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 }, "explode": false }, { - "name": "before", + "name": "order", "in": "query", "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", "schema": { - "type": "string" + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" }, "explode": false }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "name": "status", + "in": "query", + "required": false, + "description": "Filter runs by status. One of `queued` | `in_progress` | `failed` | `completed` | `canceled`.", "schema": { "type": "string", "enum": [ - "Toolsets=V1Preview" + "queued", + "in_progress", + "completed", + "canceled", + "failed" ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" }, "explode": false } @@ -11311,7 +10745,7 @@ "data": { "type": "array", "items": { - "$ref": "#/components/schemas/ToolsetObject" + "$ref": "#/components/schemas/EvalRun" }, "description": "The requested list of items." }, @@ -11345,50 +10779,21 @@ } }, "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - } - }, - "/toolsets/{tool_set_name}": { + "Evals" + ] + }, "post": { - "operationId": "updateToolset", - "description": "Update a toolset.", + "operationId": "Evals_createEvalRun", + "summary": "Create evaluation run", "parameters": [ { - "name": "tool_set_name", + "name": "eval_id", "in": "path", "required": true, - "description": "The name of the toolset to update.", + "description": "The ID of the evaluation to create a run for.", "schema": { "type": "string" } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false } ], "responses": { @@ -11397,7 +10802,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolsetObject" + "$ref": "#/components/schemas/EvalRun" } } } @@ -11414,82 +10819,43 @@ } }, "tags": [ - "Toolsets" + "Evals" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the toolset." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Arbitrary key-value metadata to associate with the toolset." - }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" - }, - "description": "The list of tools to include in the toolset." - } - }, - "required": [ - "tools" - ] + "$ref": "#/components/schemas/CreateEvalRunRequest" } } } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] } - }, - "get": { - "operationId": "getToolset", - "description": "Retrieve a toolset.", + } + }, + "/openai/v1/evals/{eval_id}/runs/{run_id}": { + "delete": { + "operationId": "Evals_deleteEvalRun", + "summary": "Delete evaluation run", + "description": "Delete an eval run.", "parameters": [ { - "name": "tool_set_name", + "name": "eval_id", "in": "path", "required": true, - "description": "The name of the toolset to retrieve.", + "description": "The ID of the evaluation to delete the run from.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", + "name": "run_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the run to delete.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -11498,7 +10864,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ToolsetObject" + "$ref": "#/components/schemas/DeleteEvalRunResponse" } } } @@ -11515,48 +10881,31 @@ } }, "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } + "Evals" + ] }, - "delete": { - "operationId": "deleteToolset", - "description": "Delete a toolset.", + "get": { + "operationId": "Evals_getEvalRun", + "summary": "Get an evaluation run", + "description": "Get an evaluation run by ID.", "parameters": [ { - "name": "tool_set_name", + "name": "eval_id", "in": "path", "required": true, - "description": "The name of the toolset to delete.", + "description": "The ID of the evaluation to retrieve runs for.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Toolsets=V1Preview" - ] - } - }, - { - "name": "api-version", - "in": "query", + "name": "run_id", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The ID of the run to retrieve.", "schema": { "type": "string" - }, - "explode": false + } } ], "responses": { @@ -11565,7 +10914,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteToolsetResponse" + "$ref": "#/components/schemas/EvalRun" } } } @@ -11580,53 +10929,8102 @@ } } } - }, - "tags": [ - "Toolsets" - ], - "x-ms-foundry-meta": { - "conditional_previews": [ - "Toolsets=V1Preview" - ] - } - } - } - }, - "security": [ - { - "ApiKeyAuth": [] - }, - { - "OAuth2Auth": [ - "https://ai.azure.com/.default" - ] - } - ], - "components": { - "parameters": { - "Azure.Core.ClientRequestIdHeader": { - "name": "x-ms-client-request-id", - "in": "header", - "required": false, - "description": "An opaque, globally-unique, client-generated string identifier for the request.", - "schema": { - "$ref": "#/components/schemas/Azure.Core.uuid" + }, + "tags": [ + "Evals" + ] + }, + "post": { + "operationId": "Evals_cancelEvalRun", + "summary": "Cancel evaluation run", + "description": "Cancel an ongoing evaluation run.", + "parameters": [ + { + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation whose run you want to cancel.", + "schema": { + "type": "string" + } + }, + { + "name": "run_id", + "in": "path", + "required": true, + "description": "The ID of the run to cancel.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EvalRun" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Evals" + ] + } + }, + "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items": { + "get": { + "operationId": "Evals_getEvalRunOutputItems", + "summary": "Get evaluation run output items", + "description": "Get a list of output items for an evaluation run.", + "parameters": [ + { + "name": "eval_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "run_id", + "in": "path", + "required": true, + "description": "The ID of the run to retrieve output items for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last run from the previous pagination request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of runs to retrieve.", + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order for runs by timestamp. Use `asc` for ascending order or `desc` for descending order. Defaults to `asc`.", + "schema": { + "type": "string", + "enum": [ + "asc", + "desc" + ], + "default": "asc" + }, + "explode": false + }, + { + "name": "status", + "in": "query", + "required": false, + "description": "Filter output items by status. Use `failed` to filter by failed output\nitems or `pass` to filter by passed output items.", + "schema": { + "type": "string", + "enum": [ + "fail", + "pass" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRunOutputItem" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Evals" + ] + } + }, + "/openai/v1/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}": { + "get": { + "operationId": "Evals_getEvalRunOutputItem", + "summary": "Get an output item of an evaluation run", + "description": "Get an evaluation run output item by ID.", + "parameters": [ + { + "name": "eval_id", + "in": "path", + "required": true, + "description": "The ID of the evaluation to retrieve runs for.", + "schema": { + "type": "string" + } + }, + { + "name": "run_id", + "in": "path", + "required": true, + "description": "The ID of the run to retrieve.", + "schema": { + "type": "string" + } + }, + { + "name": "output_item_id", + "in": "path", + "required": true, + "description": "The ID of the output item to retrieve.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EvalRunOutputItem" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Evals" + ] + } + }, + "/openai/v1/fine_tuning/jobs": { + "post": { + "operationId": "createFineTuningJob", + "description": "Creates a fine-tuning job which begins the process of creating a new model from a given dataset.\n\nResponse includes details of the enqueued job including job status and the name of the fine-tuned models once complete.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", + "parameters": [ + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.FineTuningJob" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CreateFineTuningJobRequest" + } + } + } + } + }, + "get": { + "operationId": "listPaginatedFineTuningJobs", + "description": "List your organization's fine-tuning jobs", + "parameters": [ + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last job from the previous pagination request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of fine-tuning jobs to retrieve.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.ListPaginatedFineTuningJobsResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ] + } + }, + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}": { + "get": { + "operationId": "retrieveFineTuningJob", + "description": "Get info about a fine-tuning job.\n\n[Learn more about fine-tuning](https://platform.openai.com/docs/guides/fine-tuning)", + "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.FineTuningJob" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ] + } + }, + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel": { + "post": { + "operationId": "cancelFineTuningJob", + "description": "Immediately cancel a fine-tune job.", + "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to cancel.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.FineTuningJob" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ] + } + }, + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints": { + "get": { + "operationId": "listFineTuningJobCheckpoints", + "description": "List checkpoints for a fine-tuning job.", + "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to get checkpoints for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last checkpoint ID from the previous pagination request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of checkpoints to retrieve.", + "schema": { + "type": "integer", + "format": "int32", + "default": 10 + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.ListFineTuningJobCheckpointsResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ] + } + }, + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events": { + "get": { + "operationId": "listFineTuningJobEvents", + "description": "Get fine-grained status updates for a fine-tuning job.", + "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to get events for.", + "schema": { + "type": "string" + } + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "Identifier for the last event from the previous pagination request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Number of events to retrieve.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.ListFineTuningJobEventsResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ] + } + }, + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause": { + "post": { + "operationId": "pauseFineTuningJob", + "description": "Pause a running fine-tune job.", + "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to pause.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.FineTuningJob" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ] + } + }, + "/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume": { + "post": { + "operationId": "resumeFineTuningJob", + "description": "Resume a paused fine-tune job.", + "parameters": [ + { + "name": "fine_tuning_job_id", + "in": "path", + "required": true, + "description": "The ID of the fine-tuning job to resume.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.FineTuningJob" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Fine-Tuning" + ] + } + }, + "/openai/v1/responses": { + "post": { + "operationId": "createResponse_createResponseStream", + "parameters": [], + "description": "Creates a model response. Creates a model response (streaming response).", + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.Response" + } + }, + "text/event-stream": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Responses" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "anyOf": [ + { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true + }, + "top_logprobs": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "temperature": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "top_p": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "user": { + "type": "string", + "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", + "deprecated": true + }, + "safety_identifier": { + "type": "string", + "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." + }, + "prompt_cache_key": { + "type": "string", + "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." + }, + "service_tier": { + "$ref": "#/components/schemas/OpenAI.ServiceTier" + }, + "prompt_cache_retention": { + "type": "string", + "enum": [ + "in-memory", + "24h" + ], + "nullable": true + }, + "previous_response_id": { + "type": "string", + "nullable": true + }, + "model": { + "type": "string", + "description": "The model deployment to use for the creation of this response." + }, + "reasoning": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Reasoning" + } + ], + "nullable": true + }, + "background": { + "type": "boolean", + "nullable": true + }, + "max_output_tokens": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "max_tool_calls": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "text": { + "$ref": "#/components/schemas/OpenAI.ResponseTextParam" + }, + "tools": { + "$ref": "#/components/schemas/OpenAI.ToolsArray" + }, + "tool_choice": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" + }, + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" + } + ] + }, + "prompt": { + "$ref": "#/components/schemas/OpenAI.Prompt" + }, + "truncation": { + "type": "string", + "enum": [ + "auto", + "disabled" + ], + "nullable": true, + "default": "disabled" + }, + "input": { + "$ref": "#/components/schemas/OpenAI.InputParam" + }, + "include": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "nullable": true + }, + "parallel_tool_calls": { + "type": "boolean", + "nullable": true, + "default": true + }, + "store": { + "type": "boolean", + "nullable": true, + "default": true + }, + "instructions": { + "type": "string", + "nullable": true + }, + "stream": { + "type": "boolean", + "nullable": true + }, + "stream_options": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" + } + ], + "nullable": true + }, + "conversation": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ConversationParam" + } + ], + "nullable": true + }, + "context_management": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ContextManagementParam" + }, + "nullable": true, + "description": "Context management configuration for this request." + }, + "agent": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "(Deprecated) Use agent_reference instead.\nThe agent to use for generating the response." + }, + "agent_session_id": { + "type": "string", + "description": "Optional session identifier for sandbox affinity. Currently only relevant for hosted agents.\nWhen provided, the request is routed to the same sandbox. When omitted, auto-derived from\nconversation_id/prev_response_id or a new UUID is generated." + }, + "agent_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "The agent to use for generating the response." + }, + "structured_inputs": { + "type": "object", + "additionalProperties": {}, + "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." + } + } + }, + { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true + }, + "top_logprobs": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "temperature": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "top_p": { + "type": "number", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.numeric" + } + ], + "nullable": true, + "default": 1 + }, + "user": { + "type": "string", + "description": "This field is being replaced by `safety_identifier` and `prompt_cache_key`. Use `prompt_cache_key` instead to maintain caching optimizations.\n A stable identifier for your end-users.\n Used to boost cache hit rates by better bucketing similar requests and to help OpenAI detect and prevent abuse. [Learn more](/docs/guides/safety-best-practices#safety-identifiers).", + "deprecated": true + }, + "safety_identifier": { + "type": "string", + "description": "A stable identifier used to help detect users of your application that may be violating OpenAI's usage policies.\n The IDs should be a string that uniquely identifies each user. We recommend hashing their username or email address, in order to avoid sending us any identifying information. [Learn more](/docs/guides/safety-best-practices#safety-identifiers)." + }, + "prompt_cache_key": { + "type": "string", + "description": "Used by OpenAI to cache responses for similar requests to optimize your cache hit rates. Replaces the `user` field. [Learn more](/docs/guides/prompt-caching)." + }, + "service_tier": { + "$ref": "#/components/schemas/OpenAI.ServiceTier" + }, + "prompt_cache_retention": { + "type": "string", + "enum": [ + "in-memory", + "24h" + ], + "nullable": true + }, + "previous_response_id": { + "type": "string", + "nullable": true + }, + "model": { + "type": "string", + "description": "The model deployment to use for the creation of this response." + }, + "reasoning": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Reasoning" + } + ], + "nullable": true + }, + "background": { + "type": "boolean", + "nullable": true + }, + "max_output_tokens": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "max_tool_calls": { + "type": "integer", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "nullable": true + }, + "text": { + "$ref": "#/components/schemas/OpenAI.ResponseTextParam" + }, + "tools": { + "$ref": "#/components/schemas/OpenAI.ToolsArray" + }, + "tool_choice": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceOptions" + }, + { + "$ref": "#/components/schemas/OpenAI.ToolChoiceParam" + } + ] + }, + "prompt": { + "$ref": "#/components/schemas/OpenAI.Prompt" + }, + "truncation": { + "type": "string", + "enum": [ + "auto", + "disabled" + ], + "nullable": true, + "default": "disabled" + }, + "input": { + "$ref": "#/components/schemas/OpenAI.InputParam" + }, + "include": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "nullable": true + }, + "parallel_tool_calls": { + "type": "boolean", + "nullable": true, + "default": true + }, + "store": { + "type": "boolean", + "nullable": true, + "default": true + }, + "instructions": { + "type": "string", + "nullable": true + }, + "stream": { + "type": "boolean", + "nullable": true + }, + "stream_options": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ResponseStreamOptions" + } + ], + "nullable": true + }, + "conversation": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.ConversationParam" + } + ], + "nullable": true + }, + "context_management": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ContextManagementParam" + }, + "nullable": true, + "description": "Context management configuration for this request." + }, + "agent": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "(Deprecated) Use agent_reference instead.\nThe agent to use for generating the response." + }, + "agent_session_id": { + "type": "string", + "description": "Optional session identifier for sandbox affinity. Currently only relevant for hosted agents.\nWhen provided, the request is routed to the same sandbox. When omitted, auto-derived from\nconversation_id/prev_response_id or a new UUID is generated." + }, + "agent_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentReference" + } + ], + "description": "The agent to use for generating the response." + }, + "structured_inputs": { + "type": "object", + "additionalProperties": {}, + "description": "The structured inputs to the response that can participate in prompt template substitution or tool argument bindings." + } + } + } + ] + } + } + } + } + }, + "get": { + "operationId": "listResponses", + "description": "Returns the list of all responses.", + "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "agent_name", + "in": "query", + "required": false, + "description": "Filter by agent name. If provided, only items associated with the specified agent will be returned.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "agent_id", + "in": "query", + "required": false, + "description": "Filter by agent ID in the format `name:version`. If provided, only items associated with the specified agent ID will be returned.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "conversation_id", + "in": "query", + "required": false, + "description": "Filter by conversation ID. If provided, only responses associated with the specified conversation will be returned.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Response" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Responses" + ] + } + }, + "/openai/v1/responses/compact": { + "post": { + "operationId": "compactResponseConversation", + "description": "Produces a compaction of a responses conversation.", + "parameters": [], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CompactResource" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Responses" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CompactResponseMethodPublicBody" + } + } + } + } + } + }, + "/openai/v1/responses/{response_id}": { + "get": { + "operationId": "getResponse_getResponseStream", + "parameters": [ + { + "name": "response_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "include[]", + "in": "query", + "required": false, + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.IncludeEnum" + }, + "default": [] + } + }, + { + "name": "stream", + "in": "query", + "required": false, + "schema": { + "type": "boolean", + "default": false + }, + "explode": false + }, + { + "name": "starting_after", + "in": "query", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "accept", + "in": "header", + "required": false, + "schema": { + "type": "string", + "enum": [ + "text/event-stream" + ] + } + } + ], + "description": "Retrieves a model response with the given ID. Retrieves a model response with the given ID (streaming response).", + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.Response" + } + }, + "text/event-stream": { + "schema": { + "$ref": "#/components/schemas/OpenAI.CreateResponseStreamingResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Responses" + ] + }, + "delete": { + "operationId": "deleteResponse", + "description": "Deletes a model response.", + "parameters": [ + { + "name": "response_id", + "in": "path", + "required": true, + "description": "The ID of the response to delete.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteResponseResult" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Responses" + ] + } + }, + "/openai/v1/responses/{response_id}/cancel": { + "post": { + "operationId": "cancelResponse", + "description": "Cancels a model response.", + "parameters": [ + { + "name": "response_id", + "in": "path", + "required": true, + "description": "The ID of the response to cancel.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OpenAI.Response" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Responses" + ] + } + }, + "/openai/v1/responses/{response_id}/input_items": { + "get": { + "operationId": "listInputItems", + "description": "Returns a list of input items for a given response.", + "parameters": [ + { + "name": "response_id", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.ItemResource" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Responses" + ] + } + }, + "/redTeams/runs": { + "get": { + "operationId": "RedTeams_list", + "description": "List a redteam by name.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "RedTeams=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedRedTeam" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Redteams" + ] + } + }, + "/redTeams/runs/{name}": { + "get": { + "operationId": "RedTeams_get", + "description": "Get a redteam by name.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "Identifier of the red team run.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "RedTeams=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RedTeam" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Redteams" + ] + } + }, + "/redTeams/runs:run": { + "post": { + "operationId": "RedTeams_create", + "description": "Creates a redteam run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "RedTeams=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RedTeam" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Redteams" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RedTeam" + } + } + }, + "description": "Redteam to be run" + } + } + }, + "/schedules": { + "get": { + "operationId": "Schedules_list", + "description": "List all schedules.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "type", + "in": "query", + "required": false, + "description": "Filter by the type of schedule.", + "schema": { + "$ref": "#/components/schemas/ScheduleTaskType" + }, + "explode": false + }, + { + "name": "enabled", + "in": "query", + "required": false, + "description": "Filter by the enabled status.", + "schema": { + "type": "boolean" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedSchedule" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Schedules" + ] + } + }, + "/schedules/{id}": { + "delete": { + "operationId": "Schedules_delete", + "description": "Delete a schedule.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "id", + "in": "path", + "required": true, + "description": "Identifier of the schedule.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } + } + ], + "responses": { + "204": { + "description": "There is no content to send for this request, but the headers may be useful." + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Schedules" + ] + }, + "get": { + "operationId": "Schedules_get", + "description": "Get a schedule by id.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "id", + "in": "path", + "required": true, + "description": "Identifier of the schedule.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Schedule" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Schedules" + ] + }, + "put": { + "operationId": "Schedules_createOrUpdate", + "description": "Create or update operation template.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "id", + "in": "path", + "required": true, + "description": "Identifier of the schedule.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Schedule" + } + } + } + }, + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Schedule" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Schedules" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Schedule" + } + } + }, + "description": "The resource instance." + } + } + }, + "/schedules/{id}/runs": { + "get": { + "operationId": "Schedules_listRuns", + "description": "List all schedule runs.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "id", + "in": "path", + "required": true, + "description": "Identifier of the schedule.", + "schema": { + "type": "string" + } + }, + { + "name": "type", + "in": "query", + "required": false, + "description": "Filter by the type of schedule.", + "schema": { + "$ref": "#/components/schemas/ScheduleTaskType" + }, + "explode": false + }, + { + "name": "enabled", + "in": "query", + "required": false, + "description": "Filter by the enabled status.", + "schema": { + "type": "boolean" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedScheduleRun" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Schedules" + ] + } + }, + "/schedules/{schedule_id}/runs/{run_id}": { + "get": { + "operationId": "Schedules_getRun", + "description": "Get a schedule run by id.", + "parameters": [ + { + "name": "schedule_id", + "in": "path", + "required": true, + "description": "The unique identifier of the schedule.", + "schema": { + "type": "string" + } + }, + { + "name": "run_id", + "in": "path", + "required": true, + "description": "The unique identifier of the schedule run.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Schedules=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScheduleRun" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Schedules" + ] + } + }, + "/skills": { + "post": { + "operationId": "Skills_createSkill", + "description": "Creates a skill.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 63, + "description": "The unique name of the skill." + }, + "description": { + "type": "string", + "maxLength": 1024, + "description": "A human-readable description of the skill." + }, + "instructions": { + "type": "string", + "maxLength": 102400, + "description": "Instructions that define the behavior of the skill." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of key-value pairs associated with the skill." + } + }, + "required": [ + "name" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + }, + "get": { + "operationId": "Skills_listSkills", + "description": "Returns the list of all skills.", + "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SkillObject" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + } + }, + "/skills/{skill_name}": { + "get": { + "operationId": "Skills_getSkill", + "description": "Retrieves a skill.", + "parameters": [ + { + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + }, + "post": { + "operationId": "Skills_updateSkill", + "description": "Updates an existing skill.", + "parameters": [ + { + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 1024, + "description": "A human-readable description of the skill." + }, + "instructions": { + "type": "string", + "maxLength": 102400, + "description": "Instructions that define the behavior of the skill." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of key-value pairs associated with the skill." + } + } + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + }, + "delete": { + "operationId": "Skills_deleteSkill", + "description": "Deletes a skill.", + "parameters": [ + { + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteSkillResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + } + }, + "/skills/{skill_name}:download": { + "get": { + "operationId": "Skills_downloadSkill", + "description": "Downloads a skill package.", + "parameters": [ + { + "name": "skill_name", + "in": "path", + "required": true, + "description": "The unique name of the skill.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The response body for downloading a skill package.", + "content": { + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + } + }, + "/skills:import": { + "post": { + "operationId": "Skills_createSkillFromPackage", + "description": "Creates a skill from a GZip package.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Skills=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkillObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Skills" + ], + "requestBody": { + "required": true, + "content": { + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" + } + } + }, + "description": "The GZip package used to create the skill." + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Skills=V1Preview" + ] + } + } + }, + "/toolsets": { + "post": { + "operationId": "createToolset", + "description": "Create a toolset.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToolsetObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Toolsets" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the toolset." + }, + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the toolset." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the toolset." + }, + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" + }, + "description": "The list of tools to include in the toolset." + } + }, + "required": [ + "name", + "tools" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + }, + "get": { + "operationId": "listToolsets", + "description": "List all toolsets.", + "parameters": [ + { + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolsetObject" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + } + }, + "/toolsets/{tool_set_name}": { + "post": { + "operationId": "updateToolset", + "description": "Update a toolset.", + "parameters": [ + { + "name": "tool_set_name", + "in": "path", + "required": true, + "description": "The name of the toolset to update.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToolsetObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Toolsets" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the toolset." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Arbitrary key-value metadata to associate with the toolset." + }, + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" + }, + "description": "The list of tools to include in the toolset." + } + }, + "required": [ + "tools" + ] + } + } + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + }, + "get": { + "operationId": "getToolset", + "description": "Retrieve a toolset.", + "parameters": [ + { + "name": "tool_set_name", + "in": "path", + "required": true, + "description": "The name of the toolset to retrieve.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToolsetObject" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + }, + "delete": { + "operationId": "deleteToolset", + "description": "Delete a toolset.", + "parameters": [ + { + "name": "tool_set_name", + "in": "path", + "required": true, + "description": "The name of the toolset to delete.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Toolsets=V1Preview" + ] + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteToolsetResponse" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Toolsets" + ], + "x-ms-foundry-meta": { + "conditional_previews": [ + "Toolsets=V1Preview" + ] + } + } + }, + "/training_jobs": { + "get": { + "operationId": "TrainingJobs_list", + "description": "List training jobs.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "jobType", + "in": "query", + "required": false, + "description": "Filter by job type (e.g. 'Command').", + "schema": { + "$ref": "#/components/schemas/JobType" + }, + "explode": false + }, + { + "name": "tag", + "in": "query", + "required": false, + "description": "Filter jobs by tag in the format 'key=value' (e.g., 'framework=pytorch').", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "listViewType", + "in": "query", + "required": false, + "description": "Specifies which view type to apply when listing jobs.", + "schema": { + "$ref": "#/components/schemas/ListViewType" + }, + "explode": false + }, + { + "name": "properties", + "in": "query", + "required": false, + "description": "Comma-separated user property names and optionally values. Example: prop1,prop2=value2.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJob" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + }, + "post": { + "operationId": "TrainingJobs_create", + "description": "Create and execute a model training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry job creation.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Job" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobCreate" + } + } + }, + "description": "The training job to create." + } + } + }, + "/training_jobs/operations/{operationId}/result": { + "get": { + "operationId": "TrainingJobOperations_getOperationResult", + "description": "Poll the result of an asynchronous training job operation.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "operationId", + "in": "path", + "required": true, + "description": "The operation identifier returned by a training job create, cancel, or delete request.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOperationResource" + } + } + } + }, + "202": { + "description": "Response returned when a training job operation is still in progress.", + "headers": { + "Location": { + "required": false, + "description": "URL to poll for the operation result.", + "schema": { + "type": "string" + } + }, + "Operation-Location": { + "required": false, + "description": "URL to poll for the operation status.", + "schema": { + "type": "string" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/operations/{operationId}/status": { + "get": { + "operationId": "TrainingJobOperations_getOperationStatus", + "description": "Poll the status of an asynchronous training job operation.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "operationId", + "in": "path", + "required": true, + "description": "The operation identifier returned by a training job create, cancel, or delete request.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOperationResource" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/artifacts": { + "get": { + "operationId": "TrainingJobArtifacts_listArtifacts", + "description": "List artifacts for the current view of a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/artifacts:content": { + "get": { + "operationId": "TrainingJobArtifacts_downloadArtifact", + "description": "Download training job artifact content.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/artifacts:contentInfo": { + "get": { + "operationId": "TrainingJobArtifacts_getArtifactContentInfo", + "description": "Get download information for a training job artifact.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/artifacts:contentInfoByPrefix": { + "get": { + "operationId": "TrainingJobArtifacts_getArtifactContentInfoByPrefix", + "description": "List download information for training job artifacts under a path prefix.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/artifacts:metadata": { + "get": { + "operationId": "TrainingJobArtifacts_getArtifactMetadata", + "description": "Get metadata for a training job artifact.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/metrics": { + "get": { + "operationId": "TrainingJobMetrics_listMetrics", + "description": "List metrics emitted by the current view of a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetric" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/metrics/{metricName}": { + "get": { + "operationId": "TrainingJobMetrics_getMetric", + "description": "Get the full history for a training job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricPoint" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/metrics/{metricName}:aggregates": { + "get": { + "operationId": "TrainingJobMetrics_getMetricAggregates", + "description": "Get aggregate values for a training job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricAggregate" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/metrics/{metricName}:sample": { + "get": { + "operationId": "TrainingJobMetrics_getMetricSample", + "description": "Get one sampled value or window for a training job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/metrics/{metricName}:samples": { + "get": { + "operationId": "TrainingJobMetrics_getMetricSamples", + "description": "Get sampled values for a training job metric.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/metrics:lastValues": { + "get": { + "operationId": "TrainingJobMetrics_getMetricLastValues", + "description": "Get the latest values for metrics emitted by the current view of a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricLastValue" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/outputs": { + "get": { + "operationId": "TrainingJobOutputs_listOutputs", + "description": "List outputs produced by a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/outputs/{outputName}": { + "get": { + "operationId": "TrainingJobOutputs_getOutput", + "description": "Get one output produced by a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "outputName", + "in": "path", + "required": true, + "description": "The output name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs": { + "get": { + "operationId": "TrainingJobRuns_listRuns", + "description": "List runs for a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobRun" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}": { + "get": { + "operationId": "TrainingJobRuns_getRun", + "description": "Get one run for a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobRun" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/artifacts": { + "get": { + "operationId": "TrainingJobRunArtifacts_listRunArtifacts", + "description": "List artifacts for a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/artifacts:content": { + "get": { + "operationId": "TrainingJobRunArtifacts_downloadRunArtifact", + "description": "Download artifact content from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/artifacts:contentInfo": { + "get": { + "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfo", + "description": "Get download information for an artifact from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/artifacts:contentInfoByPrefix": { + "get": { + "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfoByPrefix", + "description": "List download information for artifacts under a path prefix from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobArtifactContentInfo" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/artifacts:metadata": { + "get": { + "operationId": "TrainingJobRunArtifacts_getRunArtifactMetadata", + "description": "Get metadata for an artifact from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobArtifact" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/metrics": { + "get": { + "operationId": "TrainingJobRunMetrics_listRunMetrics", + "description": "List metrics emitted by a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetric" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetric", + "description": "Get the full history for a metric from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricPoint" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:aggregates": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetricAggregates", + "description": "Get aggregate metric values from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricAggregate" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:sample": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetricSample", + "description": "Get one sampled value or window from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:samples": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetricSamples", + "description": "Get sampled metric values from a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/metrics:lastValues": { + "get": { + "operationId": "TrainingJobRunMetrics_getRunMetricLastValues", + "description": "Get latest metric values for a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobMetricLastValue" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/outputs": { + "get": { + "operationId": "TrainingJobRunOutputs_listRunOutputs", + "description": "List outputs produced by a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/runs/{runId}/outputs/{outputName}": { + "get": { + "operationId": "TrainingJobRunOutputs_getRunOutput", + "description": "Get one output produced by a specific training job run.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "runId", + "in": "path", + "required": true, + "description": "The run identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "outputName", + "in": "path", + "required": true, + "description": "The output name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/services": { + "get": { + "operationId": "TrainingJobs_showServices", + "description": "List service endpoints for the current view of a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "nodeId", + "in": "query", + "required": false, + "description": "Node identifier whose service endpoints should be returned. If omitted, leader-node services are returned.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrainingJobServiceCollection" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{name}": { + "get": { + "operationId": "TrainingJobs_get", + "description": "Get a training job by name.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the training job. This is case-sensitive.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Job" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + }, + "delete": { + "operationId": "TrainingJobs_beginDelete", + "description": "Delete a training job by name. Returns 202 Accepted with Location and Operation-Location headers to poll for completion, or 204 if the job does not exist.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the training job. This is case-sensitive.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "202": { + "description": "Response returned when a job delete operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the final result of the delete operation.", + "schema": { + "type": "string" + } + }, + "Operation-Location": { + "required": false, + "description": "URL to poll for the status of the delete operation.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "204": { + "description": "There is no content to send for this request, but the headers may be useful." + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{name}:cancel": { + "post": { + "operationId": "TrainingJobs_beginCancel", + "description": "Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with Location and Operation-Location headers to poll for completion.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the training job. This is case-sensitive.", + "schema": { + "type": "string" + } + }, + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded." + }, + "202": { + "description": "Response returned when a job cancel operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the final result of the cancel operation.", + "schema": { + "type": "string" + } + }, + "Operation-Location": { + "required": false, + "description": "URL to poll for the status of the cancel operation.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + } + }, + "security": [ + { + "ApiKeyAuth": [] + }, + { + "OAuth2Auth": [ + "https://ai.azure.com/.default" + ] + } + ], + "components": { + "parameters": { + "Azure.Core.ClientRequestIdHeader": { + "name": "x-ms-client-request-id", + "in": "header", + "required": false, + "description": "An opaque, globally-unique, client-generated string identifier for the request.", + "schema": { + "$ref": "#/components/schemas/Azure.Core.uuid" + } + }, + "Azure.Core.Foundations.ApiVersionParameter": { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string", + "minLength": 1 + }, + "explode": false + } + }, + "schemas": { + "A2APreviewTool": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "a2a_preview" + ], + "description": "The type of the tool. Always `\"a2a_preview`." + }, + "name": { + "type": "string", + "description": "Optional user-defined name for this tool or configuration." + }, + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "base_url": { + "type": "string", + "format": "uri", + "description": "Base URL of the agent." + }, + "agent_card_path": { + "type": "string", + "description": "The path to the agent card relative to the `base_url`.\nIf not provided, defaults to `/.well-known/agent-card.json`" + }, + "project_connection_id": { + "type": "string", + "description": "The connection ID in the project for the A2A server.\nThe connection stores authentication and other connection details needed to connect to the A2A server." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Tool" + } + ], + "description": "An agent implementing the A2A protocol." + }, + "A2AToolCall": { + "type": "object", + "required": [ + "type", + "call_id", + "name", + "arguments", + "status" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "a2a_preview_call" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "name": { + "type": "string", + "description": "The name of the A2A agent card being called." + }, + "arguments": { + "type": "string", + "description": "A JSON string of the arguments to pass to the tool." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.OutputItem" + } + ], + "description": "An A2A (Agent-to-Agent) tool call." + }, + "A2AToolCallOutput": { + "type": "object", + "required": [ + "type", + "call_id", + "name", + "status" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "a2a_preview_call_output" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "name": { + "type": "string", + "description": "The name of the A2A agent card that was called." + }, + "output": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallOutputContent" + } + ], + "description": "The output from the A2A tool call." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.OutputItem" + } + ], + "description": "The output of an A2A (Agent-to-Agent) tool call." + }, + "AISearchIndexResource": { + "type": "object", + "properties": { + "project_connection_id": { + "type": "string", + "description": "An index connection ID in an IndexResource attached to this agent." + }, + "index_name": { + "type": "string", + "description": "The name of an index in an IndexResource attached to this agent." + }, + "name": { + "type": "string", + "description": "Optional user-defined name for this tool or configuration." + }, + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "query_type": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureAISearchQueryType" + } + ], + "description": "Type of query in an AIIndexResource attached to this agent." + }, + "top_k": { + "type": "integer", + "format": "int32", + "description": "Number of documents to retrieve from search and present to the model." + }, + "filter": { + "type": "string", + "description": "filter string for search resource. [Learn more here](https://learn.microsoft.com/azure/search/search-filters)." + }, + "index_asset_id": { + "type": "string", + "description": "Index asset id for search resource." + } + }, + "description": "A AI Search Index resource." + }, + "AgentBlueprintReference": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "$ref": "#/components/schemas/AgentBlueprintReferenceType" + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "ManagedAgentIdentityBlueprint": "#/components/schemas/ManagedAgentIdentityBlueprintReference" + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentBlueprintReferenceType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "ManagedAgentIdentityBlueprint" + ] + } + ], + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentCard": { + "type": "object", + "required": [ + "version", + "skills" + ], + "properties": { + "version": { + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "The version of the agent card." + }, + "description": { + "type": "string", + "maxLength": 2048, + "description": "The description of the agent card." + }, + "skills": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentCardSkill" + }, + "maxItems": 16, + "description": "The set of skills that an agent can perform." + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentCardSkill": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "minLength": 1, + "maxLength": 64, + "description": "a unique identifier for the skill" + }, + "name": { + "type": "string", + "minLength": 1, + "maxLength": 128, + "description": "The name of the skill" + }, + "description": { + "type": "string", + "maxLength": 2048, + "description": "A description of the skill" + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentCardSkillTag" + }, + "maxItems": 5, + "description": "set of tagwords describing classes of capabilities for the skill" + }, + "examples": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentCardSkillExample" + }, + "maxItems": 5, + "description": "A list of example scenarios that the skill can perform." + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentCardSkillExample": { + "type": "string", + "maxLength": 1024, + "description": "A skill example string with a maximum length of 1024 characters.", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentCardSkillTag": { + "type": "string", + "maxLength": 32, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentCardUpdate": { + "type": "object", + "properties": { + "version": { + "type": "string", + "minLength": 1, + "maxLength": 32, + "description": "The version of the agent card." + }, + "description": { + "type": "string", + "maxLength": 2048, + "description": "The description of the agent card." + }, + "skills": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentCardSkill" + }, + "maxItems": 16, + "description": "The set of skills that an agent can perform." + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentClusterInsightRequest": { + "type": "object", + "required": [ + "type", + "agentName" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AgentClusterInsight" + ], + "description": "The type of request." + }, + "agentName": { + "type": "string", + "description": "Identifier for the agent." + }, + "modelConfiguration": { + "allOf": [ + { + "$ref": "#/components/schemas/InsightModelConfiguration" + } + ], + "description": "Configuration of the model used in the insight generation." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/InsightRequest" + } + ], + "description": "Insights on set of Agent Evaluation Results" + }, + "AgentClusterInsightResult": { + "type": "object", + "required": [ + "type", + "clusterInsight" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AgentClusterInsight" + ], + "description": "The type of insights result." + }, + "clusterInsight": { + "$ref": "#/components/schemas/ClusterInsightResult" + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/InsightResult" + } + ], + "description": "Insights from the agent cluster analysis." + }, + "AgentContainerObject": { + "type": "object", + "required": [ + "object", + "status", + "created_at", + "updated_at" + ], + "properties": { + "object": { + "type": "string", + "enum": [ + "agent.container" + ], + "description": "The object type, which is always 'agent.container'.", + "readOnly": true + }, + "id": { + "type": "string", + "description": "The identifier of the container.", + "readOnly": true + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentContainerStatus" + } + ], + "description": "The status of the container of a specific version of an agent.", + "readOnly": true + }, + "max_replicas": { + "type": "integer", + "format": "int32", + "description": "The maximum number of replicas for the container. Default is 1.", + "example": 10 + }, + "min_replicas": { + "type": "integer", + "format": "int32", + "description": "The minimum number of replicas for the container. Default is 1.", + "example": 1 + }, + "error_message": { + "type": "string", + "description": "The error message if the container failed to operate, if any.", + "readOnly": true + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "The creation time of the container.", + "readOnly": true + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "The last update time of the container.", + "readOnly": true + }, + "container": { + "allOf": [ + { + "$ref": "#/components/schemas/ContainerDetails" + } + ], + "description": "The detailed container information.", + "readOnly": true + } + }, + "description": "The details of the container of a specific version of an agent.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } + }, + "AgentContainerOperationError": { + "type": "object", + "required": [ + "code", + "type", + "message" + ], + "properties": { + "code": { + "type": "string", + "description": "The error code of the container operation." + }, + "type": { + "type": "string", + "description": "The error type of the container operation." + }, + "message": { + "type": "string", + "description": "The error message of the container operation." + } + }, + "description": "The error details of the container operation, if any.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } + }, + "AgentContainerOperationObject": { + "type": "object", + "required": [ + "id", + "agent_id", + "agent_version_id", + "status" + ], + "properties": { + "id": { + "type": "string", + "description": "The ID of the container operation. This id is a globally unique identifier." + }, + "agent_id": { + "type": "string", + "description": "The ID of the agent." + }, + "agent_version_id": { + "type": "string", + "description": "The ID of the agent version." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentContainerOperationStatus" + } + ], + "description": "The status of the container operation." + }, + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentContainerOperationError" + } + ], + "description": "The error of the container operation, if any." + }, + "container": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentContainerObject" + } + ], + "description": "The container of the specific version of an agent." + } + }, + "description": "The container operation for a specific version of an agent.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } + }, + "AgentContainerOperationStatus": { + "type": "string", + "enum": [ + "NotStarted", + "InProgress", + "Succeeded", + "Failed" + ], + "description": "Status of the container operation for a specific version of an agent.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } + }, + "AgentContainerStatus": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Starting", + "Running", + "Stopping", + "Stopped", + "Failed", + "Deleting", + "Deleted", + "Updating" + ] + } + ], + "description": "Status of the container of a specific version of an agent.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } + }, + "AgentDefinition": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "$ref": "#/components/schemas/AgentKind" + }, + "rai_config": { + "allOf": [ + { + "$ref": "#/components/schemas/RaiConfig" + } + ], + "description": "Configuration for Responsible AI (RAI) content filtering and safety features." + } + }, + "discriminator": { + "propertyName": "kind", + "mapping": { + "prompt": "#/components/schemas/PromptAgentDefinition", + "workflow": "#/components/schemas/WorkflowAgentDefinition", + "hosted": "#/components/schemas/HostedAgentDefinition", + "container_app": "#/components/schemas/ContainerAppAgentDefinition" + } + }, + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } + }, + "AgentDefinitionOptInKeys": { + "type": "string", + "enum": [ + "HostedAgents=V1Preview", + "WorkflowAgents=V1Preview", + "ContainerAgents=V1Preview" + ], + "description": "Opt-in keys for defining preview Hosted or Workflow Agents." + }, + "AgentEndpoint": { + "type": "object", + "properties": { + "version_selector": { + "allOf": [ + { + "$ref": "#/components/schemas/VersionSelector" + } + ], + "description": "The version selector of the agent endpoint determines how traffic is routed to different versions of the agent." + }, + "protocols": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentEndpointProtocol" + }, + "description": "The protocols that the agent supports" + }, + "authorization_schemes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" + }, + "description": "The authorization schemes supported by the agent endpoint" + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentEndpointAuthorizationScheme": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "$ref": "#/components/schemas/AgentEndpointAuthorizationSchemeType" + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "Entra": "#/components/schemas/EntraAuthorizationScheme", + "BotService": "#/components/schemas/BotServiceAuthorizationScheme", + "BotServiceRbac": "#/components/schemas/BotServiceRbacAuthorizationScheme" + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentEndpointAuthorizationSchemeType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Entra", + "BotService", + "BotServiceRbac" + ] + } + ], + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentEndpointProtocol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "activity", + "responses", + "a2a", + "invocations" + ] + } + ] + }, + "AgentEndpointUpdate": { + "type": "object", + "properties": { + "version_selector": { + "allOf": [ + { + "$ref": "#/components/schemas/VersionSelectorUpdate" + } + ], + "description": "The version selector of the agent endpoint determines how traffic is routed to different versions of the agent." + }, + "protocols": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentEndpointProtocol" + }, + "description": "The protocols that the agent supports" + }, + "authorization_schemes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" + }, + "description": "The authorization schemes supported by the agent endpoint" + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentEvaluation": { + "type": "object", + "required": [ + "id", + "status" + ], + "properties": { + "id": { + "type": "string", + "description": "Identifier of the agent evaluation run." + }, + "status": { + "type": "string", + "description": "Status of the agent evaluation. Options: Running, Completed, Failed." + }, + "error": { + "type": "string", + "description": "The reason of the request failure for the long running process, if applicable." + }, + "result": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AgentEvaluationResult" + }, + "description": "The agent evaluation result." + } + }, + "description": "Evaluation response for agent evaluation run." + }, + "AgentEvaluationRedactionConfiguration": { + "type": "object", + "properties": { + "redactScoreProperties": { + "type": "boolean", + "description": "Redact score properties. If not specified, the default is to redact in production." + } + }, + "description": "The redaction configuration will allow the user to control what is redacted." + }, + "AgentEvaluationRequest": { + "type": "object", + "required": [ + "runId", + "evaluators", + "appInsightsConnectionString" + ], + "properties": { + "runId": { + "type": "string", + "description": "Identifier of the agent run." + }, + "threadId": { + "type": "string", + "description": "Identifier of the agent thread. This field is mandatory currently, but it will be optional in the future." + }, + "evaluators": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/EvaluatorConfiguration" + }, + "description": "Evaluators to be used for the evaluation." + }, + "samplingConfiguration": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentEvaluationSamplingConfiguration" + } + ], + "description": "Sampling configuration for the evaluation." + }, + "redactionConfiguration": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentEvaluationRedactionConfiguration" + } + ], + "description": "Redaction configuration for the evaluation." + }, + "appInsightsConnectionString": { + "type": "string", + "description": "Pass the AppInsights connection string to the agent evaluation for the evaluation results and the errors logs." + } + }, + "description": "Evaluation request for agent run." + }, + "AgentEvaluationResult": { + "type": "object", + "required": [ + "evaluator", + "evaluatorId", + "score", + "status", + "runId" + ], + "properties": { + "evaluator": { + "type": "string", + "description": "Evaluator's name. This is the name of the evaluator that was used to evaluate the agent's completion." + }, + "evaluatorId": { + "type": "string", + "description": "Identifier of the evaluator." + }, + "score": { + "type": "number", + "format": "float", + "description": "Score of the given evaluator. No restriction on range." + }, + "status": { + "type": "string", + "description": "Status of the evaluator result. Options: Running, Completed, Failed, NotApplicable." + }, + "reason": { + "type": "string", + "description": "Reasoning for the evaluation result." + }, + "version": { + "type": "string", + "description": "Version of the evaluator that was used to evaluate the agent's completion." + }, + "threadId": { + "type": "string", + "description": "The unique identifier of the thread." + }, + "runId": { + "type": "string", + "description": "The unique identifier of the run." + }, + "error": { + "type": "string", + "description": "A string explaining why there was an error, if applicable." + }, + "additionalDetails": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional properties relevant to the evaluator. These will differ between evaluators." + } + }, + "description": "Result for the agent evaluation evaluator run." + }, + "AgentEvaluationSamplingConfiguration": { + "type": "object", + "required": [ + "name", + "samplingPercent", + "maxRequestRate" + ], + "properties": { + "name": { + "type": "string", + "description": "Name of the sampling strategy." + }, + "samplingPercent": { + "type": "number", + "format": "float", + "description": "Percentage of sampling per hour (0-100)." + }, + "maxRequestRate": { + "type": "number", + "format": "float", + "description": "Maximum request rate per hour (0 to 1000)." + } + }, + "description": "Definition for sampling strategy." + }, + "AgentId": { + "type": "object", + "required": [ + "type", + "name", + "version" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "agent_id" + ] + }, + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the agent." + }, + "version": { + "type": "string", + "description": "The version identifier of the agent." + } + } + }, + "AgentIdentity": { + "type": "object", + "required": [ + "principal_id", + "client_id" + ], + "properties": { + "principal_id": { + "type": "string", + "description": "The principal ID of the agent instance" + }, + "client_id": { + "type": "string", + "description": "The client ID of the agent instance. Also referred to as the instance ID" + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentKind": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "prompt", + "hosted", + "workflow", + "container_app" + ] + } + ] + }, + "AgentObject": { + "type": "object", + "required": [ + "object", + "id", + "name", + "versions" + ], + "properties": { + "object": { + "type": "string", + "enum": [ + "agent" + ], + "description": "The object type, which is always 'agent'." + }, + "id": { + "type": "string", + "description": "The unique identifier of the agent." + }, + "name": { + "type": "string", + "maxLength": 63, + "description": "The name of the agent." + }, + "versions": { + "type": "object", + "properties": { + "latest": { + "$ref": "#/components/schemas/AgentVersionObject" + } + }, + "required": [ + "latest" + ], + "description": "The latest version of the agent." + }, + "agent_endpoint": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentEndpoint" + } + ], + "description": "The endpoint configuration for the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "instance_identity": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentIdentity" + } + ], + "description": "The instance identity of the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "blueprint": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentIdentity" + } + ], + "description": "The blueprint for the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "blueprint_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentBlueprintReference" + } + ], + "description": "The blueprint for the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "agent_card": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentCard" + } + ], + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + } + } + }, + "AgentProtocol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "activity_protocol", + "responses", + "invocations" + ] + } + ] + }, + "AgentReference": { + "type": "object", + "required": [ + "type", + "name" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "agent_reference" + ] + }, + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the agent." + }, + "version": { + "type": "string", + "description": "The version identifier of the agent." + } + } + }, + "AgentSessionResource": { + "type": "object", + "required": [ + "agent_session_id", + "version_indicator", + "status", + "created_at", + "last_accessed_at", + "expires_at" + ], + "properties": { + "agent_session_id": { + "type": "string", + "description": "The session identifier." + }, + "version_indicator": { + "allOf": [ + { + "$ref": "#/components/schemas/VersionIndicator" + } + ], + "description": "The version indicator determining which agent version backs this session." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentSessionStatus" + } + ], + "description": "The current status of the session." + }, + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "The Unix timestamp (in seconds) when the session was created.", + "readOnly": true + }, + "last_accessed_at": { + "type": "integer", + "format": "unixtime", + "description": "The Unix timestamp (in seconds) when the session was last accessed.", + "readOnly": true + }, + "expires_at": { + "type": "integer", + "format": "unixtime", + "description": "The Unix timestamp (in seconds) when the session expires (rolling, 30 days from last activity).", + "readOnly": true + } + }, + "description": "An agent session providing a long-lived compute sandbox for hosted agent invocations.", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentSessionStatus": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "creating", + "active", + "idle", + "updating", + "failed", + "deleting", + "deleted", + "expired" + ] + } + ], + "description": "The status of an agent session.", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "AgentTaxonomyInput": { + "type": "object", + "required": [ + "type", + "target", + "riskCategories" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "agent" + ], + "description": "Input type of the evaluation taxonomy." + }, + "target": { + "allOf": [ + { + "$ref": "#/components/schemas/Target" + } + ], + "description": "Target configuration for the agent." + }, + "riskCategories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RiskCategory" + }, + "description": "List of risk categories to evaluate against." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationTaxonomyInput" + } + ], + "description": "Input configuration for the evaluation taxonomy when the input type is agent." + }, + "AgentTaxonomyInputUpdate": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "agent" + ], + "description": "Input type of the evaluation taxonomy." + }, + "target": { + "allOf": [ + { + "$ref": "#/components/schemas/TargetUpdate" + } + ], + "description": "Target configuration for the agent." + }, + "riskCategories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RiskCategory" + }, + "description": "List of risk categories to evaluate against." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationTaxonomyInputUpdate" + } + ], + "description": "Input configuration for the evaluation taxonomy when the input type is agent." + }, + "AgentVersionObject": { + "type": "object", + "required": [ + "metadata", + "object", + "id", + "name", + "version", + "created_at", + "definition", + "status" + ], + "properties": { + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "nullable": true, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" + }, + "object": { + "type": "string", + "enum": [ + "agent.version" + ], + "description": "The object type, which is always 'agent.version'." + }, + "id": { + "type": "string", + "description": "The unique identifier of the agent version." + }, + "name": { + "type": "string", + "maxLength": 256, + "description": "The name of the agent. Name can be used to retrieve/update/delete the agent." + }, + "version": { + "type": "string", + "description": "The version identifier of the agent. Agents are immutable and every update creates a new version while keeping the name same." + }, + "description": { + "type": "string", + "maxLength": 512, + "description": "A human-readable description of the agent." + }, + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "The Unix timestamp (seconds) when the agent was created." + }, + "definition": { + "$ref": "#/components/schemas/AgentDefinition" + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentVersionStatus" + } + ], + "description": "The provisioning status of the agent version. Defaults to 'active' for non-hosted agents. For hosted agents, reflects infrastructure readiness.", + "default": "active" + }, + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Error" + } + ], + "description": "Error details if the agent version provisioning failed." + }, + "instance_identity": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentIdentity" + } + ], + "description": "The instance identity of the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + }, + "readOnly": true + }, + "blueprint": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentIdentity" + } + ], + "description": "The blueprint for the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + }, + "readOnly": true + }, + "blueprint_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentBlueprintReference" + } + ], + "description": "The blueprint for the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + }, + "readOnly": true + }, + "agent_guid": { + "type": "string", + "description": "The unique GUID identifier of the agent.", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + }, + "readOnly": true + } } }, - "Azure.Core.Foundations.ApiVersionParameter": { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string", - "minLength": 1 - }, - "explode": false - } - }, - "schemas": { - "A2APreviewTool": { + "AgentVersionStatus": { + "type": "string", + "enum": [ + "creating", + "active", + "failed", + "deleting", + "deleted" + ], + "description": "The provisioning status of an agent version." + }, + "AgenticIdentityPreviewCredentials": { "type": "object", "required": [ "type" @@ -11635,574 +19033,592 @@ "type": { "type": "string", "enum": [ - "a2a_preview" + "AgenticIdentityToken_Preview" ], - "description": "The type of the tool. Always `\"a2a_preview`." - }, - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "base_url": { - "type": "string", - "format": "uri", - "description": "Base URL of the agent." - }, - "agent_card_path": { - "type": "string", - "description": "The path to the agent card relative to the `base_url`.\nIf not provided, defaults to `/.well-known/agent-card.json`" - }, - "project_connection_id": { - "type": "string", - "description": "The connection ID in the project for the A2A server.\nThe connection stores authentication and other connection details needed to connect to the A2A server." + "description": "The credential type", + "readOnly": true } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.Tool" + "$ref": "#/components/schemas/BaseCredentials" } ], - "description": "An agent implementing the A2A protocol." + "description": "Agentic identity credential definition" }, - "A2AToolCall": { + "ApiErrorResponse": { "type": "object", "required": [ - "type", - "call_id", - "name", - "arguments", - "status" + "error" + ], + "properties": { + "error": { + "$ref": "#/components/schemas/OpenAI.Error" + } + }, + "description": "Error response for API failures." + }, + "ApiKeyCredentials": { + "type": "object", + "required": [ + "type" ], "properties": { "type": { "type": "string", "enum": [ - "a2a_preview_call" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "name": { - "type": "string", - "description": "The name of the A2A agent card being called." + "ApiKey" + ], + "description": "The credential type", + "readOnly": true }, - "arguments": { + "key": { "type": "string", - "description": "A JSON string of the arguments to pass to the tool." - }, - "status": { + "description": "API Key", + "readOnly": true + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/BaseCredentials" + } + ], + "description": "API Key Credential definition" + }, + "AssetCredentialResponse": { + "type": "object", + "required": [ + "blobReference" + ], + "properties": { + "blobReference": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/BlobReference" } ], - "description": "The status of the tool call." + "description": "Credential info to access the storage account." } }, - "allOf": [ + "description": "Represents a reference to a blob for consumption" + }, + "AssetId": { + "type": "string", + "description": "Identifier of a saved asset." + }, + "AssetTypes": { + "anyOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "type": "string" + }, + { + "type": "string", + "enum": [ + "uri_file", + "uri_folder", + "safetensors_model", + "literal" + ] } ], - "description": "An A2A (Agent-to-Agent) tool call." + "description": "Type of job input/output asset." }, - "A2AToolCallOutput": { + "AssistantMessage": { "type": "object", "required": [ - "type", - "call_id", - "name", - "status" + "role", + "content" ], "properties": { - "type": { + "role": { "type": "string", "enum": [ - "a2a_preview_call_output" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "name": { - "type": "string", - "description": "The name of the A2A agent card that was called." - }, - "output": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallOutputContent" - } + "assistant" ], - "description": "The output from the A2A tool call." + "description": "Indicates this is an assistant message." }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } - ], - "description": "The status of the tool call." + "content": { + "type": "string", + "description": "Response content generated by the assistant." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/Message" } ], - "description": "The output of an A2A (Agent-to-Agent) tool call." + "description": "A message generated by the assistant in response to previous messages." }, - "AISearchIndexResource": { + "AttackStrategy": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "easy", + "moderate", + "difficult", + "ascii_art", + "ascii_smuggler", + "atbash", + "base64", + "binary", + "caesar", + "character_space", + "jailbreak", + "ansi_attack", + "character_swap", + "suffix_append", + "string_join", + "unicode_confusable", + "unicode_substitution", + "diacritic", + "flip", + "leetspeak", + "rot13", + "morse", + "url", + "baseline", + "indirect_jailbreak", + "tense", + "multi_turn", + "crescendo" + ] + } + ], + "description": "Strategies for attacks." + }, + "Azure.Core.Foundations.Error": { "type": "object", + "required": [ + "code", + "message" + ], "properties": { - "project_connection_id": { + "code": { "type": "string", - "description": "An index connection ID in an IndexResource attached to this agent." + "description": "One of a server-defined set of error codes." }, - "index_name": { + "message": { "type": "string", - "description": "The name of an index in an IndexResource attached to this agent." + "description": "A human-readable representation of the error." }, - "name": { + "target": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "description": "The target of the error." }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "details": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Azure.Core.Foundations.Error" + }, + "description": "An array of details about specific errors that led to this reported error." }, - "query_type": { + "innererror": { "allOf": [ { - "$ref": "#/components/schemas/AzureAISearchQueryType" + "$ref": "#/components/schemas/Azure.Core.Foundations.InnerError" } ], - "description": "Type of query in an AIIndexResource attached to this agent." - }, - "top_k": { - "type": "integer", - "format": "int32", - "description": "Number of documents to retrieve from search and present to the model." - }, - "filter": { - "type": "string", - "description": "filter string for search resource. [Learn more here](https://learn.microsoft.com/azure/search/search-filters)." - }, - "index_asset_id": { - "type": "string", - "description": "Index asset id for search resource." + "description": "An object containing more specific information than the current object about the error." } }, - "description": "A AI Search Index resource." + "description": "The error object." }, - "AgentBlueprintReference": { + "Azure.Core.Foundations.ErrorResponse": { "type": "object", "required": [ - "type" + "error" ], "properties": { - "type": { - "$ref": "#/components/schemas/AgentBlueprintReferenceType" + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/Azure.Core.Foundations.Error" + } + ], + "description": "The error object." } }, - "discriminator": { - "propertyName": "type", - "mapping": { - "ManagedAgentIdentityBlueprint": "#/components/schemas/ManagedAgentIdentityBlueprintReference" + "description": "A response containing error details." + }, + "Azure.Core.Foundations.InnerError": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "One of a server-defined set of error codes." + }, + "innererror": { + "allOf": [ + { + "$ref": "#/components/schemas/Azure.Core.Foundations.InnerError" + } + ], + "description": "Inner error." } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "An object containing more specific information about the error. As per Azure REST API guidelines - https://aka.ms/AzureRestApiGuidelines#handling-errors." }, - "AgentBlueprintReferenceType": { + "Azure.Core.Foundations.OperationState": { "anyOf": [ - { - "type": "string" - }, { "type": "string", "enum": [ - "ManagedAgentIdentityBlueprint" + "NotStarted", + "Running", + "Succeeded", + "Failed", + "Canceled" ] + }, + { + "type": "string" } ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "Enum describing allowed operation states." }, - "AgentCard": { + "Azure.Core.uuid": { + "type": "string", + "format": "uuid", + "description": "Universally Unique Identifier" + }, + "AzureAIAgentTarget": { "type": "object", "required": [ - "version", - "skills" + "type", + "name" ], "properties": { - "version": { + "type": { "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "The version of the agent card." + "enum": [ + "azure_ai_agent" + ], + "description": "The type of target, always `azure_ai_agent`." }, - "description": { + "name": { "type": "string", - "maxLength": 2048, - "description": "The description of the agent card." + "description": "The unique identifier of the Azure AI agent." }, - "skills": { + "version": { + "type": "string", + "description": "The version of the Azure AI agent." + }, + "tool_descriptions": { "type": "array", "items": { - "$ref": "#/components/schemas/AgentCardSkill" + "$ref": "#/components/schemas/ToolDescription" }, - "maxItems": 16, - "description": "The set of skills that an agent can perform." + "description": "The parameters used to control the sampling behavior of the agent during text generation." } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "allOf": [ + { + "$ref": "#/components/schemas/Target" + } + ], + "description": "Represents a target specifying an Azure AI agent." }, - "AgentCardSkill": { + "AzureAIAgentTargetUpdate": { "type": "object", - "required": [ - "id", - "name" - ], "properties": { - "id": { + "type": { "type": "string", - "minLength": 1, - "maxLength": 64, - "description": "a unique identifier for the skill" + "enum": [ + "azure_ai_agent" + ], + "description": "The type of target, always `azure_ai_agent`." }, "name": { "type": "string", - "minLength": 1, - "maxLength": 128, - "description": "The name of the skill" + "description": "The unique identifier of the Azure AI agent." }, - "description": { + "version": { "type": "string", - "maxLength": 2048, - "description": "A description of the skill" - }, - "tags": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AgentCardSkillTag" - }, - "maxItems": 5, - "description": "set of tagwords describing classes of capabilities for the skill" + "description": "The version of the Azure AI agent." }, - "examples": { + "tool_descriptions": { "type": "array", "items": { - "$ref": "#/components/schemas/AgentCardSkillExample" + "$ref": "#/components/schemas/ToolDescription" }, - "maxItems": 5, - "description": "A list of example scenarios that the skill can perform." + "description": "The parameters used to control the sampling behavior of the agent during text generation." } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "AgentCardSkillExample": { - "type": "string", - "maxLength": 1024, - "description": "A skill example string with a maximum length of 1024 characters.", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "AgentCardSkillTag": { - "type": "string", - "maxLength": 32, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "allOf": [ + { + "$ref": "#/components/schemas/TargetUpdate" + } + ], + "description": "Represents a target specifying an Azure AI agent." }, - "AgentCardUpdate": { + "AzureAIBenchmarkDataSourceConfig": { "type": "object", + "required": [ + "scenario", + "benchmark_name" + ], "properties": { - "version": { + "scenario": { "type": "string", - "minLength": 1, - "maxLength": 32, - "description": "The version of the agent card." + "enum": [ + "benchmark_preview" + ], + "description": "Data schema scenario, always `benchmark` for benchmark evaluations." }, - "description": { + "benchmark_name": { + "allOf": [ + { + "$ref": "#/components/schemas/BenchmarkName" + } + ], + "description": "The name of the benchmark specification." + }, + "benchmark_version": { "type": "string", - "maxLength": 2048, - "description": "The description of the agent card." + "description": "The version of the benchmark specification (e.g., '0.1'). Latest version if not specified." }, - "skills": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AgentCardSkill" - }, - "maxItems": 16, - "description": "The set of skills that an agent can perform." + "grader_model": { + "type": "string", + "description": "Optional grader model for benchmarks that use model graders, Required when the benchmark's testing_criteria uses a model grader type." } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "allOf": [ + { + "$ref": "#/components/schemas/AzureAIDataSourceConfig" + } + ], + "description": "Data source configuration for benchmark evaluations." }, - "AgentClusterInsightRequest": { + "AzureAIBenchmarkPreviewEvalRunDataSource": { "type": "object", "required": [ "type", - "agentName" + "target" ], "properties": { "type": { "type": "string", "enum": [ - "AgentClusterInsight" + "azure_ai_benchmark_preview" ], - "description": "The type of request." - }, - "agentName": { - "type": "string", - "description": "Identifier for the agent." + "description": "The type of data source, always `azure_ai_benchmark_preview`." }, - "modelConfiguration": { + "input_messages": { "allOf": [ { - "$ref": "#/components/schemas/InsightModelConfiguration" + "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSourceInputMessagesItemReference" } ], - "description": "Configuration of the model used in the insight generation." + "description": "Input messages configuration." + }, + "target": { + "anyOf": [ + { + "$ref": "#/components/schemas/AzureAIModelTarget" + }, + { + "$ref": "#/components/schemas/AzureAIAgentTarget" + } + ], + "description": "The target model or agent to evaluate against the benchmark.\nWhen using `azure_ai_model` target, `sampling_params` must not be provided;\ninference parameters are auto-filled from the benchmark specification stored in eval group properties." } }, "allOf": [ { - "$ref": "#/components/schemas/InsightRequest" + "$ref": "#/components/schemas/EvalRunDataSource" } ], - "description": "Insights on set of Agent Evaluation Results" + "description": "Represents a data source for benchmark evaluation runs." }, - "AgentClusterInsightResult": { + "AzureAIDataSourceConfig": { "type": "object", "required": [ "type", - "clusterInsight" + "scenario" ], "properties": { "type": { "type": "string", "enum": [ - "AgentClusterInsight" + "azure_ai_source" ], - "description": "The type of insights result." + "description": "The object type, which is always `azure_ai_source`." }, - "clusterInsight": { - "$ref": "#/components/schemas/ClusterInsightResult" + "scenario": { + "type": "string", + "enum": [ + "red_team", + "responses", + "traces_preview", + "synthetic_data_gen_preview", + "benchmark_preview" + ], + "description": "Data schema scenario." + } + }, + "discriminator": { + "propertyName": "scenario", + "mapping": { + "benchmark_preview": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" } }, "allOf": [ { - "$ref": "#/components/schemas/InsightResult" + "$ref": "#/components/schemas/DataSourceConfig" } - ], - "description": "Insights from the agent cluster analysis." + ] }, - "AgentContainerObject": { + "AzureAIModelTarget": { "type": "object", "required": [ - "object", - "status", - "created_at", - "updated_at" + "type" ], "properties": { - "object": { + "type": { "type": "string", "enum": [ - "agent.container" + "azure_ai_model" ], - "description": "The object type, which is always 'agent.container'.", - "readOnly": true + "description": "The type of target, always `azure_ai_model`." }, - "id": { + "model": { "type": "string", - "description": "The identifier of the container.", - "readOnly": true + "description": "The unique identifier of the Azure AI model." }, - "status": { + "sampling_params": { "allOf": [ { - "$ref": "#/components/schemas/AgentContainerStatus" + "$ref": "#/components/schemas/ModelSamplingParams" } ], - "description": "The status of the container of a specific version of an agent.", - "readOnly": true - }, - "max_replicas": { - "type": "integer", - "format": "int32", - "description": "The maximum number of replicas for the container. Default is 1.", - "example": 10 - }, - "min_replicas": { - "type": "integer", - "format": "int32", - "description": "The minimum number of replicas for the container. Default is 1.", - "example": 1 - }, - "error_message": { - "type": "string", - "description": "The error message if the container failed to operate, if any.", - "readOnly": true - }, - "created_at": { + "description": "The parameters used to control the sampling behavior of the model during text generation." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/Target" + } + ], + "description": "Represents a target specifying an Azure AI model for operations requiring model selection." + }, + "AzureAIModelTargetUpdate": { + "type": "object", + "properties": { + "type": { "type": "string", - "format": "date-time", - "description": "The creation time of the container.", - "readOnly": true + "enum": [ + "azure_ai_model" + ], + "description": "The type of target, always `azure_ai_model`." }, - "updated_at": { + "model": { "type": "string", - "format": "date-time", - "description": "The last update time of the container.", - "readOnly": true + "description": "The unique identifier of the Azure AI model." }, - "container": { + "sampling_params": { "allOf": [ { - "$ref": "#/components/schemas/ContainerDetails" + "$ref": "#/components/schemas/ModelSamplingParamsUpdate" } ], - "description": "The detailed container information.", - "readOnly": true + "description": "The parameters used to control the sampling behavior of the model during text generation." } }, - "description": "The details of the container of a specific version of an agent.", - "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" - ] - } + "allOf": [ + { + "$ref": "#/components/schemas/TargetUpdate" + } + ], + "description": "Represents a target specifying an Azure AI model for operations requiring model selection." }, - "AgentContainerOperationError": { + "AzureAIResponsesEvalRunDataSource": { "type": "object", "required": [ - "code", "type", - "message" + "item_generation_params", + "max_runs_hourly", + "event_configuration_id" ], "properties": { - "code": { - "type": "string", - "description": "The error code of the container operation." - }, "type": { "type": "string", - "description": "The error type of the container operation." + "enum": [ + "azure_ai_responses" + ], + "description": "The type of data source, always `azure_ai_responses`." }, - "message": { + "item_generation_params": { + "allOf": [ + { + "$ref": "#/components/schemas/ResponseRetrievalItemGenerationParams" + } + ], + "description": "The parameters for item generation." + }, + "max_runs_hourly": { + "type": "integer", + "format": "int32", + "description": "Maximum number of evaluation runs allowed per hour." + }, + "event_configuration_id": { "type": "string", - "description": "The error message of the container operation." + "description": "The event configuration name associated with this evaluation run." } }, - "description": "The error details of the container operation, if any.", - "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" - ] - } + "allOf": [ + { + "$ref": "#/components/schemas/EvalRunDataSource" + } + ], + "description": "Represents a data source for evaluation runs that are specific to Continuous Evaluation scenarios." }, - "AgentContainerOperationObject": { + "AzureAISearchIndex": { "type": "object", "required": [ - "id", - "agent_id", - "agent_version_id", - "status" + "type" ], "properties": { - "id": { - "type": "string", - "description": "The ID of the container operation. This id is a globally unique identifier." - }, - "agent_id": { - "type": "string", - "description": "The ID of the agent." - }, - "agent_version_id": { + "type": { "type": "string", - "description": "The ID of the agent version." - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentContainerOperationStatus" - } - ], - "description": "The status of the container operation." - }, - "error": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentContainerOperationError" - } - ], - "description": "The error of the container operation, if any." - }, - "container": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentContainerObject" - } + "enum": [ + "AzureSearch" ], - "description": "The container of the specific version of an agent." + "description": "Type of index" } }, - "description": "The container operation for a specific version of an agent.", - "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" - ] - } + "allOf": [ + { + "$ref": "#/components/schemas/Index" + } + ], + "description": "Azure AI Search Index Definition" }, - "AgentContainerOperationStatus": { - "type": "string", - "enum": [ - "NotStarted", - "InProgress", - "Succeeded", - "Failed" + "AzureAISearchIndexUpdate": { + "type": "object", + "required": [ + "type" ], - "description": "Status of the container operation for a specific version of an agent.", - "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" - ] - } + "properties": { + "type": { + "type": "string", + "enum": [ + "AzureSearch" + ], + "description": "Type of index" + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/IndexUpdate" + } + ], + "description": "Azure AI Search Index Definition" }, - "AgentContainerStatus": { + "AzureAISearchQueryType": { "anyOf": [ { "type": "string" @@ -12210,622 +19626,511 @@ { "type": "string", "enum": [ - "Starting", - "Running", - "Stopping", - "Stopped", - "Failed", - "Deleting", - "Deleted", - "Updating" + "simple", + "semantic", + "vector", + "vector_simple_hybrid", + "vector_semantic_hybrid" ] } ], - "description": "Status of the container of a specific version of an agent.", - "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" - ] - } + "description": "Available query types for Azure AI Search tool." }, - "AgentDefinition": { + "AzureAISearchTool": { "type": "object", "required": [ - "kind" + "type", + "azure_ai_search" ], "properties": { - "kind": { - "$ref": "#/components/schemas/AgentKind" + "type": { + "type": "string", + "enum": [ + "azure_ai_search" + ], + "description": "The object type, which is always 'azure_ai_search'." }, - "rai_config": { + "name": { + "type": "string", + "description": "Optional user-defined name for this tool or configuration." + }, + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "azure_ai_search": { "allOf": [ { - "$ref": "#/components/schemas/RaiConfig" + "$ref": "#/components/schemas/AzureAISearchToolResource" } ], - "description": "Configuration for Responsible AI (RAI) content filtering and safety features." + "description": "The azure ai search index resource." } }, - "discriminator": { - "propertyName": "kind", - "mapping": { - "prompt": "#/components/schemas/PromptAgentDefinition", - "workflow": "#/components/schemas/WorkflowAgentDefinition", - "hosted": "#/components/schemas/HostedAgentDefinition", - "container_app": "#/components/schemas/ContainerAppAgentDefinition" + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Tool" } - }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" - ] - } - }, - "AgentDefinitionOptInKeys": { - "type": "string", - "enum": [ - "HostedAgents=V1Preview", - "WorkflowAgents=V1Preview", - "ContainerAgents=V1Preview" ], - "description": "Opt-in keys for defining preview Hosted or Workflow Agents." + "description": "The input definition information for an Azure AI search tool as used to configure an agent." }, - "AgentEndpoint": { + "AzureAISearchToolCall": { "type": "object", + "required": [ + "type", + "call_id", + "arguments", + "status" + ], "properties": { - "version_selector": { + "type": { + "type": "string", + "enum": [ + "azure_ai_search_call" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "arguments": { + "type": "string", + "description": "A JSON string of the arguments to pass to the tool." + }, + "status": { "allOf": [ { - "$ref": "#/components/schemas/VersionSelector" + "$ref": "#/components/schemas/ToolCallStatus" } ], - "description": "The version selector of the agent endpoint determines how traffic is routed to different versions of the agent." - }, - "protocols": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AgentEndpointProtocol" - }, - "description": "The protocols that the agent supports" - }, - "authorization_schemes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" - }, - "description": "The authorization schemes supported by the agent endpoint" + "description": "The status of the tool call." } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.OutputItem" + } + ], + "description": "An Azure AI Search tool call." }, - "AgentEndpointAuthorizationScheme": { + "AzureAISearchToolCallOutput": { "type": "object", "required": [ - "type" + "type", + "call_id", + "status" ], "properties": { "type": { - "$ref": "#/components/schemas/AgentEndpointAuthorizationSchemeType" - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "Entra": "#/components/schemas/EntraAuthorizationScheme", - "BotService": "#/components/schemas/BotServiceAuthorizationScheme", - "BotServiceRbac": "#/components/schemas/BotServiceRbacAuthorizationScheme" - } - }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "AgentEndpointAuthorizationSchemeType": { - "anyOf": [ - { - "type": "string" - }, - { "type": "string", "enum": [ - "Entra", - "BotService", - "BotServiceRbac" + "azure_ai_search_call_output" ] - } - ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "AgentEndpointProtocol": { - "anyOf": [ - { - "type": "string" }, - { + "call_id": { "type": "string", - "enum": [ - "activity", - "responses", - "a2a", - "invocations" - ] - } - ] - }, - "AgentEndpointUpdate": { - "type": "object", - "properties": { - "version_selector": { + "description": "The unique ID of the tool call generated by the model." + }, + "output": { "allOf": [ { - "$ref": "#/components/schemas/VersionSelectorUpdate" + "$ref": "#/components/schemas/ToolCallOutputContent" } ], - "description": "The version selector of the agent endpoint determines how traffic is routed to different versions of the agent." + "description": "The output from the Azure AI Search tool call." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.OutputItem" + } + ], + "description": "The output of an Azure AI Search tool call." + }, + "AzureAISearchToolResource": { + "type": "object", + "required": [ + "indexes" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional user-defined name for this tool or configuration." }, - "protocols": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AgentEndpointProtocol" - }, - "description": "The protocols that the agent supports" + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." }, - "authorization_schemes": { + "indexes": { "type": "array", "items": { - "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" + "$ref": "#/components/schemas/AISearchIndexResource" }, - "description": "The authorization schemes supported by the agent endpoint" + "maxItems": 1, + "description": "The indices attached to this agent. There can be a maximum of 1 index\nresource attached to the agent." } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "A set of index resources used by the `azure_ai_search` tool." }, - "AgentEvaluation": { + "AzureContentFilterBlocklistIdResult": { "type": "object", "required": [ "id", - "status" + "filtered" ], "properties": { "id": { "type": "string", - "description": "Identifier of the agent evaluation run." + "description": "The ID of the custom blocklist." }, - "status": { + "filtered": { + "type": "boolean", + "description": "Whether the blocklist resulted in filtering." + } + }, + "description": "A content filter blocklist ID result." + }, + "AzureContentFilterBlocklistResult": { + "type": "object", + "required": [ + "filtered" + ], + "properties": { + "filtered": { + "type": "boolean", + "description": "Whether any blocklist resulted in filtering." + }, + "details": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AzureContentFilterBlocklistIdResult" + }, + "description": "The pairs of individual blocklist IDs and their filtering results." + } + }, + "description": "A collection of filtering results for configured custom blocklists." + }, + "AzureContentFilterCitation": { + "type": "object", + "properties": { + "license": { "type": "string", - "description": "Status of the agent evaluation. Options: Running, Completed, Failed." + "description": "The license associated with the detection." }, - "error": { + "url": { "type": "string", - "description": "The reason of the request failure for the long running process, if applicable." + "format": "uri", + "description": "The URL associated with the license." + } + }, + "description": "Citation details for protected material detection." + }, + "AzureContentFilterCompletionTextSpan": { + "type": "object", + "required": [ + "completion_start_offset", + "completion_end_offset" + ], + "properties": { + "completion_start_offset": { + "type": "integer", + "format": "int32", + "description": "Offset of the UTF32 code point which begins the span." }, - "result": { + "completion_end_offset": { + "type": "integer", + "format": "int32", + "description": "Offset of the first UTF32 code point which is excluded from the span." + } + }, + "description": "A representation of a span of completion text as used by Azure OpenAI content filter results." + }, + "AzureContentFilterCompletionTextSpanDetectionResult": { + "type": "object", + "required": [ + "filtered", + "detected", + "details" + ], + "properties": { + "filtered": { + "type": "boolean", + "description": "Whether the content was filtered." + }, + "detected": { + "type": "boolean", + "description": "Whether the content category was detected." + }, + "details": { "type": "array", "items": { - "$ref": "#/components/schemas/AgentEvaluationResult" + "$ref": "#/components/schemas/AzureContentFilterCompletionTextSpan" }, - "description": "The agent evaluation result." + "description": "Detailed information about the detected completion text spans." } }, - "description": "Evaluation response for agent evaluation run." + "description": "A content filter detection result with completion text span details." }, - "AgentEvaluationRedactionConfiguration": { + "AzureContentFilterDetectionResult": { "type": "object", + "required": [ + "filtered", + "detected" + ], "properties": { - "redactScoreProperties": { + "filtered": { "type": "boolean", - "description": "Redact score properties. If not specified, the default is to redact in production." + "description": "Whether the content was filtered." + }, + "detected": { + "type": "boolean", + "description": "Whether the content category was detected." } }, - "description": "The redaction configuration will allow the user to control what is redacted." + "description": "A content filter result indicating whether the content was detected and filtered." }, - "AgentEvaluationRequest": { + "AzureContentFilterDetectionWithCitationResult": { "type": "object", "required": [ - "runId", - "evaluators", - "appInsightsConnectionString" + "filtered", + "detected" ], "properties": { - "runId": { - "type": "string", - "description": "Identifier of the agent run." - }, - "threadId": { - "type": "string", - "description": "Identifier of the agent thread. This field is mandatory currently, but it will be optional in the future." - }, - "evaluators": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/EvaluatorConfiguration" - }, - "description": "Evaluators to be used for the evaluation." + "filtered": { + "type": "boolean", + "description": "Whether the content was filtered." }, - "samplingConfiguration": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentEvaluationSamplingConfiguration" - } - ], - "description": "Sampling configuration for the evaluation." + "detected": { + "type": "boolean", + "description": "Whether the content category was detected." }, - "redactionConfiguration": { + "citation": { "allOf": [ { - "$ref": "#/components/schemas/AgentEvaluationRedactionConfiguration" + "$ref": "#/components/schemas/AzureContentFilterCitation" } ], - "description": "Redaction configuration for the evaluation." - }, - "appInsightsConnectionString": { - "type": "string", - "description": "Pass the AppInsights connection string to the agent evaluation for the evaluation results and the errors logs." + "description": "Citation details describing the associated license and its location." } }, - "description": "Evaluation request for agent run." + "description": "A content filter detection result that includes citation information for protected material." }, - "AgentEvaluationResult": { + "AzureContentFilterDetectionWithReasonResult": { "type": "object", "required": [ - "evaluator", - "evaluatorId", - "score", - "status", - "runId" + "filtered", + "detected" ], "properties": { - "evaluator": { - "type": "string", - "description": "Evaluator's name. This is the name of the evaluator that was used to evaluate the agent's completion." - }, - "evaluatorId": { - "type": "string", - "description": "Identifier of the evaluator." - }, - "score": { - "type": "number", - "format": "float", - "description": "Score of the given evaluator. No restriction on range." + "filtered": { + "type": "boolean", + "description": "Whether the content was filtered." }, - "status": { - "type": "string", - "description": "Status of the evaluator result. Options: Running, Completed, Failed, NotApplicable." + "detected": { + "type": "boolean", + "description": "Whether the content category was detected." }, "reason": { "type": "string", - "description": "Reasoning for the evaluation result." - }, - "version": { - "type": "string", - "description": "Version of the evaluator that was used to evaluate the agent's completion." - }, - "threadId": { - "type": "string", - "description": "The unique identifier of the thread." - }, - "runId": { - "type": "string", - "description": "The unique identifier of the run." - }, - "error": { - "type": "string", - "description": "A string explaining why there was an error, if applicable." - }, - "additionalDetails": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional properties relevant to the evaluator. These will differ between evaluators." + "description": "A human-readable explanation of why the detection result was produced." } }, - "description": "Result for the agent evaluation evaluator run." + "description": "A content filter detection result that includes a reason description." }, - "AgentEvaluationSamplingConfiguration": { + "AzureContentFilterError": { "type": "object", "required": [ - "name", - "samplingPercent", - "maxRequestRate" + "code", + "message" ], "properties": { - "name": { - "type": "string", - "description": "Name of the sampling strategy." - }, - "samplingPercent": { - "type": "number", - "format": "float", - "description": "Percentage of sampling per hour (0-100)." + "code": { + "type": "integer", + "format": "int32", + "description": "A machine-readable error code." }, - "maxRequestRate": { - "type": "number", - "format": "float", - "description": "Maximum request rate per hour (0 to 1000)." + "message": { + "type": "string", + "description": "A human-readable error message." } }, - "description": "Definition for sampling strategy." + "description": "Error details from the content filtering system." }, - "AgentId": { + "AzureContentFilterPersonallyIdentifiableInformationResult": { "type": "object", "required": [ - "type", - "name", - "version" + "filtered", + "detected" ], "properties": { - "type": { - "type": "string", - "enum": [ - "agent_id" - ] + "filtered": { + "type": "boolean", + "description": "Whether the content was filtered." }, - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the agent." + "detected": { + "type": "boolean", + "description": "Whether PII was detected in the content." }, - "version": { - "type": "string", - "description": "The version identifier of the agent." + "sub_categories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AzureContentFilterPiiSubCategoryResult" + }, + "description": "Detailed results for individual PII subcategories." } - } + }, + "description": "A content filter detection result for Personally Identifiable Information." }, - "AgentIdentity": { + "AzureContentFilterPiiSubCategoryResult": { "type": "object", "required": [ - "principal_id", - "client_id" + "sub_category", + "filtered", + "detected" ], "properties": { - "principal_id": { + "sub_category": { "type": "string", - "description": "The principal ID of the agent instance" + "description": "The PII subcategory that was evaluated." }, - "client_id": { - "type": "string", - "description": "The client ID of the agent instance. Also referred to as the instance ID" - } - }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "AgentKind": { - "anyOf": [ - { - "type": "string" + "filtered": { + "type": "boolean", + "description": "Whether the content was filtered for this subcategory." }, - { - "type": "string", - "enum": [ - "prompt", - "hosted", - "workflow", - "container_app" - ] + "detected": { + "type": "boolean", + "description": "Whether the subcategory was detected in the content." } - ] + }, + "description": "Result details for an individual PII subcategory." }, - "AgentObject": { + "AzureContentFilterResultsForResponses": { "type": "object", - "required": [ - "object", - "id", - "name", - "versions" - ], "properties": { - "object": { - "type": "string", - "enum": [ - "agent" + "sexual": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterSeverityResult" + } ], - "description": "The object type, which is always 'agent'." - }, - "id": { - "type": "string", - "description": "The unique identifier of the agent." - }, - "name": { - "type": "string", - "maxLength": 63, - "description": "The name of the agent." + "description": "Severity result for sexual content." }, - "versions": { - "type": "object", - "properties": { - "latest": { - "$ref": "#/components/schemas/AgentVersionObject" + "hate": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterSeverityResult" } - }, - "required": [ - "latest" ], - "description": "The latest version of the agent." + "description": "Severity result for hate content." }, - "agent_endpoint": { + "violence": { "allOf": [ { - "$ref": "#/components/schemas/AgentEndpoint" + "$ref": "#/components/schemas/AzureContentFilterSeverityResult" } ], - "description": "The endpoint configuration for the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "Severity result for violence content." }, - "instance_identity": { + "self_harm": { "allOf": [ { - "$ref": "#/components/schemas/AgentIdentity" + "$ref": "#/components/schemas/AzureContentFilterSeverityResult" } ], - "description": "The instance identity of the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "Severity result for self-harm content." }, - "blueprint": { + "profanity": { "allOf": [ { - "$ref": "#/components/schemas/AgentIdentity" + "$ref": "#/components/schemas/AzureContentFilterDetectionResult" } ], - "description": "The blueprint for the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "Detection result for profanity." }, - "blueprint_reference": { + "custom_blocklists": { "allOf": [ { - "$ref": "#/components/schemas/AgentBlueprintReference" + "$ref": "#/components/schemas/AzureContentFilterBlocklistResult" } ], - "description": "The blueprint for the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "Results for configured custom blocklists." }, - "agent_card": { + "jailbreak": { "allOf": [ { - "$ref": "#/components/schemas/AgentCard" + "$ref": "#/components/schemas/AzureContentFilterDetectionResult" } ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - } - } - }, - "AgentProtocol": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "activity_protocol", - "responses", - "invocations" - ] - } - ] - }, - "AgentReference": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "agent_reference" - ] + "description": "Detection result for jailbreak attempts." }, - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the agent." + "task_adherence": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterDetectionWithReasonResult" + } + ], + "description": "Detection result for task adherence evaluation." }, - "version": { - "type": "string", - "description": "The version identifier of the agent." - } - } - }, - "AgentSessionResource": { - "type": "object", - "required": [ - "agent_session_id", - "version_indicator", - "status", - "created_at", - "last_accessed_at", - "expires_at" - ], - "properties": { - "agent_session_id": { - "type": "string", - "description": "The session identifier." + "protected_material_text": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterDetectionResult" + } + ], + "description": "Detection result for protected material text." }, - "version_indicator": { + "protected_material_code": { "allOf": [ { - "$ref": "#/components/schemas/VersionIndicator" + "$ref": "#/components/schemas/AzureContentFilterDetectionWithCitationResult" } ], - "description": "The version indicator determining which agent version backs this session." + "description": "Detection result for protected material code with citation." }, - "status": { + "ungrounded_material": { "allOf": [ { - "$ref": "#/components/schemas/AgentSessionStatus" + "$ref": "#/components/schemas/AzureContentFilterCompletionTextSpanDetectionResult" } ], - "description": "The current status of the session." + "description": "Detection result for ungrounded material with completion text span details." }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "The Unix timestamp (in seconds) when the session was created.", - "readOnly": true + "personally_identifiable_information": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterPersonallyIdentifiableInformationResult" + } + ], + "description": "Detection result for Personally Identifiable Information." }, - "last_accessed_at": { - "type": "integer", - "format": "unixtime", - "description": "The Unix timestamp (in seconds) when the session was last accessed.", - "readOnly": true + "indirect_attack": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterDetectionResult" + } + ], + "description": "Detection result for indirect attacks." }, - "expires_at": { - "type": "integer", - "format": "unixtime", - "description": "The Unix timestamp (in seconds) when the session expires (rolling, 30 days from last activity).", - "readOnly": true + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterError" + } + ], + "description": "Error details if content filtering evaluation failed." } }, - "description": "An agent session providing a long-lived compute sandbox for hosted agent invocations.", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "Content filter results for the Responses API." }, - "AgentSessionStatus": { + "AzureContentFilterSeverity": { "anyOf": [ { "type": "string" @@ -12833,789 +20138,726 @@ { "type": "string", "enum": [ - "creating", - "active", - "idle", - "updating", - "failed", - "deleting", - "deleted", - "expired" + "safe", + "low", + "medium", + "high" ] } ], - "description": "The status of an agent session.", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "Ratings for the intensity and risk level of harmful content." }, - "AgentTaxonomyInput": { + "AzureContentFilterSeverityResult": { "type": "object", "required": [ - "type", - "target", - "riskCategories" + "filtered", + "severity" ], "properties": { - "type": { - "type": "string", - "enum": [ - "agent" - ], - "description": "Input type of the evaluation taxonomy." + "filtered": { + "type": "boolean", + "description": "Whether the content was filtered." }, - "target": { + "severity": { "allOf": [ { - "$ref": "#/components/schemas/Target" + "$ref": "#/components/schemas/AzureContentFilterSeverity" } ], - "description": "Target configuration for the agent." - }, - "riskCategories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RiskCategory" - }, - "description": "List of risk categories to evaluate against." + "description": "The severity level of the content." } }, - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationTaxonomyInput" - } - ], - "description": "Input configuration for the evaluation taxonomy when the input type is agent." + "description": "A content filter result indicating severity level and whether content was filtered." }, - "AgentTaxonomyInputUpdate": { + "AzureFunctionBinding": { "type": "object", + "required": [ + "type", + "storage_queue" + ], "properties": { "type": { "type": "string", "enum": [ - "agent" + "storage_queue" ], - "description": "Input type of the evaluation taxonomy." + "description": "The type of binding, which is always 'storage_queue'." }, - "target": { + "storage_queue": { "allOf": [ { - "$ref": "#/components/schemas/TargetUpdate" + "$ref": "#/components/schemas/AzureFunctionStorageQueue" } ], - "description": "Target configuration for the agent." - }, - "riskCategories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RiskCategory" - }, - "description": "List of risk categories to evaluate against." + "description": "Storage queue." } }, - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationTaxonomyInputUpdate" - } - ], - "description": "Input configuration for the evaluation taxonomy when the input type is agent." + "description": "The structure for keeping storage queue name and URI." }, - "AgentVersionObject": { + "AzureFunctionDefinition": { "type": "object", "required": [ - "metadata", - "object", - "id", - "name", - "version", - "created_at", - "definition", - "status" + "function", + "input_binding", + "output_binding" ], "properties": { - "metadata": { + "function": { "type": "object", - "additionalProperties": { - "type": "string" - }, - "nullable": true, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" - }, - "object": { - "type": "string", - "enum": [ - "agent.version" - ], - "description": "The object type, which is always 'agent.version'." - }, - "id": { - "type": "string", - "description": "The unique identifier of the agent version." - }, - "name": { - "type": "string", - "maxLength": 256, - "description": "The name of the agent. Name can be used to retrieve/update/delete the agent." - }, - "version": { - "type": "string", - "description": "The version identifier of the agent. Agents are immutable and every update creates a new version while keeping the name same." - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." - }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "The Unix timestamp (seconds) when the agent was created." - }, - "definition": { - "$ref": "#/components/schemas/AgentDefinition" - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentVersionStatus" - } - ], - "description": "The provisioning status of the agent version. Defaults to 'active' for non-hosted agents. For hosted agents, reflects infrastructure readiness.", - "default": "active" - }, - "error": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Error" - } - ], - "description": "Error details if the agent version provisioning failed." - }, - "instance_identity": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentIdentity" + "properties": { + "name": { + "type": "string", + "description": "The name of the function to be called." + }, + "description": { + "type": "string", + "description": "A description of what the function does, used by the model to choose when and how to call the function." + }, + "parameters": { + "type": "object", + "additionalProperties": {}, + "description": "The parameters the functions accepts, described as a JSON Schema object." } - ], - "description": "The instance identity of the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] }, - "readOnly": true + "required": [ + "name", + "parameters" + ], + "description": "The definition of azure function and its parameters." }, - "blueprint": { + "input_binding": { "allOf": [ { - "$ref": "#/components/schemas/AgentIdentity" + "$ref": "#/components/schemas/AzureFunctionBinding" } ], - "description": "The blueprint for the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - }, - "readOnly": true + "description": "Input storage queue. The queue storage trigger runs a function as messages are added to it." }, - "blueprint_reference": { + "output_binding": { "allOf": [ { - "$ref": "#/components/schemas/AgentBlueprintReference" + "$ref": "#/components/schemas/AzureFunctionBinding" } ], - "description": "The blueprint for the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - }, - "readOnly": true - }, - "agent_guid": { - "type": "string", - "description": "The unique GUID identifier of the agent.", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - }, - "readOnly": true - } - } - }, - "AgentVersionStatus": { - "type": "string", - "enum": [ - "creating", - "active", - "failed", - "deleting", - "deleted" - ], - "description": "The provisioning status of an agent version." - }, - "AgenticIdentityPreviewCredentials": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AgenticIdentityToken_Preview" - ], - "description": "The credential type", - "readOnly": true + "description": "Output storage queue. The function writes output to this queue when the input items are processed." } }, - "allOf": [ - { - "$ref": "#/components/schemas/BaseCredentials" - } - ], - "description": "Agentic identity credential definition" + "description": "The definition of Azure function." }, - "ApiErrorResponse": { + "AzureFunctionStorageQueue": { "type": "object", "required": [ - "error" + "queue_service_endpoint", + "queue_name" ], "properties": { - "error": { - "$ref": "#/components/schemas/OpenAI.Error" + "queue_service_endpoint": { + "type": "string", + "description": "URI to the Azure Storage Queue service allowing you to manipulate a queue." + }, + "queue_name": { + "type": "string", + "description": "The name of an Azure function storage queue." } }, - "description": "Error response for API failures." + "description": "The structure for keeping storage queue name and URI." }, - "ApiKeyCredentials": { + "AzureFunctionTool": { "type": "object", "required": [ - "type" + "type", + "azure_function" ], "properties": { "type": { "type": "string", "enum": [ - "ApiKey" + "azure_function" ], - "description": "The credential type", - "readOnly": true + "description": "The object type, which is always 'browser_automation'." }, - "key": { - "type": "string", - "description": "API Key", - "readOnly": true + "azure_function": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureFunctionDefinition" + } + ], + "description": "The Azure Function Tool definition." } }, "allOf": [ { - "$ref": "#/components/schemas/BaseCredentials" + "$ref": "#/components/schemas/OpenAI.Tool" } ], - "description": "API Key Credential definition" + "description": "The input definition information for an Azure Function Tool, as used to configure an Agent." }, - "AssetCredentialResponse": { + "AzureFunctionToolCall": { "type": "object", "required": [ - "blobReference" + "type", + "call_id", + "name", + "arguments", + "status" ], "properties": { - "blobReference": { + "type": { + "type": "string", + "enum": [ + "azure_function_call" + ] + }, + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "name": { + "type": "string", + "description": "The name of the Azure Function being called." + }, + "arguments": { + "type": "string", + "description": "A JSON string of the arguments to pass to the tool." + }, + "status": { "allOf": [ { - "$ref": "#/components/schemas/BlobReference" + "$ref": "#/components/schemas/ToolCallStatus" } ], - "description": "Credential info to access the storage account." + "description": "The status of the tool call." } }, - "description": "Represents a reference to a blob for consumption" - }, - "AssetId": { - "type": "string", - "description": "Identifier of a saved asset." + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.OutputItem" + } + ], + "description": "An Azure Function tool call." }, - "AssistantMessage": { + "AzureFunctionToolCallOutput": { "type": "object", "required": [ - "role", - "content" + "type", + "call_id", + "name", + "status" ], "properties": { - "role": { + "type": { "type": "string", "enum": [ - "assistant" - ], - "description": "Indicates this is an assistant message." + "azure_function_call_output" + ] }, - "content": { + "call_id": { "type": "string", - "description": "Response content generated by the assistant." + "description": "The unique ID of the tool call generated by the model." + }, + "name": { + "type": "string", + "description": "The name of the Azure Function that was called." + }, + "output": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallOutputContent" + } + ], + "description": "The output from the Azure Function tool call." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/Message" - } - ], - "description": "A message generated by the assistant in response to previous messages." - }, - "AttackStrategy": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "easy", - "moderate", - "difficult", - "ascii_art", - "ascii_smuggler", - "atbash", - "base64", - "binary", - "caesar", - "character_space", - "jailbreak", - "ansi_attack", - "character_swap", - "suffix_append", - "string_join", - "unicode_confusable", - "unicode_substitution", - "diacritic", - "flip", - "leetspeak", - "rot13", - "morse", - "url", - "baseline", - "indirect_jailbreak", - "tense", - "multi_turn", - "crescendo" - ] + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "Strategies for attacks." + "description": "The output of an Azure Function tool call." }, - "Azure.Core.Foundations.Error": { + "AzureOpenAIModelConfiguration": { "type": "object", "required": [ - "code", - "message" + "type", + "modelDeploymentName" ], "properties": { - "code": { - "type": "string", - "description": "One of a server-defined set of error codes." - }, - "message": { - "type": "string", - "description": "A human-readable representation of the error." - }, - "target": { + "type": { "type": "string", - "description": "The target of the error." - }, - "details": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Azure.Core.Foundations.Error" - }, - "description": "An array of details about specific errors that led to this reported error." - }, - "innererror": { - "allOf": [ - { - "$ref": "#/components/schemas/Azure.Core.Foundations.InnerError" - } - ], - "description": "An object containing more specific information than the current object about the error." + "enum": [ + "AzureOpenAIModel" + ] + }, + "modelDeploymentName": { + "type": "string", + "description": "Deployment name for AOAI model. Example: gpt-4o if in AIServices or connection based `connection_name/deployment_name` (e.g. `my-aoai-connection/gpt-4o`)." } }, - "description": "The error object." + "allOf": [ + { + "$ref": "#/components/schemas/TargetConfig" + } + ], + "description": "Azure OpenAI model configuration. The API version would be selected by the service for querying the model." }, - "Azure.Core.Foundations.ErrorResponse": { + "BaseCredentials": { "type": "object", "required": [ - "error" + "type" ], "properties": { - "error": { + "type": { "allOf": [ { - "$ref": "#/components/schemas/Azure.Core.Foundations.Error" + "$ref": "#/components/schemas/CredentialType" } ], - "description": "The error object." + "description": "The type of credential used by the connection", + "readOnly": true } }, - "description": "A response containing error details." - }, - "Azure.Core.Foundations.InnerError": { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "One of a server-defined set of error codes." - }, - "innererror": { - "allOf": [ - { - "$ref": "#/components/schemas/Azure.Core.Foundations.InnerError" - } - ], - "description": "Inner error." + "discriminator": { + "propertyName": "type", + "mapping": { + "ApiKey": "#/components/schemas/ApiKeyCredentials", + "AAD": "#/components/schemas/EntraIDCredentials", + "CustomKeys": "#/components/schemas/CustomCredential", + "SAS": "#/components/schemas/SASCredentials", + "None": "#/components/schemas/NoAuthenticationCredentials", + "AgenticIdentityToken_Preview": "#/components/schemas/AgenticIdentityPreviewCredentials" } }, - "description": "An object containing more specific information about the error. As per Azure REST API guidelines - https://aka.ms/AzureRestApiGuidelines#handling-errors." + "description": "A base class for connection credentials" }, - "Azure.Core.Foundations.OperationState": { + "BenchmarkName": { "anyOf": [ + { + "type": "string" + }, { "type": "string", "enum": [ - "NotStarted", - "Running", - "Succeeded", - "Failed", - "Canceled" + "builtin.gpqa_diamond", + "builtin.bbeh", + "builtin.bigbenchhard", + "builtin.frontierscience", + "builtin.musr", + "builtin.truthful_qa", + "builtin.inspect_ai.gpqa_diamond", + "builtin.inspect_ai.chembench", + "builtin.inspect_ai.aime_2025", + "builtin.inspect_ai.musr" ] - }, - { - "type": "string" } ], - "description": "Enum describing allowed operation states." - }, - "Azure.Core.uuid": { - "type": "string", - "format": "uuid", - "description": "Universally Unique Identifier" + "description": "The set of available benchmark specifications." }, - "AzureAIAgentTarget": { + "BingCustomSearchConfiguration": { "type": "object", "required": [ - "type", - "name" + "project_connection_id", + "instance_name" ], "properties": { - "type": { + "name": { "type": "string", - "enum": [ - "azure_ai_agent" - ], - "description": "The type of target, always `azure_ai_agent`." + "description": "Optional user-defined name for this tool or configuration." }, - "name": { + "description": { "type": "string", - "description": "The unique identifier of the Azure AI agent." + "description": "Optional user-defined description for this tool or configuration." }, - "version": { + "project_connection_id": { "type": "string", - "description": "The version of the Azure AI agent." + "description": "Project connection id for grounding with bing search" }, - "tool_descriptions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ToolDescription" - }, - "description": "The parameters used to control the sampling behavior of the agent during text generation." + "instance_name": { + "type": "string", + "description": "Name of the custom configuration instance given to config." + }, + "market": { + "type": "string", + "description": "The market where the results come from." + }, + "set_lang": { + "type": "string", + "description": "The language to use for user interface strings when calling Bing API." + }, + "count": { + "type": "integer", + "format": "int64", + "description": "The number of search results to return in the bing api response" + }, + "freshness": { + "type": "string", + "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." } }, - "allOf": [ - { - "$ref": "#/components/schemas/Target" - } - ], - "description": "Represents a target specifying an Azure AI agent." + "description": "A bing custom search configuration." }, - "AzureAIAgentTargetUpdate": { + "BingCustomSearchPreviewTool": { "type": "object", + "required": [ + "type", + "bing_custom_search_preview" + ], "properties": { "type": { "type": "string", "enum": [ - "azure_ai_agent" + "bing_custom_search_preview" ], - "description": "The type of target, always `azure_ai_agent`." + "description": "The object type, which is always 'bing_custom_search_preview'." }, "name": { "type": "string", - "description": "The unique identifier of the Azure AI agent." + "description": "Optional user-defined name for this tool or configuration." }, - "version": { + "description": { "type": "string", - "description": "The version of the Azure AI agent." + "description": "Optional user-defined description for this tool or configuration." }, - "tool_descriptions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ToolDescription" - }, - "description": "The parameters used to control the sampling behavior of the agent during text generation." + "bing_custom_search_preview": { + "allOf": [ + { + "$ref": "#/components/schemas/BingCustomSearchToolParameters" + } + ], + "description": "The bing custom search tool parameters." } }, "allOf": [ { - "$ref": "#/components/schemas/TargetUpdate" + "$ref": "#/components/schemas/OpenAI.Tool" } ], - "description": "Represents a target specifying an Azure AI agent." + "description": "The input definition information for a Bing custom search tool as used to configure an agent." }, - "AzureAIBenchmarkDataSourceConfig": { + "BingCustomSearchToolCall": { "type": "object", "required": [ - "scenario", - "benchmark_name" + "type", + "call_id", + "arguments", + "status" ], "properties": { - "scenario": { + "type": { "type": "string", "enum": [ - "benchmark_preview" - ], - "description": "Data schema scenario, always `benchmark` for benchmark evaluations." + "bing_custom_search_preview_call" + ] }, - "benchmark_name": { + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "arguments": { + "type": "string", + "description": "A JSON string of the arguments to pass to the tool." + }, + "status": { "allOf": [ { - "$ref": "#/components/schemas/BenchmarkName" + "$ref": "#/components/schemas/ToolCallStatus" } ], - "description": "The name of the benchmark specification." - }, - "benchmark_version": { - "type": "string", - "description": "The version of the benchmark specification (e.g., '0.1'). Latest version if not specified." - }, - "grader_model": { - "type": "string", - "description": "Optional grader model for benchmarks that use model graders, Required when the benchmark's testing_criteria uses a model grader type." + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/AzureAIDataSourceConfig" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "Data source configuration for benchmark evaluations." + "description": "A Bing custom search tool call." }, - "AzureAIBenchmarkPreviewEvalRunDataSource": { + "BingCustomSearchToolCallOutput": { "type": "object", "required": [ "type", - "target" + "call_id", + "status" ], "properties": { "type": { "type": "string", "enum": [ - "azure_ai_benchmark_preview" - ], - "description": "The type of data source, always `azure_ai_benchmark_preview`." + "bing_custom_search_preview_call_output" + ] }, - "input_messages": { + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "output": { "allOf": [ { - "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSourceInputMessagesItemReference" + "$ref": "#/components/schemas/ToolCallOutputContent" } ], - "description": "Input messages configuration." + "description": "The output from the Bing custom search tool call." }, - "target": { - "anyOf": [ - { - "$ref": "#/components/schemas/AzureAIModelTarget" - }, + "status": { + "allOf": [ { - "$ref": "#/components/schemas/AzureAIAgentTarget" + "$ref": "#/components/schemas/ToolCallStatus" } ], - "description": "The target model or agent to evaluate against the benchmark.\nWhen using `azure_ai_model` target, `sampling_params` must not be provided;\ninference parameters are auto-filled from the benchmark specification stored in eval group properties." + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/EvalRunDataSource" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "Represents a data source for benchmark evaluation runs." + "description": "The output of a Bing custom search tool call." }, - "AzureAIDataSourceConfig": { + "BingCustomSearchToolParameters": { "type": "object", "required": [ - "type", - "scenario" + "search_configurations" ], "properties": { - "type": { + "name": { "type": "string", - "enum": [ - "azure_ai_source" - ], - "description": "The object type, which is always `azure_ai_source`." + "description": "Optional user-defined name for this tool or configuration." }, - "scenario": { + "description": { "type": "string", - "enum": [ - "red_team", - "responses", - "traces_preview", - "synthetic_data_gen_preview", - "benchmark_preview" - ], - "description": "Data schema scenario." + "description": "Optional user-defined description for this tool or configuration." + }, + "search_configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BingCustomSearchConfiguration" + }, + "maxItems": 1, + "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." } }, - "discriminator": { - "propertyName": "scenario", - "mapping": { - "benchmark_preview": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" + "description": "The bing custom search tool parameters." + }, + "BingGroundingSearchConfiguration": { + "type": "object", + "required": [ + "project_connection_id" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional user-defined name for this tool or configuration." + }, + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "project_connection_id": { + "type": "string", + "description": "Project connection id for grounding with bing search" + }, + "market": { + "type": "string", + "description": "The market where the results come from." + }, + "set_lang": { + "type": "string", + "description": "The language to use for user interface strings when calling Bing API." + }, + "count": { + "type": "integer", + "format": "int64", + "description": "The number of search results to return in the bing api response" + }, + "freshness": { + "type": "string", + "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." } }, - "allOf": [ - { - "$ref": "#/components/schemas/DataSourceConfig" + "description": "Search configuration for Bing Grounding" + }, + "BingGroundingSearchToolParameters": { + "type": "object", + "required": [ + "search_configurations" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional user-defined name for this tool or configuration." + }, + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "search_configurations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BingGroundingSearchConfiguration" + }, + "maxItems": 1, + "description": "The search configurations attached to this tool. There can be a maximum of 1\nsearch configuration resource attached to the tool." } - ] + }, + "description": "The bing grounding search tool parameters." }, - "AzureAIModelTarget": { + "BingGroundingTool": { "type": "object", "required": [ - "type" + "type", + "bing_grounding" ], "properties": { "type": { "type": "string", "enum": [ - "azure_ai_model" + "bing_grounding" ], - "description": "The type of target, always `azure_ai_model`." + "description": "The object type, which is always 'bing_grounding'." }, - "model": { + "name": { "type": "string", - "description": "The unique identifier of the Azure AI model." + "description": "Optional user-defined name for this tool or configuration." }, - "sampling_params": { + "description": { + "type": "string", + "description": "Optional user-defined description for this tool or configuration." + }, + "bing_grounding": { "allOf": [ { - "$ref": "#/components/schemas/ModelSamplingParams" + "$ref": "#/components/schemas/BingGroundingSearchToolParameters" } ], - "description": "The parameters used to control the sampling behavior of the model during text generation." + "description": "The bing grounding search tool parameters." } }, "allOf": [ { - "$ref": "#/components/schemas/Target" + "$ref": "#/components/schemas/OpenAI.Tool" } ], - "description": "Represents a target specifying an Azure AI model for operations requiring model selection." + "description": "The input definition information for a bing grounding search tool as used to configure an agent." }, - "AzureAIModelTargetUpdate": { + "BingGroundingToolCall": { "type": "object", + "required": [ + "type", + "call_id", + "arguments", + "status" + ], "properties": { "type": { "type": "string", "enum": [ - "azure_ai_model" - ], - "description": "The type of target, always `azure_ai_model`." + "bing_grounding_call" + ] }, - "model": { + "call_id": { "type": "string", - "description": "The unique identifier of the Azure AI model." + "description": "The unique ID of the tool call generated by the model." }, - "sampling_params": { + "arguments": { + "type": "string", + "description": "A JSON string of the arguments to pass to the tool." + }, + "status": { "allOf": [ { - "$ref": "#/components/schemas/ModelSamplingParamsUpdate" + "$ref": "#/components/schemas/ToolCallStatus" } ], - "description": "The parameters used to control the sampling behavior of the model during text generation." + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/TargetUpdate" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "Represents a target specifying an Azure AI model for operations requiring model selection." + "description": "A Bing grounding tool call." }, - "AzureAIResponsesEvalRunDataSource": { + "BingGroundingToolCallOutput": { "type": "object", "required": [ "type", - "item_generation_params", - "max_runs_hourly", - "event_configuration_id" + "call_id", + "status" ], "properties": { "type": { "type": "string", "enum": [ - "azure_ai_responses" - ], - "description": "The type of data source, always `azure_ai_responses`." + "bing_grounding_call_output" + ] }, - "item_generation_params": { + "call_id": { + "type": "string", + "description": "The unique ID of the tool call generated by the model." + }, + "output": { "allOf": [ { - "$ref": "#/components/schemas/ResponseRetrievalItemGenerationParams" + "$ref": "#/components/schemas/ToolCallOutputContent" } ], - "description": "The parameters for item generation." - }, - "max_runs_hourly": { - "type": "integer", - "format": "int32", - "description": "Maximum number of evaluation runs allowed per hour." + "description": "The output from the Bing grounding tool call." }, - "event_configuration_id": { - "type": "string", - "description": "The event configuration name associated with this evaluation run." + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/EvalRunDataSource" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "Represents a data source for evaluation runs that are specific to Continuous Evaluation scenarios." + "description": "The output of a Bing grounding tool call." }, - "AzureAISearchIndex": { + "BlobReference": { "type": "object", "required": [ - "type" + "blobUri", + "storageAccountArmId", + "credential" ], "properties": { - "type": { + "blobUri": { "type": "string", - "enum": [ - "AzureSearch" + "format": "uri", + "description": "Blob URI path for client to upload data. Example: `https://blob.windows.core.net/Container/Path`" + }, + "storageAccountArmId": { + "type": "string", + "description": "ARM ID of the storage account to use." + }, + "credential": { + "allOf": [ + { + "$ref": "#/components/schemas/SasCredential" + } ], - "description": "Type of index" + "description": "Credential info to access the storage account." } }, - "allOf": [ - { - "$ref": "#/components/schemas/Index" - } - ], - "description": "Azure AI Search Index Definition" + "description": "Blob reference details." }, - "AzureAISearchIndexUpdate": { + "BotServiceAuthorizationScheme": { "type": "object", "required": [ "type" @@ -13624,49 +20866,58 @@ "type": { "type": "string", "enum": [ - "AzureSearch" - ], - "description": "Type of index" + "BotService" + ] } }, "allOf": [ { - "$ref": "#/components/schemas/IndexUpdate" + "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" } ], - "description": "Azure AI Search Index Definition" + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "AzureAISearchQueryType": { - "anyOf": [ - { - "type": "string" - }, - { + "BotServiceRbacAuthorizationScheme": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { "type": "string", "enum": [ - "simple", - "semantic", - "vector", - "vector_simple_hybrid", - "vector_semantic_hybrid" + "BotServiceRbac" ] } + }, + "allOf": [ + { + "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" + } ], - "description": "Available query types for Azure AI Search tool." + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "AzureAISearchTool": { + "BrowserAutomationPreviewTool": { "type": "object", "required": [ "type", - "azure_ai_search" + "browser_automation_preview" ], "properties": { "type": { "type": "string", "enum": [ - "azure_ai_search" + "browser_automation_preview" ], - "description": "The object type, which is always 'azure_ai_search'." + "description": "The object type, which is always 'browser_automation_preview'." }, "name": { "type": "string", @@ -13676,13 +20927,13 @@ "type": "string", "description": "Optional user-defined description for this tool or configuration." }, - "azure_ai_search": { + "browser_automation_preview": { "allOf": [ { - "$ref": "#/components/schemas/AzureAISearchToolResource" + "$ref": "#/components/schemas/BrowserAutomationToolParameters" } ], - "description": "The azure ai search index resource." + "description": "The Browser Automation Tool parameters." } }, "allOf": [ @@ -13690,9 +20941,9 @@ "$ref": "#/components/schemas/OpenAI.Tool" } ], - "description": "The input definition information for an Azure AI search tool as used to configure an agent." + "description": "The input definition information for a Browser Automation Tool, as used to configure an Agent." }, - "AzureAISearchToolCall": { + "BrowserAutomationToolCall": { "type": "object", "required": [ "type", @@ -13704,7 +20955,7 @@ "type": { "type": "string", "enum": [ - "azure_ai_search_call" + "browser_automation_preview_call" ] }, "call_id": { @@ -13729,9 +20980,9 @@ "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "An Azure AI Search tool call." + "description": "A browser automation tool call." }, - "AzureAISearchToolCallOutput": { + "BrowserAutomationToolCallOutput": { "type": "object", "required": [ "type", @@ -13742,7 +20993,7 @@ "type": { "type": "string", "enum": [ - "azure_ai_search_call_output" + "browser_automation_preview_call_output" ] }, "call_id": { @@ -13755,7 +21006,7 @@ "$ref": "#/components/schemas/ToolCallOutputContent" } ], - "description": "The output from the Azure AI Search tool call." + "description": "The output from the browser automation tool call." }, "status": { "allOf": [ @@ -13771,12 +21022,12 @@ "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "The output of an Azure AI Search tool call." + "description": "The output of a browser automation tool call." }, - "AzureAISearchToolResource": { + "BrowserAutomationToolConnectionParameters": { "type": "object", "required": [ - "indexes" + "project_connection_id" ], "properties": { "name": { @@ -13787,368 +21038,121 @@ "type": "string", "description": "Optional user-defined description for this tool or configuration." }, - "indexes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AISearchIndexResource" - }, - "maxItems": 1, - "description": "The indices attached to this agent. There can be a maximum of 1 index\nresource attached to the agent." - } - }, - "description": "A set of index resources used by the `azure_ai_search` tool." - }, - "AzureContentFilterBlocklistIdResult": { - "type": "object", - "required": [ - "id", - "filtered" - ], - "properties": { - "id": { + "project_connection_id": { "type": "string", - "description": "The ID of the custom blocklist." - }, - "filtered": { - "type": "boolean", - "description": "Whether the blocklist resulted in filtering." + "description": "The ID of the project connection to your Azure Playwright resource." } }, - "description": "A content filter blocklist ID result." + "description": "Definition of input parameters for the connection used by the Browser Automation Tool." }, - "AzureContentFilterBlocklistResult": { + "BrowserAutomationToolParameters": { "type": "object", "required": [ - "filtered" + "connection" ], "properties": { - "filtered": { - "type": "boolean", - "description": "Whether any blocklist resulted in filtering." - }, - "details": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AzureContentFilterBlocklistIdResult" - }, - "description": "The pairs of individual blocklist IDs and their filtering results." - } - }, - "description": "A collection of filtering results for configured custom blocklists." - }, - "AzureContentFilterCitation": { - "type": "object", - "properties": { - "license": { + "name": { "type": "string", - "description": "The license associated with the detection." + "description": "Optional user-defined name for this tool or configuration." }, - "url": { + "description": { "type": "string", - "format": "uri", - "description": "The URL associated with the license." - } - }, - "description": "Citation details for protected material detection." - }, - "AzureContentFilterCompletionTextSpan": { - "type": "object", - "required": [ - "completion_start_offset", - "completion_end_offset" - ], - "properties": { - "completion_start_offset": { - "type": "integer", - "format": "int32", - "description": "Offset of the UTF32 code point which begins the span." - }, - "completion_end_offset": { - "type": "integer", - "format": "int32", - "description": "Offset of the first UTF32 code point which is excluded from the span." - } - }, - "description": "A representation of a span of completion text as used by Azure OpenAI content filter results." - }, - "AzureContentFilterCompletionTextSpanDetectionResult": { - "type": "object", - "required": [ - "filtered", - "detected", - "details" - ], - "properties": { - "filtered": { - "type": "boolean", - "description": "Whether the content was filtered." - }, - "detected": { - "type": "boolean", - "description": "Whether the content category was detected." - }, - "details": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AzureContentFilterCompletionTextSpan" - }, - "description": "Detailed information about the detected completion text spans." - } - }, - "description": "A content filter detection result with completion text span details." - }, - "AzureContentFilterDetectionResult": { - "type": "object", - "required": [ - "filtered", - "detected" - ], - "properties": { - "filtered": { - "type": "boolean", - "description": "Whether the content was filtered." + "description": "Optional user-defined description for this tool or configuration." }, - "detected": { - "type": "boolean", - "description": "Whether the content category was detected." + "connection": { + "allOf": [ + { + "$ref": "#/components/schemas/BrowserAutomationToolConnectionParameters" + } + ], + "description": "The project connection parameters associated with the Browser Automation Tool." } }, - "description": "A content filter result indicating whether the content was detected and filtered." + "description": "Definition of input parameters for the Browser Automation Tool." }, - "AzureContentFilterDetectionWithCitationResult": { + "CaptureStructuredOutputsTool": { "type": "object", "required": [ - "filtered", - "detected" + "type", + "outputs" ], "properties": { - "filtered": { - "type": "boolean", - "description": "Whether the content was filtered." - }, - "detected": { - "type": "boolean", - "description": "Whether the content category was detected." + "type": { + "type": "string", + "enum": [ + "capture_structured_outputs" + ], + "description": "The type of the tool. Always `capture_structured_outputs`." }, - "citation": { + "outputs": { "allOf": [ { - "$ref": "#/components/schemas/AzureContentFilterCitation" + "$ref": "#/components/schemas/StructuredOutputDefinition" } ], - "description": "Citation details describing the associated license and its location." + "description": "The structured outputs to capture from the model." } }, - "description": "A content filter detection result that includes citation information for protected material." - }, - "AzureContentFilterDetectionWithReasonResult": { - "type": "object", - "required": [ - "filtered", - "detected" - ], - "properties": { - "filtered": { - "type": "boolean", - "description": "Whether the content was filtered." - }, - "detected": { - "type": "boolean", - "description": "Whether the content category was detected." - }, - "reason": { - "type": "string", - "description": "A human-readable explanation of why the detection result was produced." + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Tool" } - }, - "description": "A content filter detection result that includes a reason description." + ], + "description": "A tool for capturing structured outputs" }, - "AzureContentFilterError": { + "ChartCoordinate": { "type": "object", "required": [ - "code", - "message" + "x", + "y", + "size" ], "properties": { - "code": { + "x": { "type": "integer", "format": "int32", - "description": "A machine-readable error code." - }, - "message": { - "type": "string", - "description": "A human-readable error message." - } - }, - "description": "Error details from the content filtering system." - }, - "AzureContentFilterPersonallyIdentifiableInformationResult": { - "type": "object", - "required": [ - "filtered", - "detected" - ], - "properties": { - "filtered": { - "type": "boolean", - "description": "Whether the content was filtered." + "description": "X-axis coordinate." }, - "detected": { - "type": "boolean", - "description": "Whether PII was detected in the content." + "y": { + "type": "integer", + "format": "int32", + "description": "Y-axis coordinate." }, - "sub_categories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AzureContentFilterPiiSubCategoryResult" - }, - "description": "Detailed results for individual PII subcategories." + "size": { + "type": "integer", + "format": "int32", + "description": "Size of the chart element." } }, - "description": "A content filter detection result for Personally Identifiable Information." + "description": "Coordinates for the analysis chart." }, - "AzureContentFilterPiiSubCategoryResult": { + "ChatSummaryMemoryItem": { "type": "object", "required": [ - "sub_category", - "filtered", - "detected" + "kind" ], "properties": { - "sub_category": { + "kind": { "type": "string", - "description": "The PII subcategory that was evaluated." - }, - "filtered": { - "type": "boolean", - "description": "Whether the content was filtered for this subcategory." - }, - "detected": { - "type": "boolean", - "description": "Whether the subcategory was detected in the content." - } - }, - "description": "Result details for an individual PII subcategory." - }, - "AzureContentFilterResultsForResponses": { - "type": "object", - "properties": { - "sexual": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterSeverityResult" - } - ], - "description": "Severity result for sexual content." - }, - "hate": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterSeverityResult" - } - ], - "description": "Severity result for hate content." - }, - "violence": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterSeverityResult" - } - ], - "description": "Severity result for violence content." - }, - "self_harm": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterSeverityResult" - } - ], - "description": "Severity result for self-harm content." - }, - "profanity": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterDetectionResult" - } - ], - "description": "Detection result for profanity." - }, - "custom_blocklists": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterBlocklistResult" - } - ], - "description": "Results for configured custom blocklists." - }, - "jailbreak": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterDetectionResult" - } - ], - "description": "Detection result for jailbreak attempts." - }, - "task_adherence": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterDetectionWithReasonResult" - } - ], - "description": "Detection result for task adherence evaluation." - }, - "protected_material_text": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterDetectionResult" - } - ], - "description": "Detection result for protected material text." - }, - "protected_material_code": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterDetectionWithCitationResult" - } - ], - "description": "Detection result for protected material code with citation." - }, - "ungrounded_material": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterCompletionTextSpanDetectionResult" - } - ], - "description": "Detection result for ungrounded material with completion text span details." - }, - "personally_identifiable_information": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterPersonallyIdentifiableInformationResult" - } - ], - "description": "Detection result for Personally Identifiable Information." - }, - "indirect_attack": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterDetectionResult" - } - ], - "description": "Detection result for indirect attacks." - }, - "error": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterError" - } + "enum": [ + "chat_summary" ], - "description": "Error details if content filtering evaluation failed." + "description": "The kind of the memory item." } }, - "description": "Content filter results for the Responses API." + "allOf": [ + { + "$ref": "#/components/schemas/MemoryItem" + } + ], + "description": "A memory item containing a summary extracted from conversations.", + "x-ms-foundry-meta": { + "conditional_previews": [ + "MemoryStores=V1Preview" + ] + } }, - "AzureContentFilterSeverity": { + "ChatTemplate": { "anyOf": [ { "type": "string" @@ -14156,1205 +21160,1264 @@ { "type": "string", "enum": [ - "safe", - "low", - "medium", - "high" + "Chatml", + "llama-3", + "Zephyr", + "Gemma", + "phi-3" ] } ], - "description": "Ratings for the intensity and risk level of harmful content." - }, - "AzureContentFilterSeverityResult": { - "type": "object", - "required": [ - "filtered", - "severity" - ], - "properties": { - "filtered": { - "type": "boolean", - "description": "Whether the content was filtered." - }, - "severity": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureContentFilterSeverity" - } - ], - "description": "The severity level of the content." - } - }, - "description": "A content filter result indicating severity level and whether content was filtered." - }, - "AzureFunctionBinding": { - "type": "object", - "required": [ - "type", - "storage_queue" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "storage_queue" - ], - "description": "The type of binding, which is always 'storage_queue'." - }, - "storage_queue": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureFunctionStorageQueue" - } - ], - "description": "Storage queue." - } - }, - "description": "The structure for keeping storage queue name and URI." + "description": "Chat template used to format conversational training data." }, - "AzureFunctionDefinition": { + "ClusterInsightResult": { "type": "object", "required": [ - "function", - "input_binding", - "output_binding" + "summary", + "clusters" ], "properties": { - "function": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the function to be called." - }, - "description": { - "type": "string", - "description": "A description of what the function does, used by the model to choose when and how to call the function." - }, - "parameters": { - "type": "object", - "additionalProperties": {}, - "description": "The parameters the functions accepts, described as a JSON Schema object." - } - }, - "required": [ - "name", - "parameters" - ], - "description": "The definition of azure function and its parameters." - }, - "input_binding": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureFunctionBinding" - } - ], - "description": "Input storage queue. The queue storage trigger runs a function as messages are added to it." - }, - "output_binding": { + "summary": { "allOf": [ { - "$ref": "#/components/schemas/AzureFunctionBinding" + "$ref": "#/components/schemas/InsightSummary" } ], - "description": "Output storage queue. The function writes output to this queue when the input items are processed." + "description": "Summary of the insights report." + }, + "clusters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InsightCluster" + }, + "description": "List of clusters identified in the insights." + }, + "coordinates": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/ChartCoordinate" + }, + "description": " Optional mapping of IDs to 2D coordinates used by the UX for visualization.\n\n The map keys are string identifiers (for example, a cluster id or a sample id)\n and the values are the coordinates and visual size for rendering on a 2D chart.\n\n This property is omitted unless the client requests coordinates (for example,\n by passing `includeCoordinates=true` as a query parameter).\n\n Example:\n ```\n {\n \"cluster-1\": { \"x\": 12, \"y\": 34, \"size\": 8 },\n \"sample-123\": { \"x\": 18, \"y\": 22, \"size\": 4 }\n }\n ```\n\n Coordinates are intended only for client-side visualization and do not\n modify the canonical insights results." } }, - "description": "The definition of Azure function." + "description": "Insights from the cluster analysis." }, - "AzureFunctionStorageQueue": { + "ClusterTokenUsage": { "type": "object", "required": [ - "queue_service_endpoint", - "queue_name" + "inputTokenUsage", + "outputTokenUsage", + "totalTokenUsage" ], "properties": { - "queue_service_endpoint": { - "type": "string", - "description": "URI to the Azure Storage Queue service allowing you to manipulate a queue." + "inputTokenUsage": { + "type": "integer", + "format": "int32", + "description": "input token usage" }, - "queue_name": { - "type": "string", - "description": "The name of an Azure function storage queue." + "outputTokenUsage": { + "type": "integer", + "format": "int32", + "description": "output token usage" + }, + "totalTokenUsage": { + "type": "integer", + "format": "int32", + "description": "total token usage" } }, - "description": "The structure for keeping storage queue name and URI." + "description": "Token usage for cluster analysis" }, - "AzureFunctionTool": { + "CodeBasedEvaluatorDefinition": { "type": "object", "required": [ - "type", - "azure_function" + "type" ], "properties": { "type": { "type": "string", "enum": [ - "azure_function" - ], - "description": "The object type, which is always 'browser_automation'." + "code" + ] }, - "azure_function": { - "allOf": [ - { - "$ref": "#/components/schemas/AzureFunctionDefinition" - } - ], - "description": "The Azure Function Tool definition." + "code_text": { + "type": "string", + "description": "Inline code text for the evaluator" + }, + "entry_point": { + "type": "string", + "description": "The entry point Python file name for the uploaded evaluator code (e.g. 'answer_length_evaluator.py')" + }, + "image_tag": { + "type": "string", + "description": "The container image tag to use for evaluator code execution" + }, + "blob_uri": { + "type": "string", + "description": "The blob URI for the evaluator storage" } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.Tool" + "$ref": "#/components/schemas/EvaluatorDefinition" } ], - "description": "The input definition information for an Azure Function Tool, as used to configure an Agent." + "description": "Code-based evaluator definition using python code" }, - "AzureFunctionToolCall": { + "CommandJob": { "type": "object", "required": [ - "type", - "call_id", - "name", - "arguments", - "status" + "jobType", + "computeId" ], "properties": { - "type": { + "jobType": { "type": "string", "enum": [ - "azure_function_call" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." + "Command" + ], + "description": "Job type." }, - "name": { + "command": { "type": "string", - "description": "The name of the Azure Function being called." + "description": "The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified." }, - "arguments": { + "environmentImageReference": { "type": "string", - "description": "A JSON string of the arguments to pass to the tool." + "description": "ACR path or Azure ML environment reference. Required when training is not specified." }, - "status": { + "training": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/TrainingConfiguration" } ], - "description": "The status of the tool call." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.OutputItem" - } - ], - "description": "An Azure Function tool call." - }, - "AzureFunctionToolCallOutput": { - "type": "object", - "required": [ - "type", - "call_id", - "name", - "status" - ], - "properties": { - "type": { + "description": "Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution." + }, + "displayName": { "type": "string", - "enum": [ - "azure_function_call_output" - ] + "description": "Display name of job." }, - "call_id": { + "description": { "type": "string", - "description": "The unique ID of the tool call generated by the model." + "description": "The asset description text." }, - "name": { + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The asset property dictionary." + }, + "codeId": { "type": "string", - "description": "The name of the Azure Function that was called." + "description": "Code asset reference." }, - "output": { + "computeId": { + "type": "string", + "description": "Compute resource ID." + }, + "inputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Input" + }, + "description": "Mapping of input data bindings used in the job." + }, + "outputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Output" + }, + "description": "Mapping of output data bindings used in the job." + }, + "environmentVariables": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Environment variables included in the job." + }, + "resources": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallOutputContent" + "$ref": "#/components/schemas/JobResourceConfiguration" } ], - "description": "The output from the Azure Function tool call." + "description": "Compute Resource configuration for the job." }, - "status": { + "gpuCount": { + "type": "integer", + "format": "int32", + "description": "Number of GPUs requested by the training job." + }, + "distribution": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/DistributionConfiguration" } ], - "description": "The status of the tool call." + "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + }, + "limits": { + "allOf": [ + { + "$ref": "#/components/schemas/CommandJobLimits" + } + ], + "description": "Command Job limit." + }, + "queueSettings": { + "allOf": [ + { + "$ref": "#/components/schemas/QueueSettings" + } + ], + "description": "Queue settings for the job." + }, + "userAssignedIdentityId": { + "type": "string", + "description": "user-assigned managed identity" + }, + "status": { + "type": "string", + "description": "Status of the job.", + "readOnly": true } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/JobProperties" } ], - "description": "The output of an Azure Function tool call." + "description": "Properties of a Command Job." }, - "AzureOpenAIModelConfiguration": { + "CommandJobLimits": { "type": "object", "required": [ - "type", - "modelDeploymentName" + "jobLimitsType" ], "properties": { - "type": { + "jobLimitsType": { "type": "string", "enum": [ - "AzureOpenAIModel" - ] + "Command" + ], + "description": "JobLimit type." }, - "modelDeploymentName": { + "timeout": { "type": "string", - "description": "Deployment name for AOAI model. Example: gpt-4o if in AIServices or connection based `connection_name/deployment_name` (e.g. `my-aoai-connection/gpt-4o`)." + "format": "duration", + "description": "The max run duration in ISO 8601 format, after which the job will be cancelled. Only supports duration with precision as low as Seconds." } }, - "allOf": [ - { - "$ref": "#/components/schemas/TargetConfig" - } - ], - "description": "Azure OpenAI model configuration. The API version would be selected by the service for querying the model." + "description": "Command Job limit class." }, - "BaseCredentials": { + "CompletionMessageToolCallChunk": { "type": "object", "required": [ + "id", "type" ], "properties": { + "id": { + "type": "string", + "description": "The Id for the tool call." + }, "type": { + "type": "string", + "enum": [ + "function" + ], + "description": "The type of tool call, which is always \"function\"." + }, + "function": { "allOf": [ { - "$ref": "#/components/schemas/CredentialType" + "$ref": "#/components/schemas/FunctionToolCall" } ], - "description": "The type of credential used by the connection", - "readOnly": true - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "ApiKey": "#/components/schemas/ApiKeyCredentials", - "AAD": "#/components/schemas/EntraIDCredentials", - "CustomKeys": "#/components/schemas/CustomCredential", - "SAS": "#/components/schemas/SASCredentials", - "None": "#/components/schemas/NoAuthenticationCredentials", - "AgenticIdentityToken_Preview": "#/components/schemas/AgenticIdentityPreviewCredentials" + "description": "Details of the function tool call, if applicable." } }, - "description": "A base class for connection credentials" - }, - "BenchmarkName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "builtin.gpqa_diamond", - "builtin.bbeh", - "builtin.bigbenchhard", - "builtin.frontierscience", - "builtin.musr", - "builtin.truthful_qa", - "builtin.inspect_ai.gpqa_diamond", - "builtin.inspect_ai.chembench", - "builtin.inspect_ai.aime_2025", - "builtin.inspect_ai.musr" - ] - } - ], - "description": "The set of available benchmark specifications." + "description": "Tool call details within a message." }, - "BingCustomSearchConfiguration": { + "Connection": { "type": "object", "required": [ - "project_connection_id", - "instance_name" + "name", + "id", + "type", + "target", + "isDefault", + "credentials", + "metadata" ], "properties": { "name": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "project_connection_id": { - "type": "string", - "description": "Project connection id for grounding with bing search" - }, - "instance_name": { - "type": "string", - "description": "Name of the custom configuration instance given to config." - }, - "market": { - "type": "string", - "description": "The market where the results come from." + "description": "The friendly name of the connection, provided by the user.", + "readOnly": true }, - "set_lang": { + "id": { "type": "string", - "description": "The language to use for user interface strings when calling Bing API." - }, - "count": { - "type": "integer", - "format": "int64", - "description": "The number of search results to return in the bing api response" + "description": "A unique identifier for the connection, generated by the service", + "readOnly": true }, - "freshness": { - "type": "string", - "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." - } - }, - "description": "A bing custom search configuration." - }, - "BingCustomSearchPreviewTool": { - "type": "object", - "required": [ - "type", - "bing_custom_search_preview" - ], - "properties": { "type": { - "type": "string", - "enum": [ - "bing_custom_search_preview" + "allOf": [ + { + "$ref": "#/components/schemas/ConnectionType" + } ], - "description": "The object type, which is always 'bing_custom_search_preview'." + "description": "Category of the connection", + "readOnly": true }, - "name": { + "target": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "description": "The connection URL to be used for this service", + "readOnly": true }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "isDefault": { + "type": "boolean", + "description": "Whether the connection is tagged as the default connection of its type", + "readOnly": true }, - "bing_custom_search_preview": { + "credentials": { "allOf": [ { - "$ref": "#/components/schemas/BingCustomSearchToolParameters" + "$ref": "#/components/schemas/BaseCredentials" } ], - "description": "The bing custom search tool parameters." + "description": "The credentials used by the connection", + "readOnly": true + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Metadata of the connection", + "readOnly": true } }, - "allOf": [ + "description": "Response from the list and get connections operations" + }, + "ConnectionType": { + "anyOf": [ { - "$ref": "#/components/schemas/OpenAI.Tool" + "type": "string" + }, + { + "type": "string", + "enum": [ + "AzureOpenAI", + "AzureBlob", + "AzureStorageAccount", + "CognitiveSearch", + "CosmosDB", + "ApiKey", + "AppConfig", + "AppInsights", + "CustomKeys", + "RemoteTool_Preview" + ] } ], - "description": "The input definition information for a Bing custom search tool as used to configure an agent." + "description": "The Type (or category) of the connection" }, - "BingCustomSearchToolCall": { + "ContainerAppAgentDefinition": { "type": "object", "required": [ - "type", - "call_id", - "arguments", - "status" + "kind", + "container_protocol_versions", + "container_app_resource_id", + "ingress_subdomain_suffix" ], "properties": { - "type": { + "kind": { "type": "string", "enum": [ - "bing_custom_search_preview_call" + "container_app" ] }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." + "container_protocol_versions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProtocolVersionRecord" + }, + "description": "The protocols that the agent supports for ingress communication of the containers.", + "example": [ + { + "protocol": "responses", + "version": "v0.1.1" + }, + { + "protocol": "a2a", + "version": "v0.3.0" + } + ] }, - "arguments": { + "container_app_resource_id": { "type": "string", - "description": "A JSON string of the arguments to pass to the tool." + "description": "The resource ID of the Azure Container App that hosts this agent. Not mutable across versions." }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } - ], - "description": "The status of the tool call." + "ingress_subdomain_suffix": { + "type": "string", + "description": "The suffix to apply to the app subdomain when sending ingress to the agent. This can be a label (e.g., '---current'), a specific revision (e.g., '--0000001'), or empty to use the default endpoint for the container app.", + "example": "--0000001" } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/AgentDefinition" } ], - "description": "A Bing custom search tool call." + "description": "The container app agent definition.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } }, - "BingCustomSearchToolCallOutput": { + "ContainerDetails": { "type": "object", "required": [ - "type", - "call_id", - "status" + "provisioning_state", + "state", + "health_state", + "replicas", + "updated_on" ], "properties": { - "type": { + "provisioning_state": { "type": "string", - "enum": [ - "bing_custom_search_preview_call_output" - ] + "description": "The provisioning state of the container." }, - "call_id": { + "provisioning_error": { "type": "string", - "description": "The unique ID of the tool call generated by the model." + "description": "The provisioning error of the container, if any." }, - "output": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallOutputContent" - } - ], - "description": "The output from the Bing custom search tool call." + "state": { + "type": "string", + "description": "The state of the container." }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } - ], - "description": "The status of the tool call." + "health_state": { + "type": "string", + "description": "The health state of the container." + }, + "replicas": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ContainerReplica" + }, + "description": "The list of replicas in the container." + }, + "updated_on": { + "type": "string", + "format": "date-time", + "description": "The last update time of the container." } }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.OutputItem" - } + "description": "Detailed information about the container.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } + }, + "ContainerLogKind": { + "type": "string", + "enum": [ + "console", + "system" ], - "description": "The output of a Bing custom search tool call." + "description": "The type of logs to stream from a container.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } }, - "BingCustomSearchToolParameters": { + "ContainerReplica": { "type": "object", "required": [ - "search_configurations" + "name", + "state", + "container_state" ], "properties": { "name": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "description": "The name of the replica." }, - "description": { + "state": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "description": "The state of the replica." }, - "search_configurations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BingCustomSearchConfiguration" - }, - "maxItems": 1, - "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." + "container_state": { + "type": "string", + "description": "The container state of the replica." } }, - "description": "The bing custom search tool parameters." + "description": "Information about a container replica.", + "x-ms-foundry-meta": { + "required_previews": [ + "ContainerAgents=V1Preview" + ] + } }, - "BingGroundingSearchConfiguration": { + "ContentFilterResult": { "type": "object", "required": [ - "project_connection_id" + "blocked", + "source_type", + "content_filter_results" ], "properties": { - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "project_connection_id": { - "type": "string", - "description": "Project connection id for grounding with bing search" - }, - "market": { - "type": "string", - "description": "The market where the results come from." + "blocked": { + "type": "boolean", + "description": "Whether the content was blocked by the content filter." }, - "set_lang": { + "source_type": { "type": "string", - "description": "The language to use for user interface strings when calling Bing API." + "description": "The source type of the content filter evaluation (e.g., 'prompt', 'response', 'pre_tool_call', 'post_tool_call')." }, - "count": { - "type": "integer", - "format": "int64", - "description": "The number of search results to return in the bing api response" + "content_filter_results": { + "allOf": [ + { + "$ref": "#/components/schemas/AzureContentFilterResultsForResponses" + } + ], + "description": "The content filter results for this evaluation." }, - "freshness": { + "tool_call_id": { "type": "string", - "description": "Filter search results by a specific time range. See [accepted values here](https://learn.microsoft.com/bing/search-apis/bing-web-search/reference/query-parameters)." + "description": "The ID of the tool call associated with this content filter result, if applicable." } }, - "description": "Search configuration for Bing Grounding" + "description": "A content filter evaluation result for a specific source in the response." }, - "BingGroundingSearchToolParameters": { + "ContinuousEvaluationRuleAction": { "type": "object", "required": [ - "search_configurations" + "type", + "evalId" ], "properties": { - "name": { + "type": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "enum": [ + "continuousEvaluation" + ] }, - "description": { + "evalId": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "description": "Eval Id to add continuous evaluation runs to." }, - "search_configurations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BingGroundingSearchConfiguration" - }, - "maxItems": 1, - "description": "The search configurations attached to this tool. There can be a maximum of 1\nsearch configuration resource attached to the tool." + "maxHourlyRuns": { + "type": "integer", + "format": "int32", + "description": "Maximum number of evaluation runs allowed per hour." } }, - "description": "The bing grounding search tool parameters." + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleAction" + } + ], + "description": "Evaluation rule action for continuous evaluation." }, - "BingGroundingTool": { + "CosmosDBIndex": { "type": "object", "required": [ - "type", - "bing_grounding" + "type" ], "properties": { "type": { "type": "string", "enum": [ - "bing_grounding" - ], - "description": "The object type, which is always 'bing_grounding'." - }, - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "bing_grounding": { - "allOf": [ - { - "$ref": "#/components/schemas/BingGroundingSearchToolParameters" - } + "CosmosDBNoSqlVectorStore" ], - "description": "The bing grounding search tool parameters." + "description": "Type of index" } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.Tool" + "$ref": "#/components/schemas/Index" } ], - "description": "The input definition information for a bing grounding search tool as used to configure an agent." + "description": "CosmosDB Vector Store Index Definition" }, - "BingGroundingToolCall": { + "CosmosDBIndexUpdate": { "type": "object", "required": [ - "type", - "call_id", - "arguments", - "status" + "type" ], "properties": { "type": { "type": "string", "enum": [ - "bing_grounding_call" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "arguments": { - "type": "string", - "description": "A JSON string of the arguments to pass to the tool." - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } + "CosmosDBNoSqlVectorStore" ], - "description": "The status of the tool call." + "description": "Type of index" } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/IndexUpdate" } ], - "description": "A Bing grounding tool call." + "description": "CosmosDB Vector Store Index Definition" }, - "BingGroundingToolCallOutput": { + "CreateAgentFromManifestRequest": { "type": "object", "required": [ - "type", - "call_id", - "status" + "name", + "manifest_id", + "parameter_values" ], "properties": { - "type": { + "name": { "type": "string", - "enum": [ - "bing_grounding_call_output" - ] + "maxLength": 63, + "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." }, - "call_id": { + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" + }, + "description": { "type": "string", - "description": "The unique ID of the tool call generated by the model." + "maxLength": 512, + "description": "A human-readable description of the agent." }, - "output": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallOutputContent" - } - ], - "description": "The output from the Bing grounding tool call." + "manifest_id": { + "type": "string", + "description": "The manifest ID to import the agent version from." }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } - ], - "description": "The status of the tool call." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "parameter_values": { + "type": "object", + "additionalProperties": {}, + "description": "The inputs to the manifest that will result in a fully materialized Agent." } - ], - "description": "The output of a Bing grounding tool call." + } }, - "BlobReference": { + "CreateAgentRequest": { "type": "object", "required": [ - "blobUri", - "storageAccountArmId", - "credential" + "name", + "definition" ], "properties": { - "blobUri": { + "name": { "type": "string", - "format": "uri", - "description": "Blob URI path for client to upload data. Example: `https://blob.windows.core.net/Container/Path`" + "maxLength": 63, + "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." }, - "storageAccountArmId": { + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" + }, + "description": { "type": "string", - "description": "ARM ID of the storage account to use." + "maxLength": 512, + "description": "A human-readable description of the agent." }, - "credential": { + "definition": { "allOf": [ { - "$ref": "#/components/schemas/SasCredential" + "$ref": "#/components/schemas/AgentDefinition" } ], - "description": "Credential info to access the storage account." + "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } + }, + "blueprint_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentBlueprintReference" + } + ], + "description": "The blueprint reference for the agent.", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "agent_endpoint": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentEndpoint" + } + ], + "description": "An optional endpoint configuration. If not specified, a default endpoint configuration will be set for the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "agent_card": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentCard" + } + ], + "description": "Optional agent card for the agent", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } } }, - "description": "Blob reference details." + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } }, - "BotServiceAuthorizationScheme": { + "CreateAgentSessionRequest": { "type": "object", "required": [ - "type" + "version_indicator" ], "properties": { - "type": { + "agent_session_id": { "type": "string", - "enum": [ - "BotService" - ] + "description": "Optional caller-provided session ID. If specified, it must be unique within the agent endpoint. Auto-generated if omitted." + }, + "version_indicator": { + "allOf": [ + { + "$ref": "#/components/schemas/VersionIndicator" + } + ], + "description": "Determines which agent version backs the session." } }, - "allOf": [ - { - "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" - } - ], + "description": "Request to create a new agent session.", "x-ms-foundry-meta": { "required_previews": [ "AgentEndpoints=V1Preview" ] } }, - "BotServiceRbacAuthorizationScheme": { + "CreateAgentVersionFromManifestRequest": { "type": "object", "required": [ - "type" + "manifest_id", + "parameter_values" ], "properties": { - "type": { + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" + }, + "description": { "type": "string", - "enum": [ - "BotServiceRbac" - ] - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" + "maxLength": 512, + "description": "A human-readable description of the agent." + }, + "manifest_id": { + "type": "string", + "description": "The manifest ID to import the agent version from." + }, + "parameter_values": { + "type": "object", + "additionalProperties": {}, + "description": "The inputs to the manifest that will result in a fully materialized Agent." } - ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] } }, - "BrowserAutomationPreviewTool": { + "CreateAgentVersionRequest": { "type": "object", "required": [ - "type", - "browser_automation_preview" + "definition" ], "properties": { - "type": { - "type": "string", - "enum": [ - "browser_automation_preview" - ], - "description": "The object type, which is always 'browser_automation_preview'." - }, - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", + "x-oaiTypeLabel": "map" }, "description": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "maxLength": 512, + "description": "A human-readable description of the agent." }, - "browser_automation_preview": { + "definition": { "allOf": [ { - "$ref": "#/components/schemas/BrowserAutomationToolParameters" + "$ref": "#/components/schemas/AgentDefinition" } ], - "description": "The Browser Automation Tool parameters." + "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } + }, + "blueprint_reference": { + "allOf": [ + { + "$ref": "#/components/schemas/AgentBlueprintReference" + } + ], + "description": "The blueprint reference for the agent.", + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } } }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Tool" - } - ], - "description": "The input definition information for a Browser Automation Tool, as used to configure an Agent." + "x-ms-foundry-meta": { + "conditional_previews": [ + "HostedAgents=V1Preview", + "ContainerAgents=V1Preview", + "WorkflowAgents=V1Preview" + ] + } }, - "BrowserAutomationToolCall": { + "CreateEvalRequest": { "type": "object", "required": [ - "type", - "call_id", - "arguments", - "status" + "data_source_config", + "testing_criteria" ], "properties": { - "type": { - "type": "string", - "enum": [ - "browser_automation_preview_call" - ] - }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "arguments": { + "name": { "type": "string", - "description": "A JSON string of the arguments to pass to the tool." + "description": "The name of the evaluation." }, - "status": { + "metadata": { + "type": "object", "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/OpenAI.Metadata" } ], - "description": "The status of the tool call." + "nullable": true + }, + "data_source_config": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.CreateEvalCustomDataSourceConfig" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalLogsDataSourceConfig" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalStoredCompletionsDataSourceConfig" + }, + { + "$ref": "#/components/schemas/AzureAIDataSourceConfig" + }, + { + "$ref": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" + } + ], + "description": "The configuration for the data source used for the evaluation runs. Dictates the schema of the data used in the evaluation." + }, + "testing_criteria": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/OpenAI.EvalGraderLabelModel" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderStringCheck" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderTextSimilarity" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderPython" + }, + { + "$ref": "#/components/schemas/OpenAI.EvalGraderScoreModel" + }, + { + "$ref": "#/components/schemas/EvalGraderAzureAIEvaluator" + }, + { + "$ref": "#/components/schemas/EvalGraderInspectAI" + } + ] + }, + "description": "A list of graders for all eval runs in this group. Graders can reference variables in the data source using double curly braces notation, like `{{item.variable_name}}`. To reference the model's output, use the `sample` namespace (ie, `{{sample.output_text}}`)." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." } }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.OutputItem" - } - ], - "description": "A browser automation tool call." + "title": "CreateEvalRequest" }, - "BrowserAutomationToolCallOutput": { + "CreateEvalRunRequest": { "type": "object", "required": [ - "type", - "call_id", - "status" + "data_source" ], "properties": { - "type": { - "type": "string", - "enum": [ - "browser_automation_preview_call_output" - ] - }, - "call_id": { + "name": { "type": "string", - "description": "The unique ID of the tool call generated by the model." + "description": "The name of the run." }, - "output": { + "metadata": { + "type": "object", "allOf": [ { - "$ref": "#/components/schemas/ToolCallOutputContent" + "$ref": "#/components/schemas/OpenAI.Metadata" } ], - "description": "The output from the browser automation tool call." + "nullable": true }, - "status": { - "allOf": [ + "data_source": { + "oneOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" + }, + { + "$ref": "#/components/schemas/EvalRunDataSource" } ], - "description": "The status of the tool call." + "description": "Details about the run's data source." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." } }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.OutputItem" - } - ], - "description": "The output of a browser automation tool call." + "title": "CreateEvalRunRequest" }, - "BrowserAutomationToolConnectionParameters": { + "CreateOrUpdateManagedAgentIdentityBlueprintRequest": { "type": "object", "required": [ - "project_connection_id" + "name" ], "properties": { "name": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "project_connection_id": { - "type": "string", - "description": "The ID of the project connection to your Azure Playwright resource." + "maxLength": 63, + "description": "The unique name that identifies the managed agent identity blueprint.\nName can be used to retrieve/update/delete the managed agent identity blueprint.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." } }, - "description": "Definition of input parameters for the connection used by the Browser Automation Tool." + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "BrowserAutomationToolParameters": { + "CreatedBy": { "type": "object", - "required": [ - "connection" - ], "properties": { - "name": { - "type": "string", - "description": "Optional user-defined name for this tool or configuration." - }, - "description": { - "type": "string", - "description": "Optional user-defined description for this tool or configuration." - }, - "connection": { + "agent": { "allOf": [ { - "$ref": "#/components/schemas/BrowserAutomationToolConnectionParameters" + "$ref": "#/components/schemas/AgentId" } ], - "description": "The project connection parameters associated with the Browser Automation Tool." + "description": "The agent that created the item." + }, + "response_id": { + "type": "string", + "description": "The response on which the item is created." } - }, - "description": "Definition of input parameters for the Browser Automation Tool." + } }, - "CaptureStructuredOutputsTool": { + "CredentialType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "ApiKey", + "AAD", + "SAS", + "CustomKeys", + "None", + "AgenticIdentityToken_Preview" + ] + } + ], + "description": "The credential type used by the connection" + }, + "CronTrigger": { "type": "object", "required": [ "type", - "outputs" + "expression" ], "properties": { "type": { "type": "string", "enum": [ - "capture_structured_outputs" - ], - "description": "The type of the tool. Always `capture_structured_outputs`." + "Cron" + ] }, - "outputs": { - "allOf": [ - { - "$ref": "#/components/schemas/StructuredOutputDefinition" - } - ], - "description": "The structured outputs to capture from the model." + "expression": { + "type": "string", + "description": "Cron expression that defines the schedule frequency." + }, + "timeZone": { + "type": "string", + "description": "Time zone for the cron schedule.", + "default": "UTC" + }, + "startTime": { + "type": "string", + "description": "Start time for the cron schedule in ISO 8601 format." + }, + "endTime": { + "type": "string", + "description": "End time for the cron schedule in ISO 8601 format." } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.Tool" + "$ref": "#/components/schemas/Trigger" } ], - "description": "A tool for capturing structured outputs" - }, - "ChartCoordinate": { - "type": "object", - "required": [ - "x", - "y", - "size" - ], - "properties": { - "x": { - "type": "integer", - "format": "int32", - "description": "X-axis coordinate." - }, - "y": { - "type": "integer", - "format": "int32", - "description": "Y-axis coordinate." - }, - "size": { - "type": "integer", - "format": "int32", - "description": "Size of the chart element." - } - }, - "description": "Coordinates for the analysis chart." + "description": "Cron based trigger." }, - "ChatSummaryMemoryItem": { + "CustomCredential": { "type": "object", "required": [ - "kind" + "type" ], "properties": { - "kind": { + "type": { "type": "string", "enum": [ - "chat_summary" + "CustomKeys" ], - "description": "The kind of the memory item." + "description": "The credential type", + "readOnly": true } }, + "additionalProperties": { + "type": "string" + }, "allOf": [ { - "$ref": "#/components/schemas/MemoryItem" + "$ref": "#/components/schemas/BaseCredentials" } ], - "description": "A memory item containing a summary extracted from conversations.", - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] - } + "description": "Custom credential definition" }, - "ClusterInsightResult": { + "DailyRecurrenceSchedule": { "type": "object", "required": [ - "summary", - "clusters" + "type", + "hours" ], "properties": { - "summary": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightSummary" - } + "type": { + "type": "string", + "enum": [ + "Daily" ], - "description": "Summary of the insights report." + "description": "Daily recurrence type." }, - "clusters": { + "hours": { "type": "array", "items": { - "$ref": "#/components/schemas/InsightCluster" - }, - "description": "List of clusters identified in the insights." - }, - "coordinates": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/ChartCoordinate" + "type": "integer", + "format": "int32" }, - "description": " Optional mapping of IDs to 2D coordinates used by the UX for visualization.\n\n The map keys are string identifiers (for example, a cluster id or a sample id)\n and the values are the coordinates and visual size for rendering on a 2D chart.\n\n This property is omitted unless the client requests coordinates (for example,\n by passing `includeCoordinates=true` as a query parameter).\n\n Example:\n ```\n {\n \"cluster-1\": { \"x\": 12, \"y\": 34, \"size\": 8 },\n \"sample-123\": { \"x\": 18, \"y\": 22, \"size\": 4 }\n }\n ```\n\n Coordinates are intended only for client-side visualization and do not\n modify the canonical insights results." + "description": "Hours for the recurrence schedule." } }, - "description": "Insights from the cluster analysis." - }, - "ClusterTokenUsage": { - "type": "object", - "required": [ - "inputTokenUsage", - "outputTokenUsage", - "totalTokenUsage" - ], - "properties": { - "inputTokenUsage": { - "type": "integer", - "format": "int32", - "description": "input token usage" - }, - "outputTokenUsage": { - "type": "integer", - "format": "int32", - "description": "output token usage" - }, - "totalTokenUsage": { - "type": "integer", - "format": "int32", - "description": "total token usage" + "allOf": [ + { + "$ref": "#/components/schemas/RecurrenceSchedule" } - }, - "description": "Token usage for cluster analysis" + ], + "description": "Daily recurrence schedule." }, - "CodeBasedEvaluatorDefinition": { + "DataSourceConfig": { "type": "object", "required": [ - "type" + "type", + "schema" ], "properties": { "type": { "type": "string", - "enum": [ - "code" - ] - }, - "code_text": { - "type": "string", - "description": "Inline code text for the evaluator" - }, - "entry_point": { - "type": "string", - "description": "The entry point Python file name for the uploaded evaluator code (e.g. 'answer_length_evaluator.py')" - }, - "image_tag": { - "type": "string", - "description": "The container image tag to use for evaluator code execution" + "description": "The data source type discriminator." }, - "blob_uri": { - "type": "string", - "description": "The blob URI for the evaluator storage" + "schema": { + "type": "object", + "additionalProperties": {}, + "description": "The overall object JSON schema for the run data source items." } }, - "allOf": [ - { - "$ref": "#/components/schemas/EvaluatorDefinition" - } - ], - "description": "Code-based evaluator definition using python code" + "discriminator": { + "propertyName": "type", + "mapping": {} + }, + "description": "Base class for run data sources with discriminator support." }, - "CompletionMessageToolCallChunk": { - "type": "object", - "required": [ - "id", - "type" - ], - "properties": { - "id": { - "type": "string", - "description": "The Id for the tool call." + "DatasetType": { + "anyOf": [ + { + "type": "string" }, - "type": { + { "type": "string", "enum": [ - "function" - ], - "description": "The type of tool call, which is always \"function\"." - }, - "function": { - "allOf": [ - { - "$ref": "#/components/schemas/FunctionToolCall" - } - ], - "description": "Details of the function tool call, if applicable." + "uri_file", + "uri_folder" + ] } - }, - "description": "Tool call details within a message." + ], + "description": "Enum to determine the type of data." }, - "Connection": { + "DatasetVersion": { "type": "object", "required": [ - "name", - "id", + "dataUri", "type", - "target", - "isDefault", - "credentials", - "metadata" + "name", + "version" ], "properties": { - "name": { - "type": "string", - "description": "The friendly name of the connection, provided by the user.", - "readOnly": true - }, - "id": { + "dataUri": { "type": "string", - "description": "A unique identifier for the connection, generated by the service", - "readOnly": true + "minLength": 1, + "pattern": "[a-zA-Z0-9_]", + "description": "URI of the data ([example](https://go.microsoft.com/fwlink/?linkid=2202330))" }, "type": { "allOf": [ { - "$ref": "#/components/schemas/ConnectionType" + "$ref": "#/components/schemas/DatasetType" } ], - "description": "Category of the connection", + "description": "Dataset type" + }, + "isReference": { + "type": "boolean", + "description": "Indicates if the dataset holds a reference to the storage, or the dataset manages storage itself. If true, the underlying data will not be deleted when the dataset version is deleted", "readOnly": true }, - "target": { + "connectionName": { "type": "string", - "description": "The connection URL to be used for this service", + "description": "The Azure Storage Account connection name. Required if startPendingUploadVersion was not called before creating the Dataset" + }, + "id": { + "type": "string", + "description": "Asset ID, a unique identifier for the asset", "readOnly": true }, - "isDefault": { - "type": "boolean", - "description": "Whether the connection is tagged as the default connection of its type", + "name": { + "type": "string", + "description": "The name of the resource", "readOnly": true }, - "credentials": { + "version": { + "type": "string", + "description": "The version of the resource", + "readOnly": true + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "uri_file": "#/components/schemas/FileDatasetVersion", + "uri_folder": "#/components/schemas/FolderDatasetVersion" + } + }, + "description": "DatasetVersion Definition" + }, + "DatasetVersionUpdate": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { "allOf": [ { - "$ref": "#/components/schemas/BaseCredentials" + "$ref": "#/components/schemas/DatasetType" } ], - "description": "The credentials used by the connection", - "readOnly": true + "description": "Dataset type" }, - "metadata": { + "description": { + "type": "string", + "description": "The asset description text." + }, + "tags": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Metadata of the connection", - "readOnly": true + "description": "Tag dictionary. Tags can be added, removed, and updated." } }, - "description": "Response from the list and get connections operations" + "discriminator": { + "propertyName": "type", + "mapping": { + "uri_file": "#/components/schemas/FileDatasetVersionUpdate", + "uri_folder": "#/components/schemas/FolderDatasetVersionUpdate" + } + }, + "description": "DatasetVersion Definition" }, - "ConnectionType": { + "DayOfWeek": { "anyOf": [ { "type": "string" @@ -15362,523 +22425,427 @@ { "type": "string", "enum": [ - "AzureOpenAI", - "AzureBlob", - "AzureStorageAccount", - "CognitiveSearch", - "CosmosDB", - "ApiKey", - "AppConfig", - "AppInsights", - "CustomKeys", - "RemoteTool_Preview" + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" ] } ], - "description": "The Type (or category) of the connection" + "description": "Days of the week for recurrence schedule." }, - "ContainerAppAgentDefinition": { + "DeleteAgentResponse": { "type": "object", "required": [ - "kind", - "container_protocol_versions", - "container_app_resource_id", - "ingress_subdomain_suffix" + "object", + "name", + "deleted" ], "properties": { - "kind": { + "object": { "type": "string", "enum": [ - "container_app" - ] + "agent.deleted" + ], + "description": "The object type. Always 'agent.deleted'." }, - "container_protocol_versions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProtocolVersionRecord" - }, - "description": "The protocols that the agent supports for ingress communication of the containers.", - "example": [ - { - "protocol": "responses", - "version": "v0.1.1" - }, - { - "protocol": "a2a", - "version": "v0.3.0" - } - ] + "name": { + "type": "string", + "description": "The name of the agent." + }, + "deleted": { + "type": "boolean", + "description": "Whether the agent was successfully deleted." + } + }, + "description": "A deleted agent Object" + }, + "DeleteAgentVersionResponse": { + "type": "object", + "required": [ + "object", + "name", + "version", + "deleted" + ], + "properties": { + "object": { + "type": "string", + "enum": [ + "agent.version.deleted" + ], + "description": "The object type. Always 'agent.version.deleted'." }, - "container_app_resource_id": { + "name": { "type": "string", - "description": "The resource ID of the Azure Container App that hosts this agent. Not mutable across versions." + "description": "The name of the agent." }, - "ingress_subdomain_suffix": { + "version": { "type": "string", - "description": "The suffix to apply to the app subdomain when sending ingress to the agent. This can be a label (e.g., '---current'), a specific revision (e.g., '--0000001'), or empty to use the default endpoint for the container app.", - "example": "--0000001" + "description": "The version identifier of the agent." + }, + "deleted": { + "type": "boolean", + "description": "Whether the agent was successfully deleted." } }, - "allOf": [ - { - "$ref": "#/components/schemas/AgentDefinition" - } - ], - "description": "The container app agent definition.", - "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" - ] - } + "description": "A deleted agent version Object" }, - "ContainerDetails": { + "DeleteEvalResponse": { "type": "object", "required": [ - "provisioning_state", - "state", - "health_state", - "replicas", - "updated_on" + "object", + "eval_id", + "deleted" ], "properties": { - "provisioning_state": { + "object": { "type": "string", - "description": "The provisioning state of the container." + "enum": [ + "eval.deleted" + ], + "description": "The object type. Always 'eval.deleted'." }, - "provisioning_error": { + "eval_id": { "type": "string", - "description": "The provisioning error of the container, if any." + "description": "id of the eval." }, - "state": { + "deleted": { + "type": "boolean", + "description": "Whether the eval was successfully deleted." + } + }, + "description": "A deleted evaluation Object" + }, + "DeleteEvalRunResponse": { + "type": "object", + "properties": { + "object": { "type": "string", - "description": "The state of the container." + "enum": [ + "eval.deleted" + ], + "description": "The object type. Always 'eval.deleted'." }, - "health_state": { + "run_id": { "type": "string", - "description": "The health state of the container." - }, - "replicas": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ContainerReplica" - }, - "description": "The list of replicas in the container." + "description": "id of the eval." }, - "updated_on": { - "type": "string", - "format": "date-time", - "description": "The last update time of the container." + "deleted": { + "type": "boolean", + "description": "Whether the eval was successfully deleted." } }, - "description": "Detailed information about the container.", - "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" - ] - } - }, - "ContainerLogKind": { - "type": "string", - "enum": [ - "console", - "system" - ], - "description": "The type of logs to stream from a container.", - "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" - ] - } + "description": "A deleted evaluation run Object." }, - "ContainerReplica": { + "DeleteMemoryStoreResponse": { "type": "object", "required": [ + "object", "name", - "state", - "container_state" + "deleted" ], "properties": { - "name": { + "object": { "type": "string", - "description": "The name of the replica." + "enum": [ + "memory_store.deleted" + ], + "description": "The object type. Always 'memory_store.deleted'." }, - "state": { + "name": { "type": "string", - "description": "The state of the replica." + "description": "The name of the memory store." }, - "container_state": { - "type": "string", - "description": "The container state of the replica." + "deleted": { + "type": "boolean", + "description": "Whether the memory store was successfully deleted." } }, - "description": "Information about a container replica.", "x-ms-foundry-meta": { - "required_previews": [ - "ContainerAgents=V1Preview" + "conditional_previews": [ + "MemoryStores=V1Preview" ] } }, - "ContentFilterResult": { + "DeleteResponseResult": { "type": "object", "required": [ - "blocked", - "source_type", - "content_filter_results" + "id", + "object", + "deleted" ], "properties": { - "blocked": { - "type": "boolean", - "description": "Whether the content was blocked by the content filter." + "id": { + "type": "string", + "description": "The operation ID." }, - "source_type": { + "object": { "type": "string", - "description": "The source type of the content filter evaluation (e.g., 'prompt', 'response', 'pre_tool_call', 'post_tool_call')." + "enum": [ + "response" + ], + "description": "Always return 'response'." }, - "content_filter_results": { + "deleted": { + "type": "boolean", + "enum": [ + true + ], + "description": "Always return true" + } + }, + "description": "The result of a delete response operation." + }, + "DeleteSkillResponse": { + "type": "object", + "required": [ + "object", + "name", + "deleted" + ], + "properties": { + "object": { "allOf": [ { - "$ref": "#/components/schemas/AzureContentFilterResultsForResponses" + "$ref": "#/components/schemas/SkillObjectType" } ], - "description": "The content filter results for this evaluation." + "description": "The object type. Always 'skill.deleted'.", + "default": "skill.deleted" }, - "tool_call_id": { + "name": { "type": "string", - "description": "The ID of the tool call associated with this content filter result, if applicable." + "description": "The unique name of the skill." + }, + "deleted": { + "type": "boolean", + "description": "Whether the skill was successfully deleted." } }, - "description": "A content filter evaluation result for a specific source in the response." + "description": "A deleted skill Object" }, - "ContinuousEvaluationRuleAction": { + "DeleteToolsetResponse": { "type": "object", "required": [ - "type", - "evalId" + "object", + "name", + "deleted" ], "properties": { - "type": { + "object": { "type": "string", "enum": [ - "continuousEvaluation" - ] + "toolset.deleted" + ], + "description": "The object type. Always 'toolset.deleted'." }, - "evalId": { + "name": { "type": "string", - "description": "Eval Id to add continuous evaluation runs to." + "description": "The name of the toolset." }, - "maxHourlyRuns": { - "type": "integer", - "format": "int32", - "description": "Maximum number of evaluation runs allowed per hour." + "deleted": { + "type": "boolean", + "description": "Whether the toolset was successfully deleted." } }, - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleAction" - } - ], - "description": "Evaluation rule action for continuous evaluation." + "description": "Response returned when a toolset is deleted." }, - "CosmosDBIndex": { + "Deployment": { "type": "object", "required": [ - "type" + "type", + "name" ], "properties": { "type": { - "type": "string", - "enum": [ - "CosmosDBNoSqlVectorStore" + "allOf": [ + { + "$ref": "#/components/schemas/DeploymentType" + } ], - "description": "Type of index" + "description": "The type of the deployment" + }, + "name": { + "type": "string", + "description": "Name of the deployment", + "readOnly": true } }, - "allOf": [ + "discriminator": { + "propertyName": "type", + "mapping": { + "ModelDeployment": "#/components/schemas/ModelDeployment" + } + }, + "description": "Model Deployment Definition" + }, + "DeploymentType": { + "anyOf": [ { - "$ref": "#/components/schemas/Index" + "type": "string" + }, + { + "type": "string", + "enum": [ + "ModelDeployment" + ] } - ], - "description": "CosmosDB Vector Store Index Definition" + ] }, - "CosmosDBIndexUpdate": { + "DeveloperMessage": { "type": "object", "required": [ - "type" + "role", + "content" ], "properties": { - "type": { + "role": { "type": "string", "enum": [ - "CosmosDBNoSqlVectorStore" + "developer" ], - "description": "Type of index" + "description": "Indicates this is a developer message." + }, + "content": { + "type": "string", + "description": "Content provided by a developer to guide model behavior in an evaluation context." } }, "allOf": [ { - "$ref": "#/components/schemas/IndexUpdate" + "$ref": "#/components/schemas/Message" } ], - "description": "CosmosDB Vector Store Index Definition" + "description": "A message authored by a developer to guide the model during evaluation." }, - "CreateAgentFromManifestRequest": { + "DistributionConfiguration": { "type": "object", "required": [ - "name", - "manifest_id", - "parameter_values" + "distributionType" ], "properties": { - "name": { - "type": "string", - "maxLength": 63, - "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." - }, - "manifest_id": { + "distributionType": { "type": "string", - "description": "The manifest ID to import the agent version from." - }, - "parameter_values": { - "type": "object", - "additionalProperties": {}, - "description": "The inputs to the manifest that will result in a fully materialized Agent." + "description": "Specifies the type of distribution framework." } - } - }, - "CreateAgentRequest": { - "type": "object", - "required": [ - "name", - "definition" - ], - "properties": { - "name": { - "type": "string", - "maxLength": 63, - "description": "The unique name that identifies the agent. Name can be used to retrieve/update/delete the agent.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." - }, - "definition": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentDefinition" - } - ], - "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", - "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" - ] - } - }, - "blueprint_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentBlueprintReference" - } - ], - "description": "The blueprint reference for the agent.", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "agent_endpoint": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentEndpoint" - } - ], - "description": "An optional endpoint configuration. If not specified, a default endpoint configuration will be set for the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "agent_card": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentCard" - } - ], - "description": "Optional agent card for the agent", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + }, + "discriminator": { + "propertyName": "distributionType", + "mapping": { + "PyTorch": "#/components/schemas/PyTorchDistribution", + "Mpi": "#/components/schemas/MpiDistribution", + "TensorFlow": "#/components/schemas/TensorFlowDistribution" } }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" - ] - } + "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." }, - "CreateAgentSessionRequest": { + "EntraAuthorizationScheme": { "type": "object", "required": [ - "version_indicator" + "type", + "isolation_key_source" ], "properties": { - "agent_session_id": { + "type": { "type": "string", - "description": "Optional caller-provided session ID. If specified, it must be unique within the agent endpoint. Auto-generated if omitted." + "enum": [ + "Entra" + ] }, - "version_indicator": { - "allOf": [ - { - "$ref": "#/components/schemas/VersionIndicator" - } - ], - "description": "Determines which agent version backs the session." + "isolation_key_source": { + "$ref": "#/components/schemas/IsolationKeySource" } }, - "description": "Request to create a new agent session.", + "allOf": [ + { + "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" + } + ], "x-ms-foundry-meta": { "required_previews": [ "AgentEndpoints=V1Preview" ] } }, - "CreateAgentVersionFromManifestRequest": { - "type": "object", - "required": [ - "manifest_id", - "parameter_values" - ], - "properties": { - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" - }, - "description": { - "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." - }, - "manifest_id": { - "type": "string", - "description": "The manifest ID to import the agent version from." - }, - "parameter_values": { - "type": "object", - "additionalProperties": {}, - "description": "The inputs to the manifest that will result in a fully materialized Agent." - } - } - }, - "CreateAgentVersionRequest": { + "EntraIDCredentials": { "type": "object", "required": [ - "definition" + "type" ], "properties": { - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of 16 key-value pairs that can be attached to an object. This can be\nuseful for storing additional information about the object in a structured\nformat, and querying for objects via API or the dashboard.\n\nKeys are strings with a maximum length of 64 characters. Values are strings\nwith a maximum length of 512 characters.", - "x-oaiTypeLabel": "map" - }, - "description": { + "type": { "type": "string", - "maxLength": 512, - "description": "A human-readable description of the agent." - }, - "definition": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentDefinition" - } - ], - "description": "The agent definition. This can be a workflow, hosted agent, or a simple agent definition.", - "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" - ] - } - }, - "blueprint_reference": { - "allOf": [ - { - "$ref": "#/components/schemas/AgentBlueprintReference" - } + "enum": [ + "AAD" ], - "description": "The blueprint reference for the agent.", - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "The credential type", + "readOnly": true + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/BaseCredentials" + } + ], + "description": "Entra ID credential definition" + }, + "EntraIsolationKeySource": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "Entra" + ] } }, + "allOf": [ + { + "$ref": "#/components/schemas/IsolationKeySource" + } + ], "x-ms-foundry-meta": { - "conditional_previews": [ - "HostedAgents=V1Preview", - "ContainerAgents=V1Preview", - "WorkflowAgents=V1Preview" + "required_previews": [ + "AgentEndpoints=V1Preview" ] } }, - "CreateEvalRequest": { + "Eval": { "type": "object", "required": [ + "object", + "id", + "name", "data_source_config", - "testing_criteria" + "testing_criteria", + "created_at", + "metadata" ], "properties": { + "object": { + "type": "string", + "enum": [ + "eval" + ], + "description": "The object type.", + "x-stainless-const": true, + "default": "eval" + }, + "id": { + "type": "string", + "description": "Unique identifier for the evaluation." + }, "name": { "type": "string", "description": "The name of the evaluation." }, - "metadata": { - "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true - }, "data_source_config": { "oneOf": [ { @@ -15897,7 +22864,7 @@ "$ref": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" } ], - "description": "The configuration for the data source used for the evaluation runs. Dictates the schema of the data used in the evaluation." + "description": "Configuration of data sources used in runs of the evaluation." }, "testing_criteria": { "type": "array", @@ -15926,27 +22893,12 @@ } ] }, - "description": "A list of graders for all eval runs in this group. Graders can reference variables in the data source using double curly braces notation, like `{{item.variable_name}}`. To reference the model's output, use the `sample` namespace (ie, `{{sample.output_text}}`)." + "description": "A list of testing criteria." }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." - } - }, - "title": "CreateEvalRequest" - }, - "CreateEvalRunRequest": { - "type": "object", - "required": [ - "data_source" - ], - "properties": { - "name": { - "type": "string", - "description": "The name of the run." + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "The Unix timestamp (in seconds) for when the eval was created." }, "metadata": { "type": "object", @@ -15957,22 +22909,17 @@ ], "nullable": true }, - "data_source": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" - }, + "modified_at": { + "allOf": [ { - "$ref": "#/components/schemas/EvalRunDataSource" + "$ref": "#/components/schemas/integer" } ], - "description": "Details about the run's data source." + "description": "Unix timestamp (in seconds) when the evaluation run was last modified." + }, + "created_by": { + "type": "string", + "description": "the name of the person who created the run." }, "properties": { "type": "object", @@ -15982,2125 +22929,2153 @@ "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." } }, - "title": "CreateEvalRunRequest" + "description": "An Eval object with a data source config and testing criteria.\nAn Eval represents a task to be done for your LLM integration.\nLike:\n- Improve the quality of my chatbot\n- See how well my chatbot handles customer support\n- Check if o4-mini is better at my usecase than gpt-4o", + "title": "Eval", + "x-oaiMeta": { + "name": "The eval object", + "group": "evals", + "example": "{\n \"object\": \"eval\",\n \"id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"data_source_config\": {\n \"type\": \"custom\",\n \"item_schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\"type\": \"string\"},\n },\n \"required\": [\"label\"]\n },\n \"include_sample_schema\": true\n },\n \"testing_criteria\": [\n {\n \"name\": \"My string check grader\",\n \"type\": \"string_check\",\n \"input\": \"{{sample.output_text}}\",\n \"reference\": \"{{item.label}}\",\n \"operation\": \"eq\",\n }\n ],\n \"name\": \"External Data Eval\",\n \"created_at\": 1739314509,\n \"metadata\": {\n \"test\": \"synthetics\",\n }\n}\n" + } }, - "CreateOrUpdateManagedAgentIdentityBlueprintRequest": { + "EvalCsvFileIdSource": { "type": "object", "required": [ - "name" + "type", + "id" ], "properties": { - "name": { + "type": { "type": "string", - "maxLength": 63, - "description": "The unique name that identifies the managed agent identity blueprint.\nName can be used to retrieve/update/delete the managed agent identity blueprint.\n- Must start and end with alphanumeric characters,\n- Can contain hyphens in the middle\n- Must not exceed 63 characters." + "enum": [ + "file_id" + ], + "description": "The type of source, always `file_id`." + }, + "id": { + "type": "string", + "description": "The identifier of the uploaded CSV file." } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "Represents a reference to an uploaded CSV file used as a source for evaluation data." }, - "CreatedBy": { + "EvalCsvRunDataSource": { "type": "object", + "required": [ + "type", + "source" + ], "properties": { - "agent": { + "type": { + "type": "string", + "enum": [ + "csv" + ], + "description": "The type of data source, always `csv`." + }, + "source": { "allOf": [ { - "$ref": "#/components/schemas/AgentId" + "$ref": "#/components/schemas/EvalCsvFileIdSource" } ], - "description": "The agent that created the item." - }, - "response_id": { - "type": "string", - "description": "The response on which the item is created." + "description": "The source of the CSV data, either inline content or a file reference." } - } - }, - "CredentialType": { - "anyOf": [ - { - "type": "string" - }, + }, + "allOf": [ { - "type": "string", - "enum": [ - "ApiKey", - "AAD", - "SAS", - "CustomKeys", - "None", - "AgenticIdentityToken_Preview" - ] + "$ref": "#/components/schemas/EvalRunDataSource" } ], - "description": "The credential type used by the connection" + "description": "Represents a CSV data source for evaluation runs." }, - "CronTrigger": { + "EvalGraderAzureAIEvaluator": { "type": "object", "required": [ "type", - "expression" + "name", + "evaluator_name" ], "properties": { "type": { "type": "string", "enum": [ - "Cron" - ] + "azure_ai_evaluator" + ], + "description": "The object type, which is always `azure_ai_evaluator`." }, - "expression": { + "name": { "type": "string", - "description": "Cron expression that defines the schedule frequency." + "description": "The name of the grader." }, - "timeZone": { + "evaluator_name": { "type": "string", - "description": "Time zone for the cron schedule.", - "default": "UTC" + "description": "The name of the evaluator." }, - "startTime": { + "evaluator_version": { "type": "string", - "description": "Start time for the cron schedule in ISO 8601 format." + "description": "The version of the evaluator. Latest version if not specified." }, - "endTime": { - "type": "string", - "description": "End time for the cron schedule in ISO 8601 format." + "initialization_parameters": { + "type": "object", + "additionalProperties": {}, + "description": "The initialization parameters for the evaluation. Must support structured outputs." + }, + "data_mapping": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The model to use for the evaluation. Must support structured outputs." } }, - "allOf": [ - { - "$ref": "#/components/schemas/Trigger" - } - ], - "description": "Cron based trigger." + "title": "AzureAIEvaluatorGrader" }, - "CustomCredential": { + "EvalGraderInspectAI": { "type": "object", "required": [ - "type" + "type", + "name", + "task_name" ], "properties": { "type": { "type": "string", "enum": [ - "CustomKeys" + "inspect_ai" ], - "description": "The credential type", - "readOnly": true + "description": "The object type, which is always `inspect_ai`." + }, + "name": { + "type": "string", + "description": "The display name of the benchmark." + }, + "task_name": { + "type": "string", + "description": "The inspect_ai task module path (e.g., `inspect_evals/gpqa_diamond`)." } }, - "additionalProperties": { - "type": "string" - }, - "allOf": [ - { - "$ref": "#/components/schemas/BaseCredentials" - } - ], - "description": "Custom credential definition" + "description": "Grader inspect_ai definition for inspect_ai benchmark evaluators." }, - "DailyRecurrenceSchedule": { + "EvalResult": { "type": "object", "required": [ + "name", "type", - "hours" + "score", + "passed" ], "properties": { + "name": { + "type": "string", + "description": "name of the check" + }, "type": { + "type": "string", + "description": "type of the check" + }, + "score": { + "type": "number", + "format": "float", + "description": "score" + }, + "passed": { + "type": "boolean", + "description": "indicates if the check passed or failed" + } + }, + "description": "Result of the evaluation." + }, + "EvalRun": { + "type": "object", + "required": [ + "object", + "id", + "eval_id", + "status", + "model", + "name", + "created_at", + "report_url", + "result_counts", + "per_model_usage", + "per_testing_criteria_results", + "data_source", + "metadata", + "error" + ], + "properties": { + "object": { "type": "string", "enum": [ - "Daily" + "eval.run" ], - "description": "Daily recurrence type." + "description": "The type of the object. Always \"eval.run\".", + "x-stainless-const": true, + "default": "eval.run" }, - "hours": { + "id": { + "type": "string", + "description": "Unique identifier for the evaluation run." + }, + "eval_id": { + "type": "string", + "description": "The identifier of the associated evaluation." + }, + "status": { + "type": "string", + "description": "The status of the evaluation run." + }, + "model": { + "type": "string", + "description": "The model that is evaluated, if applicable." + }, + "name": { + "type": "string", + "description": "The name of the evaluation run." + }, + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "Unix timestamp (in seconds) when the evaluation run was created." + }, + "report_url": { + "type": "string", + "format": "uri", + "description": "The URL to the rendered evaluation run report on the UI dashboard." + }, + "result_counts": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.EvalRunResultCounts" + } + ], + "description": "Counters summarizing the outcomes of the evaluation run." + }, + "per_model_usage": { "type": "array", "items": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/OpenAI.EvalRunPerModelUsage" }, - "description": "Hours for the recurrence schedule." + "description": "Usage statistics for each model during the evaluation run." + }, + "per_testing_criteria_results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.EvalRunPerTestingCriteriaResults" + }, + "description": "Results per testing criteria applied during the evaluation run." + }, + "data_source": { + "oneOf": [ + { + "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" + }, + { + "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" + }, + { + "$ref": "#/components/schemas/EvalRunDataSource" + } + ], + "description": "Information about the run's data source." + }, + "metadata": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Metadata" + } + ], + "nullable": true + }, + "error": { + "$ref": "#/components/schemas/OpenAI.EvalApiError" + }, + "modified_at": { + "allOf": [ + { + "$ref": "#/components/schemas/integer" + } + ], + "description": "Unix timestamp (in seconds) when the evaluation run was last modified." + }, + "created_by": { + "type": "string", + "description": "the name of the person who created the run." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." } }, - "allOf": [ - { - "$ref": "#/components/schemas/RecurrenceSchedule" - } - ], - "description": "Daily recurrence schedule." + "description": "A schema representing an evaluation run.", + "title": "EvalRun", + "x-oaiMeta": { + "name": "The eval run object", + "group": "evals", + "example": "{\n \"object\": \"eval.run\",\n \"id\": \"evalrun_67e57965b480819094274e3a32235e4c\",\n \"eval_id\": \"eval_67e579652b548190aaa83ada4b125f47\",\n \"report_url\": \"https://platform.openai.com/evaluations/eval_67e579652b548190aaa83ada4b125f47?run_id=evalrun_67e57965b480819094274e3a32235e4c\",\n \"status\": \"queued\",\n \"model\": \"gpt-4o-mini\",\n \"name\": \"gpt-4o-mini\",\n \"created_at\": 1743092069,\n \"result_counts\": {\n \"total\": 0,\n \"errored\": 0,\n \"failed\": 0,\n \"passed\": 0\n },\n \"per_model_usage\": null,\n \"per_testing_criteria_results\": null,\n \"data_source\": {\n \"type\": \"completions\",\n \"source\": {\n \"type\": \"file_content\",\n \"content\": [\n {\n \"item\": {\n \"input\": \"Tech Company Launches Advanced Artificial Intelligence Platform\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Central Bank Increases Interest Rates Amid Inflation Concerns\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Summit Addresses Climate Change Strategies\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Major Retailer Reports Record-Breaking Holiday Sales\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"National Team Qualifies for World Championship Finals\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Stock Markets Rally After Positive Economic Data Released\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Manufacturer Announces Merger with Competitor\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Breakthrough in Renewable Energy Technology Unveiled\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"World Leaders Sign Historic Climate Agreement\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Professional Athlete Sets New Record in Championship Event\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Financial Institutions Adapt to New Regulatory Requirements\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Tech Conference Showcases Advances in Artificial Intelligence\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Markets Respond to Oil Price Fluctuations\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Cooperation Strengthened Through New Treaty\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Sports League Announces Revised Schedule for Upcoming Season\",\n \"ground_truth\": \"Sports\"\n }\n }\n ]\n },\n \"input_messages\": {\n \"type\": \"template\",\n \"template\": [\n {\n \"type\": \"message\",\n \"role\": \"developer\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"Categorize a given news headline into one of the following topics: Technology, Markets, World, Business, or Sports.\n\n# Steps\n\n1. Analyze the content of the news headline to understand its primary focus.\n2. Extract the subject matter, identifying any key indicators or keywords.\n3. Use the identified indicators to determine the most suitable category out of the five options: Technology, Markets, World, Business, or Sports.\n4. Ensure only one category is selected per headline.\n\n# Output Format\n\nRespond with the chosen category as a single word. For instance: \"Technology\", \"Markets\", \"World\", \"Business\", or \"Sports\".\n\n# Examples\n\n**Input**: \"Apple Unveils New iPhone Model, Featuring Advanced AI Features\"\n**Output**: \"Technology\"\n\n**Input**: \"Global Stocks Mixed as Investors Await Central Bank Decisions\"\n**Output**: \"Markets\"\n\n**Input**: \"War in Ukraine: Latest Updates on Negotiation Status\"\n**Output**: \"World\"\n\n**Input**: \"Microsoft in Talks to Acquire Gaming Company for $2 Billion\"\n**Output**: \"Business\"\n\n**Input**: \"Manchester United Secures Win in Premier League Football Match\"\n**Output**: \"Sports\"\n\n# Notes\n\n- If the headline appears to fit into more than one category, choose the most dominant theme.\n- Keywords or phrases such as \"stocks\", \"company acquisition\", \"match\", or technological brands can be good indicators for classification.\n\"\n }\n },\n {\n \"type\": \"message\",\n \"role\": \"user\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"{{item.input}}\"\n }\n }\n ]\n },\n \"model\": \"gpt-4o-mini\",\n \"sampling_params\": {\n \"seed\": 42,\n \"temperature\": 1.0,\n \"top_p\": 1.0,\n \"max_completions_tokens\": 2048\n }\n },\n \"error\": null,\n \"metadata\": {}\n}\n" + } }, - "DataSourceConfig": { + "EvalRunDataSource": { "type": "object", "required": [ - "type", - "schema" + "type" ], "properties": { "type": { "type": "string", "description": "The data source type discriminator." - }, - "schema": { - "type": "object", - "additionalProperties": {}, - "description": "The overall object JSON schema for the run data source items." } }, "discriminator": { "propertyName": "type", - "mapping": {} + "mapping": { + "azure_ai_traces_preview": "#/components/schemas/TracesPreviewEvalRunDataSource", + "azure_ai_synthetic_data_gen_preview": "#/components/schemas/SyntheticDataGenerationPreviewEvalRunDataSource", + "azure_ai_responses": "#/components/schemas/AzureAIResponsesEvalRunDataSource", + "azure_ai_target_completions": "#/components/schemas/TargetCompletionEvalRunDataSource", + "csv": "#/components/schemas/EvalCsvRunDataSource", + "azure_ai_red_team": "#/components/schemas/RedTeamEvalRunDataSource", + "azure_ai_benchmark_preview": "#/components/schemas/AzureAIBenchmarkPreviewEvalRunDataSource" + } }, "description": "Base class for run data sources with discriminator support." }, - "DatasetType": { - "anyOf": [ - { - "type": "string" - }, - { + "EvalRunOutputItem": { + "type": "object", + "required": [ + "object", + "id", + "run_id", + "eval_id", + "created_at", + "status", + "datasource_item_id", + "datasource_item", + "results", + "sample" + ], + "properties": { + "object": { "type": "string", "enum": [ - "uri_file", - "uri_folder" - ] + "eval.run.output_item" + ], + "description": "The type of the object. Always \"eval.run.output_item\".", + "x-stainless-const": true, + "default": "eval.run.output_item" + }, + "id": { + "type": "string", + "description": "Unique identifier for the evaluation run output item." + }, + "run_id": { + "type": "string", + "description": "The identifier of the evaluation run associated with this output item." + }, + "eval_id": { + "type": "string", + "description": "The identifier of the evaluation group." + }, + "created_at": { + "type": "integer", + "format": "unixtime", + "description": "Unix timestamp (in seconds) when the evaluation run was created." + }, + "status": { + "type": "string", + "description": "The status of the evaluation run." + }, + "datasource_item_id": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.integer" + } + ], + "description": "The identifier for the data source item." + }, + "datasource_item": { + "type": "object", + "additionalProperties": {}, + "description": "Details of the input data source item." + }, + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRunOutputItemResult" + }, + "description": "A list of grader results for this output item." + }, + "sample": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.EvalRunOutputItemSample" + } + ], + "description": "A sample containing the input and output of the evaluation run." } - ], - "description": "Enum to determine the type of data." + }, + "description": "A schema representing an evaluation run output item.", + "title": "EvalRunOutputItem", + "x-oaiMeta": { + "name": "The eval run output item object", + "group": "evals", + "example": "{\n \"object\": \"eval.run.output_item\",\n \"id\": \"outputitem_67abd55eb6548190bb580745d5644a33\",\n \"run_id\": \"evalrun_67abd54d60ec8190832b46859da808f7\",\n \"eval_id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"created_at\": 1739314509,\n \"status\": \"pass\",\n \"datasource_item_id\": 137,\n \"datasource_item\": {\n \"teacher\": \"To grade essays, I only check for style, content, and grammar.\",\n \"student\": \"I am a student who is trying to write the best essay.\"\n },\n \"results\": [\n {\n \"name\": \"String Check Grader\",\n \"type\": \"string-check-grader\",\n \"score\": 1.0,\n \"passed\": true,\n }\n ],\n \"sample\": {\n \"input\": [\n {\n \"role\": \"system\",\n \"content\": \"You are an evaluator bot...\"\n },\n {\n \"role\": \"user\",\n \"content\": \"You are assessing...\"\n }\n ],\n \"output\": [\n {\n \"role\": \"assistant\",\n \"content\": \"The rubric is not clear nor concise.\"\n }\n ],\n \"finish_reason\": \"stop\",\n \"model\": \"gpt-4o-2024-08-06\",\n \"usage\": {\n \"total_tokens\": 521,\n \"completion_tokens\": 2,\n \"prompt_tokens\": 519,\n \"cached_tokens\": 0\n },\n \"error\": null,\n \"temperature\": 1.0,\n \"max_completion_tokens\": 2048,\n \"top_p\": 1.0,\n \"seed\": 42\n }\n}\n" + } }, - "DatasetVersion": { + "EvalRunOutputItemResult": { "type": "object", "required": [ - "dataUri", - "type", "name", - "version" + "score", + "passed" ], "properties": { - "dataUri": { + "name": { "type": "string", - "minLength": 1, - "pattern": "[a-zA-Z0-9_]", - "description": "URI of the data ([example](https://go.microsoft.com/fwlink/?linkid=2202330))" + "description": "The name of the grader." }, "type": { + "type": "string", + "description": "The grader type (for example, \"string-check-grader\")." + }, + "score": { "allOf": [ { - "$ref": "#/components/schemas/DatasetType" + "$ref": "#/components/schemas/OpenAI.numeric" } ], - "description": "Dataset type" + "description": "The numeric score produced by the grader." }, - "isReference": { + "passed": { "type": "boolean", - "description": "Indicates if the dataset holds a reference to the storage, or the dataset manages storage itself. If true, the underlying data will not be deleted when the dataset version is deleted", - "readOnly": true + "description": "Whether the grader considered the output a pass." }, - "connectionName": { - "type": "string", - "description": "The Azure Storage Account connection name. Required if startPendingUploadVersion was not called before creating the Dataset" + "sample": { + "type": "object", + "additionalProperties": {}, + "nullable": true, + "description": "Optional sample or intermediate data produced by the grader." }, - "id": { + "metric": { "type": "string", - "description": "Asset ID, a unique identifier for the asset", - "readOnly": true + "description": "The name of the metric (e.g., \"fluency\", \"f1_score\")." }, - "name": { + "label": { "type": "string", - "description": "The name of the resource", - "readOnly": true + "description": "The label associated with the test criteria metric (e.g., \"pass\", \"fail\", \"good\", \"bad\")." }, - "version": { - "type": "string", - "description": "The version of the resource", - "readOnly": true - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "uri_file": "#/components/schemas/FileDatasetVersion", - "uri_folder": "#/components/schemas/FolderDatasetVersion" - } - }, - "description": "DatasetVersion Definition" - }, - "DatasetVersionUpdate": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/DatasetType" - } - ], - "description": "Dataset type" + "threshold": { + "type": "number", + "format": "float", + "description": "The threshold used to determine pass/fail for this test criteria, if it is numerical." }, - "description": { + "reason": { "type": "string", - "description": "The asset description text." + "description": "The reason for the test criteria metric." }, - "tags": { + "properties": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Tag dictionary. Tags can be added, removed, and updated." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "uri_file": "#/components/schemas/FileDatasetVersionUpdate", - "uri_folder": "#/components/schemas/FolderDatasetVersionUpdate" + "description": "Additional details about the test criteria metric." } }, - "description": "DatasetVersion Definition" + "additionalProperties": {}, + "description": "A single grader result for an evaluation run output item.", + "title": "EvalRunOutputItemResult" }, - "DayOfWeek": { - "anyOf": [ - { + "EvalRunOutputItemSampleInput": { + "type": "object", + "required": [ + "role", + "content", + "tool_calls" + ], + "properties": { + "role": { "type": "string" }, - { - "type": "string", - "enum": [ - "Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday" - ] + "content": { + "type": "string" + }, + "tool_calls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CompletionMessageToolCallChunk" + }, + "description": "Tool calls made within the message, if any." } - ], - "description": "Days of the week for recurrence schedule." + }, + "description": "A message in the evaluation run." }, - "DeleteAgentResponse": { + "EvalRunOutputItemSampleOutput": { "type": "object", "required": [ - "object", - "name", - "deleted" + "tool_calls" ], "properties": { - "object": { - "type": "string", - "enum": [ - "agent.deleted" - ], - "description": "The object type. Always 'agent.deleted'." + "role": { + "type": "string" }, - "name": { - "type": "string", - "description": "The name of the agent." + "content": { + "type": "string" }, - "deleted": { - "type": "boolean", - "description": "Whether the agent was successfully deleted." + "tool_calls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CompletionMessageToolCallChunk" + }, + "description": "Tool calls made within the message, if any." } }, - "description": "A deleted agent Object" + "description": "A message in the evaluation run." }, - "DeleteAgentVersionResponse": { + "EvalRunResultCompareItem": { "type": "object", "required": [ - "object", - "name", - "version", - "deleted" + "treatmentRunId", + "treatmentRunSummary", + "deltaEstimate", + "pValue", + "treatmentEffect" ], "properties": { - "object": { + "treatmentRunId": { "type": "string", - "enum": [ - "agent.version.deleted" + "description": "The treatment run ID." + }, + "treatmentRunSummary": { + "allOf": [ + { + "$ref": "#/components/schemas/EvalRunResultSummary" + } ], - "description": "The object type. Always 'agent.version.deleted'." + "description": "Summary statistics of the treatment run." }, - "name": { - "type": "string", - "description": "The name of the agent." + "deltaEstimate": { + "type": "number", + "format": "float", + "description": "Estimated difference between treatment and baseline." }, - "version": { - "type": "string", - "description": "The version identifier of the agent." + "pValue": { + "type": "number", + "format": "float", + "description": "P-value for the treatment effect." }, - "deleted": { - "type": "boolean", - "description": "Whether the agent was successfully deleted." + "treatmentEffect": { + "allOf": [ + { + "$ref": "#/components/schemas/TreatmentEffectType" + } + ], + "description": "Type of treatment effect." } }, - "description": "A deleted agent version Object" + "description": "Metric comparison for a treatment against the baseline." }, - "DeleteEvalResponse": { + "EvalRunResultComparison": { "type": "object", "required": [ - "object", - "eval_id", - "deleted" + "testingCriteria", + "metric", + "evaluator", + "baselineRunSummary", + "compareItems" ], "properties": { - "object": { + "testingCriteria": { "type": "string", - "enum": [ - "eval.deleted" - ], - "description": "The object type. Always 'eval.deleted'." + "description": "Name of the testing criteria." }, - "eval_id": { + "metric": { "type": "string", - "description": "id of the eval." + "description": "Metric being evaluated." }, - "deleted": { - "type": "boolean", - "description": "Whether the eval was successfully deleted." - } - }, - "description": "A deleted evaluation Object" - }, - "DeleteEvalRunResponse": { - "type": "object", - "properties": { - "object": { + "evaluator": { "type": "string", - "enum": [ - "eval.deleted" - ], - "description": "The object type. Always 'eval.deleted'." + "description": "Name of the evaluator for this testing criteria." }, - "run_id": { - "type": "string", - "description": "id of the eval." + "baselineRunSummary": { + "allOf": [ + { + "$ref": "#/components/schemas/EvalRunResultSummary" + } + ], + "description": "Summary statistics of the baseline run." }, - "deleted": { - "type": "boolean", - "description": "Whether the eval was successfully deleted." + "compareItems": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRunResultCompareItem" + }, + "description": "List of comparison results for each treatment run." } }, - "description": "A deleted evaluation run Object." + "description": "Comparison results for treatment runs against the baseline." }, - "DeleteMemoryStoreResponse": { + "EvalRunResultSummary": { "type": "object", "required": [ - "object", - "name", - "deleted" + "runId", + "sampleCount", + "average", + "standardDeviation" ], "properties": { - "object": { + "runId": { "type": "string", - "enum": [ - "memory_store.deleted" - ], - "description": "The object type. Always 'memory_store.deleted'." + "description": "The evaluation run ID." }, - "name": { - "type": "string", - "description": "The name of the memory store." + "sampleCount": { + "type": "integer", + "format": "int32", + "description": "Number of samples in the evaluation run." }, - "deleted": { - "type": "boolean", - "description": "Whether the memory store was successfully deleted." + "average": { + "type": "number", + "format": "float", + "description": "Average value of the metric in the evaluation run." + }, + "standardDeviation": { + "type": "number", + "format": "float", + "description": "Standard deviation of the metric in the evaluation run." } }, - "x-ms-foundry-meta": { - "conditional_previews": [ - "MemoryStores=V1Preview" - ] - } + "description": "Summary statistics of a metric in an evaluation run." }, - "DeleteResponseResult": { + "Evaluation": { "type": "object", "required": [ "id", - "object", - "deleted" + "data", + "evaluators" ], "properties": { "id": { "type": "string", - "description": "The operation ID." - }, - "object": { - "type": "string", - "enum": [ - "response" - ], - "description": "Always return 'response'." + "description": "Identifier of the evaluation.", + "readOnly": true }, - "deleted": { - "type": "boolean", - "enum": [ - true - ], - "description": "Always return true" - } - }, - "description": "The result of a delete response operation." - }, - "DeleteSkillResponse": { - "type": "object", - "required": [ - "object", - "name", - "deleted" - ], - "properties": { - "object": { + "data": { "allOf": [ { - "$ref": "#/components/schemas/SkillObjectType" + "$ref": "#/components/schemas/InputData" } ], - "description": "The object type. Always 'skill.deleted'.", - "default": "skill.deleted" + "description": "Data for evaluation." }, - "name": { + "displayName": { "type": "string", - "description": "The unique name of the skill." + "description": "Display Name for evaluation. It helps to find the evaluation easily in AI Foundry. It does not need to be unique." }, - "deleted": { - "type": "boolean", - "description": "Whether the skill was successfully deleted." - } - }, - "description": "A deleted skill Object" - }, - "DeleteToolsetResponse": { - "type": "object", - "required": [ - "object", - "name", - "deleted" - ], - "properties": { - "object": { + "description": { "type": "string", - "enum": [ - "toolset.deleted" - ], - "description": "The object type. Always 'toolset.deleted'." + "description": "Description of the evaluation. It can be used to store additional information about the evaluation and is mutable." }, - "name": { + "status": { "type": "string", - "description": "The name of the toolset." + "description": "Status of the evaluation. It is set by service and is read-only.", + "readOnly": true }, - "deleted": { - "type": "boolean", - "description": "Whether the toolset was successfully deleted." - } - }, - "description": "Response returned when a toolset is deleted." - }, - "Deployment": { - "type": "object", - "required": [ - "type", - "name" - ], - "properties": { - "type": { + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Evaluation's tags. Unlike properties, tags are fully mutable." + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Evaluation's properties. Unlike tags, properties are add-only. Once added, a property cannot be removed." + }, + "evaluators": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/EvaluatorConfiguration" + }, + "description": "Evaluators to be used for the evaluation." + }, + "target": { "allOf": [ { - "$ref": "#/components/schemas/DeploymentType" + "$ref": "#/components/schemas/EvaluationTarget" } ], - "description": "The type of the deployment" - }, - "name": { - "type": "string", - "description": "Name of the deployment", - "readOnly": true - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "ModelDeployment": "#/components/schemas/ModelDeployment" + "description": "Specifies the type and configuration of the entity used for this evaluation." } }, - "description": "Model Deployment Definition" - }, - "DeploymentType": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "ModelDeployment" - ] - } - ] + "description": "Evaluation Definition" }, - "DeveloperMessage": { + "EvaluationComparisonInsightRequest": { "type": "object", "required": [ - "role", - "content" + "type", + "evalId", + "baselineRunId", + "treatmentRunIds" ], "properties": { - "role": { + "type": { "type": "string", "enum": [ - "developer" + "EvaluationComparison" ], - "description": "Indicates this is a developer message." + "description": "The type of request." }, - "content": { + "evalId": { "type": "string", - "description": "Content provided by a developer to guide model behavior in an evaluation context." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/Message" - } - ], - "description": "A message authored by a developer to guide the model during evaluation." - }, - "EntraAuthorizationScheme": { - "type": "object", - "required": [ - "type", - "isolation_key_source" - ], - "properties": { - "type": { + "description": "Identifier for the evaluation." + }, + "baselineRunId": { "type": "string", - "enum": [ - "Entra" - ] + "description": "The baseline run ID for comparison." }, - "isolation_key_source": { - "$ref": "#/components/schemas/IsolationKeySource" + "treatmentRunIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of treatment run IDs for comparison." } }, "allOf": [ { - "$ref": "#/components/schemas/AgentEndpointAuthorizationScheme" + "$ref": "#/components/schemas/InsightRequest" } ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "Evaluation Comparison Request" }, - "EntraIDCredentials": { + "EvaluationComparisonInsightResult": { "type": "object", "required": [ - "type" + "type", + "comparisons", + "method" ], "properties": { "type": { "type": "string", "enum": [ - "AAD" + "EvaluationComparison" ], - "description": "The credential type", - "readOnly": true + "description": "The type of insights result." + }, + "comparisons": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvalRunResultComparison" + }, + "description": "Comparison results for each treatment run against the baseline." + }, + "method": { + "type": "string", + "description": "The statistical method used for comparison." } }, "allOf": [ { - "$ref": "#/components/schemas/BaseCredentials" + "$ref": "#/components/schemas/InsightResult" } ], - "description": "Entra ID credential definition" + "description": "Insights from the evaluation comparison." }, - "EntraIsolationKeySource": { + "EvaluationResultSample": { "type": "object", "required": [ - "kind" + "type", + "evaluationResult" ], "properties": { - "kind": { + "type": { "type": "string", "enum": [ - "Entra" - ] + "EvaluationResultSample" + ], + "description": "Evaluation Result Sample Type" + }, + "evaluationResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EvalResult" + } + ], + "description": "Evaluation result for the analysis sample." } }, "allOf": [ { - "$ref": "#/components/schemas/IsolationKeySource" + "$ref": "#/components/schemas/InsightSample" } ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "A sample from the evaluation result." }, - "Eval": { + "EvaluationRule": { "type": "object", "required": [ - "object", "id", - "name", - "data_source_config", - "testing_criteria", - "created_at", - "metadata" + "action", + "eventType", + "enabled", + "systemData" ], "properties": { - "object": { + "id": { "type": "string", - "enum": [ - "eval" - ], - "description": "The object type.", - "x-stainless-const": true, - "default": "eval" + "description": "Unique identifier for the evaluation rule.", + "readOnly": true }, - "id": { + "displayName": { "type": "string", - "description": "Unique identifier for the evaluation." + "description": "Display Name for the evaluation rule." }, - "name": { + "description": { "type": "string", - "description": "The name of the evaluation." + "description": "Description for the evaluation rule." }, - "data_source_config": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.CreateEvalCustomDataSourceConfig" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalLogsDataSourceConfig" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalStoredCompletionsDataSourceConfig" - }, - { - "$ref": "#/components/schemas/AzureAIDataSourceConfig" - }, + "action": { + "allOf": [ { - "$ref": "#/components/schemas/AzureAIBenchmarkDataSourceConfig" + "$ref": "#/components/schemas/EvaluationRuleAction" } ], - "description": "Configuration of data sources used in runs of the evaluation." - }, - "testing_criteria": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/OpenAI.EvalGraderLabelModel" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderStringCheck" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderTextSimilarity" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderPython" - }, - { - "$ref": "#/components/schemas/OpenAI.EvalGraderScoreModel" - }, - { - "$ref": "#/components/schemas/EvalGraderAzureAIEvaluator" - }, - { - "$ref": "#/components/schemas/EvalGraderInspectAI" - } + "description": "Definition of the evaluation rule action.", + "x-ms-foundry-meta": { + "conditional_previews": [ + "Evaluations=V1Preview" ] - }, - "description": "A list of testing criteria." - }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "The Unix timestamp (in seconds) for when the eval was created." + } }, - "metadata": { - "type": "object", + "filter": { "allOf": [ { - "$ref": "#/components/schemas/OpenAI.Metadata" + "$ref": "#/components/schemas/EvaluationRuleFilter" } ], - "nullable": true + "description": "Filter condition of the evaluation rule." }, - "modified_at": { + "eventType": { "allOf": [ { - "$ref": "#/components/schemas/integer" + "$ref": "#/components/schemas/EvaluationRuleEventType" } ], - "description": "Unix timestamp (in seconds) when the evaluation run was last modified." + "description": "Event type that the evaluation rule applies to." }, - "created_by": { - "type": "string", - "description": "the name of the person who created the run." + "enabled": { + "type": "boolean", + "description": "Indicates whether the evaluation rule is enabled. Default is true." }, - "properties": { + "systemData": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." + "description": "System metadata for the evaluation rule.", + "readOnly": true } }, - "description": "An Eval object with a data source config and testing criteria.\nAn Eval represents a task to be done for your LLM integration.\nLike:\n- Improve the quality of my chatbot\n- See how well my chatbot handles customer support\n- Check if o4-mini is better at my usecase than gpt-4o", - "title": "Eval", - "x-oaiMeta": { - "name": "The eval object", - "group": "evals", - "example": "{\n \"object\": \"eval\",\n \"id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"data_source_config\": {\n \"type\": \"custom\",\n \"item_schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"label\": {\"type\": \"string\"},\n },\n \"required\": [\"label\"]\n },\n \"include_sample_schema\": true\n },\n \"testing_criteria\": [\n {\n \"name\": \"My string check grader\",\n \"type\": \"string_check\",\n \"input\": \"{{sample.output_text}}\",\n \"reference\": \"{{item.label}}\",\n \"operation\": \"eq\",\n }\n ],\n \"name\": \"External Data Eval\",\n \"created_at\": 1739314509,\n \"metadata\": {\n \"test\": \"synthetics\",\n }\n}\n" - } + "description": "Evaluation rule model." }, - "EvalCsvFileIdSource": { + "EvaluationRuleAction": { "type": "object", "required": [ - "type", - "id" + "type" ], "properties": { "type": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleActionType" + } + ], + "description": "Type of the evaluation action." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "continuousEvaluation": "#/components/schemas/ContinuousEvaluationRuleAction", + "humanEvaluation": "#/components/schemas/HumanEvaluationRuleAction", + "humanEvaluationPreview": "#/components/schemas/HumanEvaluationPreviewRuleAction" + } + }, + "description": "Evaluation action model." + }, + "EvaluationRuleActionType": { + "anyOf": [ + { + "type": "string" + }, + { "type": "string", "enum": [ - "file_id" - ], - "description": "The type of source, always `file_id`." + "continuousEvaluation", + "humanEvaluation", + "humanEvaluationPreview" + ] + } + ], + "description": "Type of the evaluation action." + }, + "EvaluationRuleEventType": { + "anyOf": [ + { + "type": "string" }, - "id": { + { "type": "string", - "description": "The identifier of the uploaded CSV file." + "enum": [ + "responseCompleted", + "manual" + ] + } + ], + "description": "Type of the evaluation rule event." + }, + "EvaluationRuleFilter": { + "type": "object", + "required": [ + "agentName" + ], + "properties": { + "agentName": { + "type": "string", + "description": "Filter by agent name." } }, - "description": "Represents a reference to an uploaded CSV file used as a source for evaluation data." + "description": "Evaluation filter model." }, - "EvalCsvRunDataSource": { + "EvaluationRunClusterInsightRequest": { "type": "object", "required": [ "type", - "source" + "evalId", + "runIds" ], "properties": { "type": { "type": "string", "enum": [ - "csv" + "EvaluationRunClusterInsight" ], - "description": "The type of data source, always `csv`." + "description": "The type of insights request." }, - "source": { + "evalId": { + "type": "string", + "description": "Evaluation Id for the insights." + }, + "runIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of evaluation run IDs for the insights." + }, + "modelConfiguration": { "allOf": [ { - "$ref": "#/components/schemas/EvalCsvFileIdSource" + "$ref": "#/components/schemas/InsightModelConfiguration" } ], - "description": "The source of the CSV data, either inline content or a file reference." + "description": "Configuration of the model used in the insight generation." } }, "allOf": [ { - "$ref": "#/components/schemas/EvalRunDataSource" + "$ref": "#/components/schemas/InsightRequest" } ], - "description": "Represents a CSV data source for evaluation runs." + "description": "Insights on set of Evaluation Results" }, - "EvalGraderAzureAIEvaluator": { + "EvaluationRunClusterInsightResult": { "type": "object", "required": [ "type", - "name", - "evaluator_name" + "clusterInsight" ], "properties": { "type": { "type": "string", "enum": [ - "azure_ai_evaluator" + "EvaluationRunClusterInsight" ], - "description": "The object type, which is always `azure_ai_evaluator`." - }, - "name": { - "type": "string", - "description": "The name of the grader." - }, - "evaluator_name": { - "type": "string", - "description": "The name of the evaluator." - }, - "evaluator_version": { - "type": "string", - "description": "The version of the evaluator. Latest version if not specified." - }, - "initialization_parameters": { - "type": "object", - "additionalProperties": {}, - "description": "The initialization parameters for the evaluation. Must support structured outputs." + "description": "The type of insights result." }, - "data_mapping": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "The model to use for the evaluation. Must support structured outputs." + "clusterInsight": { + "$ref": "#/components/schemas/ClusterInsightResult" } }, - "title": "AzureAIEvaluatorGrader" + "allOf": [ + { + "$ref": "#/components/schemas/InsightResult" + } + ], + "description": "Insights from the evaluation run cluster analysis." }, - "EvalGraderInspectAI": { + "EvaluationScheduleTask": { "type": "object", "required": [ "type", - "name", - "task_name" + "evalId", + "evalRun" ], "properties": { "type": { "type": "string", "enum": [ - "inspect_ai" - ], - "description": "The object type, which is always `inspect_ai`." + "Evaluation" + ] }, - "name": { + "evalId": { "type": "string", - "description": "The display name of the benchmark." + "description": "Identifier of the evaluation group." }, - "task_name": { - "type": "string", - "description": "The inspect_ai task module path (e.g., `inspect_evals/gpqa_diamond`)." + "evalRun": { + "type": "object", + "description": "The evaluation run payload." } }, - "description": "Grader inspect_ai definition for inspect_ai benchmark evaluators." + "allOf": [ + { + "$ref": "#/components/schemas/ScheduleTask" + } + ], + "description": "Evaluation task for the schedule." }, - "EvalResult": { + "EvaluationTarget": { "type": "object", "required": [ - "name", - "type", - "score", - "passed" + "type" ], "properties": { - "name": { - "type": "string", - "description": "name of the check" - }, "type": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationTargetType" + } + ], + "description": "Discriminator that defines the type of the evaluation target." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "modelResponseGeneration": "#/components/schemas/modelResponseGenerationTarget" + } + }, + "description": "Abstract base model for defining evaluation targets." + }, + "EvaluationTargetType": { + "anyOf": [ + { "type": "string", - "description": "type of the check" - }, - "score": { - "type": "number", - "format": "float", - "description": "score" + "enum": [ + "modelResponseGeneration" + ] }, - "passed": { - "type": "boolean", - "description": "indicates if the check passed or failed" + { + "type": "string" } - }, - "description": "Result of the evaluation." + ], + "description": "Allowed types of evaluation targets." }, - "EvalRun": { + "EvaluationTaxonomy": { "type": "object", "required": [ - "object", - "id", - "eval_id", - "status", - "model", "name", - "created_at", - "report_url", - "result_counts", - "per_model_usage", - "per_testing_criteria_results", - "data_source", - "metadata", - "error" + "version", + "taxonomyInput" ], "properties": { - "object": { - "type": "string", - "enum": [ - "eval.run" - ], - "description": "The type of the object. Always \"eval.run\".", - "x-stainless-const": true, - "default": "eval.run" - }, "id": { "type": "string", - "description": "Unique identifier for the evaluation run." - }, - "eval_id": { - "type": "string", - "description": "The identifier of the associated evaluation." - }, - "status": { - "type": "string", - "description": "The status of the evaluation run." - }, - "model": { - "type": "string", - "description": "The model that is evaluated, if applicable." + "description": "Asset ID, a unique identifier for the asset", + "readOnly": true }, "name": { "type": "string", - "description": "The name of the evaluation run." - }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "Unix timestamp (in seconds) when the evaluation run was created." + "description": "The name of the resource", + "readOnly": true }, - "report_url": { + "version": { "type": "string", - "format": "uri", - "description": "The URL to the rendered evaluation run report on the UI dashboard." + "description": "The version of the resource", + "readOnly": true }, - "result_counts": { + "taxonomyInput": { "allOf": [ { - "$ref": "#/components/schemas/OpenAI.EvalRunResultCounts" + "$ref": "#/components/schemas/EvaluationTaxonomyInput" } ], - "description": "Counters summarizing the outcomes of the evaluation run." - }, - "per_model_usage": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.EvalRunPerModelUsage" - }, - "description": "Usage statistics for each model during the evaluation run." + "description": "Input configuration for the evaluation taxonomy." }, - "per_testing_criteria_results": { + "taxonomyCategories": { "type": "array", "items": { - "$ref": "#/components/schemas/OpenAI.EvalRunPerTestingCriteriaResults" + "$ref": "#/components/schemas/TaxonomyCategory" }, - "description": "Results per testing criteria applied during the evaluation run." - }, - "data_source": { - "oneOf": [ - { - "$ref": "#/components/schemas/OpenAI.CreateEvalJsonlRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalCompletionsRunDataSource" - }, - { - "$ref": "#/components/schemas/OpenAI.CreateEvalResponsesRunDataSource" - }, - { - "$ref": "#/components/schemas/EvalRunDataSource" - } - ], - "description": "Information about the run's data source." + "description": "List of taxonomy categories." }, - "metadata": { + "properties": { "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.Metadata" - } - ], - "nullable": true + "additionalProperties": { + "type": "string" + }, + "description": "Additional properties for the evaluation taxonomy." + } + }, + "description": "Evaluation Taxonomy Definition" + }, + "EvaluationTaxonomyCreateOrUpdate": { + "type": "object", + "required": [ + "taxonomyInput" + ], + "properties": { + "description": { + "type": "string", + "description": "The asset description text." }, - "error": { - "$ref": "#/components/schemas/OpenAI.EvalApiError" + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." }, - "modified_at": { + "taxonomyInput": { "allOf": [ { - "$ref": "#/components/schemas/integer" + "$ref": "#/components/schemas/EvaluationTaxonomyInput" } ], - "description": "Unix timestamp (in seconds) when the evaluation run was last modified." + "description": "Input configuration for the evaluation taxonomy." }, - "created_by": { - "type": "string", - "description": "the name of the person who created the run." + "taxonomyCategories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TaxonomyCategory" + }, + "description": "List of taxonomy categories." }, "properties": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Set of immutable 16 key-value pairs that can be attached to an object for storing additional information.\n Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters." + "description": "Additional properties for the evaluation taxonomy." } }, - "description": "A schema representing an evaluation run.", - "title": "EvalRun", - "x-oaiMeta": { - "name": "The eval run object", - "group": "evals", - "example": "{\n \"object\": \"eval.run\",\n \"id\": \"evalrun_67e57965b480819094274e3a32235e4c\",\n \"eval_id\": \"eval_67e579652b548190aaa83ada4b125f47\",\n \"report_url\": \"https://platform.openai.com/evaluations/eval_67e579652b548190aaa83ada4b125f47?run_id=evalrun_67e57965b480819094274e3a32235e4c\",\n \"status\": \"queued\",\n \"model\": \"gpt-4o-mini\",\n \"name\": \"gpt-4o-mini\",\n \"created_at\": 1743092069,\n \"result_counts\": {\n \"total\": 0,\n \"errored\": 0,\n \"failed\": 0,\n \"passed\": 0\n },\n \"per_model_usage\": null,\n \"per_testing_criteria_results\": null,\n \"data_source\": {\n \"type\": \"completions\",\n \"source\": {\n \"type\": \"file_content\",\n \"content\": [\n {\n \"item\": {\n \"input\": \"Tech Company Launches Advanced Artificial Intelligence Platform\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Central Bank Increases Interest Rates Amid Inflation Concerns\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Summit Addresses Climate Change Strategies\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Major Retailer Reports Record-Breaking Holiday Sales\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"National Team Qualifies for World Championship Finals\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Stock Markets Rally After Positive Economic Data Released\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Manufacturer Announces Merger with Competitor\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Breakthrough in Renewable Energy Technology Unveiled\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"World Leaders Sign Historic Climate Agreement\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Professional Athlete Sets New Record in Championship Event\",\n \"ground_truth\": \"Sports\"\n }\n },\n {\n \"item\": {\n \"input\": \"Financial Institutions Adapt to New Regulatory Requirements\",\n \"ground_truth\": \"Business\"\n }\n },\n {\n \"item\": {\n \"input\": \"Tech Conference Showcases Advances in Artificial Intelligence\",\n \"ground_truth\": \"Technology\"\n }\n },\n {\n \"item\": {\n \"input\": \"Global Markets Respond to Oil Price Fluctuations\",\n \"ground_truth\": \"Markets\"\n }\n },\n {\n \"item\": {\n \"input\": \"International Cooperation Strengthened Through New Treaty\",\n \"ground_truth\": \"World\"\n }\n },\n {\n \"item\": {\n \"input\": \"Sports League Announces Revised Schedule for Upcoming Season\",\n \"ground_truth\": \"Sports\"\n }\n }\n ]\n },\n \"input_messages\": {\n \"type\": \"template\",\n \"template\": [\n {\n \"type\": \"message\",\n \"role\": \"developer\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"Categorize a given news headline into one of the following topics: Technology, Markets, World, Business, or Sports.\n\n# Steps\n\n1. Analyze the content of the news headline to understand its primary focus.\n2. Extract the subject matter, identifying any key indicators or keywords.\n3. Use the identified indicators to determine the most suitable category out of the five options: Technology, Markets, World, Business, or Sports.\n4. Ensure only one category is selected per headline.\n\n# Output Format\n\nRespond with the chosen category as a single word. For instance: \"Technology\", \"Markets\", \"World\", \"Business\", or \"Sports\".\n\n# Examples\n\n**Input**: \"Apple Unveils New iPhone Model, Featuring Advanced AI Features\"\n**Output**: \"Technology\"\n\n**Input**: \"Global Stocks Mixed as Investors Await Central Bank Decisions\"\n**Output**: \"Markets\"\n\n**Input**: \"War in Ukraine: Latest Updates on Negotiation Status\"\n**Output**: \"World\"\n\n**Input**: \"Microsoft in Talks to Acquire Gaming Company for $2 Billion\"\n**Output**: \"Business\"\n\n**Input**: \"Manchester United Secures Win in Premier League Football Match\"\n**Output**: \"Sports\"\n\n# Notes\n\n- If the headline appears to fit into more than one category, choose the most dominant theme.\n- Keywords or phrases such as \"stocks\", \"company acquisition\", \"match\", or technological brands can be good indicators for classification.\n\"\n }\n },\n {\n \"type\": \"message\",\n \"role\": \"user\",\n \"content\": {\n \"type\": \"input_text\",\n \"text\": \"{{item.input}}\"\n }\n }\n ]\n },\n \"model\": \"gpt-4o-mini\",\n \"sampling_params\": {\n \"seed\": 42,\n \"temperature\": 1.0,\n \"top_p\": 1.0,\n \"max_completions_tokens\": 2048\n }\n },\n \"error\": null,\n \"metadata\": {}\n}\n" - } + "description": "Evaluation Taxonomy Definition" }, - "EvalRunDataSource": { + "EvaluationTaxonomyInput": { "type": "object", "required": [ "type" ], "properties": { "type": { - "type": "string", - "description": "The data source type discriminator." + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationTaxonomyInputType" + } + ], + "description": "Input type of the evaluation taxonomy." } }, "discriminator": { "propertyName": "type", "mapping": { - "azure_ai_traces_preview": "#/components/schemas/TracesPreviewEvalRunDataSource", - "azure_ai_synthetic_data_gen_preview": "#/components/schemas/SyntheticDataGenerationPreviewEvalRunDataSource", - "azure_ai_responses": "#/components/schemas/AzureAIResponsesEvalRunDataSource", - "azure_ai_target_completions": "#/components/schemas/TargetCompletionEvalRunDataSource", - "csv": "#/components/schemas/EvalCsvRunDataSource", - "azure_ai_red_team": "#/components/schemas/RedTeamEvalRunDataSource", - "azure_ai_benchmark_preview": "#/components/schemas/AzureAIBenchmarkPreviewEvalRunDataSource" + "agent": "#/components/schemas/AgentTaxonomyInput" } }, - "description": "Base class for run data sources with discriminator support." + "description": "Input configuration for the evaluation taxonomy." }, - "EvalRunOutputItem": { + "EvaluationTaxonomyInputType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "agent", + "policy" + ] + } + ], + "description": "Type of the evaluation taxonomy input." + }, + "EvaluationTaxonomyInputUpdate": { "type": "object", "required": [ - "object", - "id", - "run_id", - "eval_id", - "created_at", - "status", - "datasource_item_id", - "datasource_item", - "results", - "sample" + "type" ], "properties": { - "object": { - "type": "string", - "enum": [ - "eval.run.output_item" + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationTaxonomyInputType" + } ], - "description": "The type of the object. Always \"eval.run.output_item\".", - "x-stainless-const": true, - "default": "eval.run.output_item" - }, - "id": { - "type": "string", - "description": "Unique identifier for the evaluation run output item." - }, - "run_id": { - "type": "string", - "description": "The identifier of the evaluation run associated with this output item." - }, - "eval_id": { + "description": "Input type of the evaluation taxonomy." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "agent": "#/components/schemas/AgentTaxonomyInputUpdate" + } + }, + "description": "Input configuration for the evaluation taxonomy." + }, + "EvaluationTaxonomyUpdate": { + "type": "object", + "properties": { + "description": { "type": "string", - "description": "The identifier of the evaluation group." - }, - "created_at": { - "type": "integer", - "format": "unixtime", - "description": "Unix timestamp (in seconds) when the evaluation run was created." + "description": "The asset description text." }, - "status": { - "type": "string", - "description": "The status of the evaluation run." + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." }, - "datasource_item_id": { + "taxonomyInput": { "allOf": [ { - "$ref": "#/components/schemas/OpenAI.integer" + "$ref": "#/components/schemas/EvaluationTaxonomyInputUpdate" } ], - "description": "The identifier for the data source item." - }, - "datasource_item": { - "type": "object", - "additionalProperties": {}, - "description": "Details of the input data source item." + "description": "Input configuration for the evaluation taxonomy." }, - "results": { + "taxonomyCategories": { "type": "array", "items": { - "$ref": "#/components/schemas/EvalRunOutputItemResult" + "$ref": "#/components/schemas/TaxonomyCategory" }, - "description": "A list of grader results for this output item." + "description": "List of taxonomy categories." }, - "sample": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.EvalRunOutputItemSample" - } - ], - "description": "A sample containing the input and output of the evaluation run." + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional properties for the evaluation taxonomy." } }, - "description": "A schema representing an evaluation run output item.", - "title": "EvalRunOutputItem", - "x-oaiMeta": { - "name": "The eval run output item object", - "group": "evals", - "example": "{\n \"object\": \"eval.run.output_item\",\n \"id\": \"outputitem_67abd55eb6548190bb580745d5644a33\",\n \"run_id\": \"evalrun_67abd54d60ec8190832b46859da808f7\",\n \"eval_id\": \"eval_67abd54d9b0081909a86353f6fb9317a\",\n \"created_at\": 1739314509,\n \"status\": \"pass\",\n \"datasource_item_id\": 137,\n \"datasource_item\": {\n \"teacher\": \"To grade essays, I only check for style, content, and grammar.\",\n \"student\": \"I am a student who is trying to write the best essay.\"\n },\n \"results\": [\n {\n \"name\": \"String Check Grader\",\n \"type\": \"string-check-grader\",\n \"score\": 1.0,\n \"passed\": true,\n }\n ],\n \"sample\": {\n \"input\": [\n {\n \"role\": \"system\",\n \"content\": \"You are an evaluator bot...\"\n },\n {\n \"role\": \"user\",\n \"content\": \"You are assessing...\"\n }\n ],\n \"output\": [\n {\n \"role\": \"assistant\",\n \"content\": \"The rubric is not clear nor concise.\"\n }\n ],\n \"finish_reason\": \"stop\",\n \"model\": \"gpt-4o-2024-08-06\",\n \"usage\": {\n \"total_tokens\": 521,\n \"completion_tokens\": 2,\n \"prompt_tokens\": 519,\n \"cached_tokens\": 0\n },\n \"error\": null,\n \"temperature\": 1.0,\n \"max_completion_tokens\": 2048,\n \"top_p\": 1.0,\n \"seed\": 42\n }\n}\n" - } + "description": "Evaluation Taxonomy Definition" }, - "EvalRunOutputItemResult": { + "EvaluatorCategory": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "quality", + "safety", + "agents" + ] + } + ], + "description": "The category of the evaluator" + }, + "EvaluatorConfiguration": { "type": "object", "required": [ - "name", - "score", - "passed" + "id" ], "properties": { - "name": { - "type": "string", - "description": "The name of the grader." - }, - "type": { + "id": { "type": "string", - "description": "The grader type (for example, \"string-check-grader\")." - }, - "score": { - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.numeric" - } - ], - "description": "The numeric score produced by the grader." - }, - "passed": { - "type": "boolean", - "description": "Whether the grader considered the output a pass." + "description": "Identifier of the evaluator." }, - "sample": { + "initParams": { "type": "object", "additionalProperties": {}, - "nullable": true, - "description": "Optional sample or intermediate data produced by the grader." - }, - "metric": { - "type": "string", - "description": "The name of the metric (e.g., \"fluency\", \"f1_score\")." - }, - "label": { - "type": "string", - "description": "The label associated with the test criteria metric (e.g., \"pass\", \"fail\", \"good\", \"bad\")." - }, - "threshold": { - "type": "number", - "format": "float", - "description": "The threshold used to determine pass/fail for this test criteria, if it is numerical." - }, - "reason": { - "type": "string", - "description": "The reason for the test criteria metric." + "description": "Initialization parameters of the evaluator." }, - "properties": { + "dataMapping": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Additional details about the test criteria metric." + "description": "Data parameters of the evaluator." } }, - "additionalProperties": {}, - "description": "A single grader result for an evaluation run output item.", - "title": "EvalRunOutputItemResult" + "description": "Evaluator Configuration" }, - "EvalRunOutputItemSampleInput": { + "EvaluatorCredentialRequest": { "type": "object", "required": [ - "role", - "content", - "tool_calls" + "blobUri" ], "properties": { - "role": { - "type": "string" - }, - "content": { - "type": "string" - }, - "tool_calls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CompletionMessageToolCallChunk" - }, - "description": "Tool calls made within the message, if any." + "blobUri": { + "type": "string", + "format": "uri", + "description": "The blob URI for the evaluator storage. Example: `https://account.blob.core.windows.net:443/container`" } }, - "description": "A message in the evaluation run." + "description": "Request body for getting evaluator credentials" }, - "EvalRunOutputItemSampleOutput": { + "EvaluatorDefinition": { "type": "object", "required": [ - "tool_calls" + "type" ], "properties": { - "role": { - "type": "string" + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluatorDefinitionType" + } + ], + "description": "The type of evaluator definition" }, - "content": { - "type": "string" + "init_parameters": { + "type": "object", + "additionalProperties": {}, + "description": "The JSON schema (Draft 2020-12) for the evaluator's input parameters. This includes parameters like type, properties, required." }, - "tool_calls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CompletionMessageToolCallChunk" + "data_schema": { + "type": "object", + "additionalProperties": {}, + "description": "The JSON schema (Draft 2020-12) for the evaluator's input data. This includes parameters like type, properties, required." + }, + "metrics": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/EvaluatorMetric" }, - "description": "Tool calls made within the message, if any." + "description": "List of output metrics produced by this evaluator" } }, - "description": "A message in the evaluation run." + "discriminator": { + "propertyName": "type", + "mapping": { + "code": "#/components/schemas/CodeBasedEvaluatorDefinition", + "prompt": "#/components/schemas/PromptBasedEvaluatorDefinition" + } + }, + "description": "Base evaluator configuration with discriminator" }, - "EvalRunResultCompareItem": { - "type": "object", - "required": [ - "treatmentRunId", - "treatmentRunSummary", - "deltaEstimate", - "pValue", - "treatmentEffect" + "EvaluatorDefinitionType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "prompt", + "code", + "prompt_and_code", + "service", + "openai_graders" + ] + } ], + "description": "The type of evaluator definition" + }, + "EvaluatorMetric": { + "type": "object", "properties": { - "treatmentRunId": { - "type": "string", - "description": "The treatment run ID." + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluatorMetricType" + } + ], + "description": "Type of the metric." }, - "treatmentRunSummary": { + "desirable_direction": { "allOf": [ { - "$ref": "#/components/schemas/EvalRunResultSummary" + "$ref": "#/components/schemas/EvaluatorMetricDirection" } ], - "description": "Summary statistics of the treatment run." + "description": "It indicates whether a higher value is better or a lower value is better for this metric." }, - "deltaEstimate": { + "min_value": { "type": "number", "format": "float", - "description": "Estimated difference between treatment and baseline." + "description": "Minimum value for the metric" }, - "pValue": { + "max_value": { "type": "number", "format": "float", - "description": "P-value for the treatment effect." + "description": "Maximum value for the metric. If not specified, it is assumed to be unbounded." }, - "treatmentEffect": { - "allOf": [ - { - "$ref": "#/components/schemas/TreatmentEffectType" - } - ], - "description": "Type of treatment effect." + "threshold": { + "type": "number", + "format": "float", + "description": "Default pass/fail threshold for this metric." + }, + "is_primary": { + "type": "boolean", + "description": "Indicates if this metric is primary when there are multiple metrics." } }, - "description": "Metric comparison for a treatment against the baseline." + "description": "Evaluator Metric" }, - "EvalRunResultComparison": { + "EvaluatorMetricDirection": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "increase", + "decrease", + "neutral" + ] + } + ], + "description": "The direction of the metric indicating whether a higher value is better, a lower value is better, or neutral" + }, + "EvaluatorMetricType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "ordinal", + "continuous", + "boolean" + ] + } + ], + "description": "The type of the evaluator" + }, + "EvaluatorType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "builtin", + "custom" + ] + } + ], + "description": "The type of the evaluator" + }, + "EvaluatorVersion": { "type": "object", "required": [ - "testingCriteria", - "metric", - "evaluator", - "baselineRunSummary", - "compareItems" + "evaluator_type", + "categories", + "definition", + "created_by", + "created_at", + "modified_at", + "name", + "version" ], "properties": { - "testingCriteria": { - "type": "string", - "description": "Name of the testing criteria." - }, - "metric": { + "display_name": { "type": "string", - "description": "Metric being evaluated." + "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." }, - "evaluator": { - "type": "string", - "description": "Name of the evaluator for this testing criteria." + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Metadata about the evaluator" }, - "baselineRunSummary": { + "evaluator_type": { "allOf": [ { - "$ref": "#/components/schemas/EvalRunResultSummary" + "$ref": "#/components/schemas/EvaluatorType" } ], - "description": "Summary statistics of the baseline run." + "description": "The type of the evaluator" }, - "compareItems": { + "categories": { "type": "array", "items": { - "$ref": "#/components/schemas/EvalRunResultCompareItem" + "$ref": "#/components/schemas/EvaluatorCategory" }, - "description": "List of comparison results for each treatment run." - } - }, - "description": "Comparison results for treatment runs against the baseline." - }, - "EvalRunResultSummary": { - "type": "object", - "required": [ - "runId", - "sampleCount", - "average", - "standardDeviation" - ], - "properties": { - "runId": { + "description": "The categories of the evaluator" + }, + "definition": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluatorDefinition" + } + ], + "description": "Definition of the evaluator" + }, + "created_by": { "type": "string", - "description": "The evaluation run ID." + "description": "Creator of the evaluator", + "readOnly": true }, - "sampleCount": { - "type": "integer", - "format": "int32", - "description": "Number of samples in the evaluation run." + "created_at": { + "type": "string", + "description": "Creation date/time of the evaluator", + "readOnly": true + }, + "modified_at": { + "type": "string", + "description": "Last modified date/time of the evaluator", + "readOnly": true }, - "average": { - "type": "number", - "format": "float", - "description": "Average value of the metric in the evaluation run." + "id": { + "type": "string", + "description": "Asset ID, a unique identifier for the asset", + "readOnly": true }, - "standardDeviation": { - "type": "number", - "format": "float", - "description": "Standard deviation of the metric in the evaluation run." + "name": { + "type": "string", + "description": "The name of the resource", + "readOnly": true + }, + "version": { + "type": "string", + "description": "The version of the resource", + "readOnly": true } }, - "description": "Summary statistics of a metric in an evaluation run." + "description": "Evaluator Definition" }, - "Evaluation": { + "EvaluatorVersionCreate": { "type": "object", "required": [ - "id", - "data", - "evaluators" + "evaluator_type", + "categories", + "definition" ], "properties": { - "id": { + "display_name": { "type": "string", - "description": "Identifier of the evaluation.", - "readOnly": true + "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." }, - "data": { + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Metadata about the evaluator" + }, + "evaluator_type": { "allOf": [ { - "$ref": "#/components/schemas/InputData" + "$ref": "#/components/schemas/EvaluatorType" } ], - "description": "Data for evaluation." + "description": "The type of the evaluator" }, - "displayName": { - "type": "string", - "description": "Display Name for evaluation. It helps to find the evaluation easily in AI Foundry. It does not need to be unique." + "categories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluatorCategory" + }, + "description": "The categories of the evaluator" }, - "description": { - "type": "string", - "description": "Description of the evaluation. It can be used to store additional information about the evaluation and is mutable." + "definition": { + "allOf": [ + { + "$ref": "#/components/schemas/EvaluatorDefinition" + } + ], + "description": "Definition of the evaluator" }, - "status": { + "description": { "type": "string", - "description": "Status of the evaluation. It is set by service and is read-only.", - "readOnly": true + "description": "The asset description text." }, "tags": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Evaluation's tags. Unlike properties, tags are fully mutable." + "description": "Tag dictionary. Tags can be added, removed, and updated." + } + }, + "description": "Evaluator Definition" + }, + "EvaluatorVersionUpdate": { + "type": "object", + "properties": { + "display_name": { + "type": "string", + "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." }, - "properties": { + "metadata": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Evaluation's properties. Unlike tags, properties are add-only. Once added, a property cannot be removed." + "description": "Metadata about the evaluator" }, - "evaluators": { + "categories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EvaluatorCategory" + }, + "description": "The categories of the evaluator" + }, + "description": { + "type": "string", + "description": "The asset description text." + }, + "tags": { "type": "object", "additionalProperties": { - "$ref": "#/components/schemas/EvaluatorConfiguration" + "type": "string" }, - "description": "Evaluators to be used for the evaluation." - }, - "target": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationTarget" - } - ], - "description": "Specifies the type and configuration of the entity used for this evaluation." + "description": "Tag dictionary. Tags can be added, removed, and updated." } }, - "description": "Evaluation Definition" + "description": "Evaluator Definition" }, - "EvaluationComparisonInsightRequest": { + "FabricDataAgentToolCall": { "type": "object", "required": [ "type", - "evalId", - "baselineRunId", - "treatmentRunIds" + "call_id", + "arguments", + "status" ], "properties": { "type": { "type": "string", "enum": [ - "EvaluationComparison" - ], - "description": "The type of request." + "fabric_dataagent_preview_call" + ] }, - "evalId": { + "call_id": { "type": "string", - "description": "Identifier for the evaluation." + "description": "The unique ID of the tool call generated by the model." }, - "baselineRunId": { + "arguments": { "type": "string", - "description": "The baseline run ID for comparison." + "description": "A JSON string of the arguments to pass to the tool." }, - "treatmentRunIds": { - "type": "array", - "items": { - "type": "string" - }, - "description": "List of treatment run IDs for comparison." + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallStatus" + } + ], + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/InsightRequest" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "Evaluation Comparison Request" + "description": "A Fabric data agent tool call." }, - "EvaluationComparisonInsightResult": { + "FabricDataAgentToolCallOutput": { "type": "object", "required": [ "type", - "comparisons", - "method" + "call_id", + "status" ], "properties": { "type": { "type": "string", "enum": [ - "EvaluationComparison" - ], - "description": "The type of insights result." - }, - "comparisons": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvalRunResultComparison" - }, - "description": "Comparison results for each treatment run against the baseline." + "fabric_dataagent_preview_call_output" + ] }, - "method": { - "type": "string", - "description": "The statistical method used for comparison." - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/InsightResult" - } - ], - "description": "Insights from the evaluation comparison." - }, - "EvaluationResultSample": { - "type": "object", - "required": [ - "type", - "evaluationResult" - ], - "properties": { - "type": { + "call_id": { "type": "string", - "enum": [ - "EvaluationResultSample" + "description": "The unique ID of the tool call generated by the model." + }, + "output": { + "allOf": [ + { + "$ref": "#/components/schemas/ToolCallOutputContent" + } ], - "description": "Evaluation Result Sample Type" + "description": "The output from the Fabric data agent tool call." }, - "evaluationResult": { + "status": { "allOf": [ { - "$ref": "#/components/schemas/EvalResult" + "$ref": "#/components/schemas/ToolCallStatus" } ], - "description": "Evaluation result for the analysis sample." + "description": "The status of the tool call." } }, "allOf": [ { - "$ref": "#/components/schemas/InsightSample" + "$ref": "#/components/schemas/OpenAI.OutputItem" } ], - "description": "A sample from the evaluation result." + "description": "The output of a Fabric data agent tool call." }, - "EvaluationRule": { + "FabricDataAgentToolParameters": { "type": "object", - "required": [ - "id", - "action", - "eventType", - "enabled", - "systemData" - ], "properties": { - "id": { - "type": "string", - "description": "Unique identifier for the evaluation rule.", - "readOnly": true - }, - "displayName": { + "name": { "type": "string", - "description": "Display Name for the evaluation rule." + "description": "Optional user-defined name for this tool or configuration." }, "description": { "type": "string", - "description": "Description for the evaluation rule." - }, - "action": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleAction" - } - ], - "description": "Definition of the evaluation rule action.", - "x-ms-foundry-meta": { - "conditional_previews": [ - "Evaluations=V1Preview" - ] - } - }, - "filter": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleFilter" - } - ], - "description": "Filter condition of the evaluation rule." - }, - "eventType": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleEventType" - } - ], - "description": "Event type that the evaluation rule applies to." - }, - "enabled": { - "type": "boolean", - "description": "Indicates whether the evaluation rule is enabled. Default is true." + "description": "Optional user-defined description for this tool or configuration." }, - "systemData": { - "type": "object", - "additionalProperties": { - "type": "string" + "project_connections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ToolProjectConnection" }, - "description": "System metadata for the evaluation rule.", - "readOnly": true + "maxItems": 1, + "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." } }, - "description": "Evaluation rule model." + "description": "The fabric data agent tool parameters." }, - "EvaluationRuleAction": { + "FileDatasetVersion": { "type": "object", "required": [ "type" ], "properties": { "type": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleActionType" - } - ], - "description": "Type of the evaluation action." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "continuousEvaluation": "#/components/schemas/ContinuousEvaluationRuleAction", - "humanEvaluation": "#/components/schemas/HumanEvaluationRuleAction", - "humanEvaluationPreview": "#/components/schemas/HumanEvaluationPreviewRuleAction" - } - }, - "description": "Evaluation action model." - }, - "EvaluationRuleActionType": { - "anyOf": [ - { - "type": "string" - }, - { "type": "string", "enum": [ - "continuousEvaluation", - "humanEvaluation", - "humanEvaluationPreview" - ] + "uri_file" + ], + "description": "Dataset type" } - ], - "description": "Type of the evaluation action." - }, - "EvaluationRuleEventType": { - "anyOf": [ - { - "type": "string" - }, + }, + "allOf": [ { - "type": "string", - "enum": [ - "responseCompleted", - "manual" - ] + "$ref": "#/components/schemas/DatasetVersion" } ], - "description": "Type of the evaluation rule event." + "description": "FileDatasetVersion Definition" }, - "EvaluationRuleFilter": { + "FileDatasetVersionUpdate": { "type": "object", "required": [ - "agentName" + "type" ], "properties": { - "agentName": { + "type": { "type": "string", - "description": "Filter by agent name." + "enum": [ + "uri_file" + ], + "description": "Dataset type" } }, - "description": "Evaluation filter model." + "allOf": [ + { + "$ref": "#/components/schemas/DatasetVersionUpdate" + } + ], + "description": "FileDatasetVersion Definition" }, - "EvaluationRunClusterInsightRequest": { + "FixedRatioVersionSelectionRule": { "type": "object", "required": [ "type", - "evalId", - "runIds" + "traffic_percentage" ], "properties": { "type": { "type": "string", "enum": [ - "EvaluationRunClusterInsight" - ], - "description": "The type of insights request." - }, - "evalId": { - "type": "string", - "description": "Evaluation Id for the insights." - }, - "runIds": { - "type": "array", - "items": { - "type": "string" - }, - "description": "List of evaluation run IDs for the insights." + "FixedRatio" + ] }, - "modelConfiguration": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightModelConfiguration" - } - ], - "description": "Configuration of the model used in the insight generation." + "traffic_percentage": { + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 100, + "description": "The percentage of traffic to route to the version. Must be between 0 and 100." } }, "allOf": [ { - "$ref": "#/components/schemas/InsightRequest" + "$ref": "#/components/schemas/VersionSelectionRule" } ], - "description": "Insights on set of Evaluation Results" + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "EvaluationRunClusterInsightResult": { + "FolderDatasetVersion": { "type": "object", "required": [ - "type", - "clusterInsight" + "type" ], "properties": { "type": { "type": "string", "enum": [ - "EvaluationRunClusterInsight" + "uri_folder" ], - "description": "The type of insights result." - }, - "clusterInsight": { - "$ref": "#/components/schemas/ClusterInsightResult" + "description": "Dataset type" } }, "allOf": [ { - "$ref": "#/components/schemas/InsightResult" + "$ref": "#/components/schemas/DatasetVersion" } ], - "description": "Insights from the evaluation run cluster analysis." + "description": "FileDatasetVersion Definition" }, - "EvaluationScheduleTask": { + "FolderDatasetVersionUpdate": { "type": "object", "required": [ - "type", - "evalId", - "evalRun" + "type" ], "properties": { "type": { "type": "string", "enum": [ - "Evaluation" - ] - }, - "evalId": { - "type": "string", - "description": "Identifier of the evaluation group." - }, - "evalRun": { - "type": "object", - "description": "The evaluation run payload." + "uri_folder" + ], + "description": "Dataset type" } }, "allOf": [ { - "$ref": "#/components/schemas/ScheduleTask" + "$ref": "#/components/schemas/DatasetVersionUpdate" } ], - "description": "Evaluation task for the schedule." + "description": "FileDatasetVersion Definition" }, - "EvaluationTarget": { + "FunctionToolCall": { "type": "object", "required": [ - "type" + "name", + "arguments" ], "properties": { - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationTargetType" - } - ], - "description": "Discriminator that defines the type of the evaluation target." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "modelResponseGeneration": "#/components/schemas/modelResponseGenerationTarget" + "name": { + "type": "string", + "description": "The name of the function to call." + }, + "arguments": { + "type": "string", + "description": "The arguments to call the function with, as generated by the model in JSON format." } }, - "description": "Abstract base model for defining evaluation targets." + "description": "Details of a function tool call." }, - "EvaluationTargetType": { - "anyOf": [ - { + "HeaderIsolationKeySource": { + "type": "object", + "required": [ + "kind", + "user_isolation_key", + "chat_isolation_key" + ], + "properties": { + "kind": { "type": "string", "enum": [ - "modelResponseGeneration" + "Header" ] }, + "user_isolation_key": { + "type": "string", + "description": "The user isolation key header value" + }, + "chat_isolation_key": { + "type": "string", + "description": "The chat isolation key header value" + } + }, + "allOf": [ { - "type": "string" + "$ref": "#/components/schemas/IsolationKeySource" } ], - "description": "Allowed types of evaluation targets." + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "EvaluationTaxonomy": { + "HeaderTelemetryEndpointAuth": { "type": "object", "required": [ - "name", - "version", - "taxonomyInput" + "type", + "header_name", + "secret_id", + "secret_key" ], "properties": { - "id": { - "type": "string", - "description": "Asset ID, a unique identifier for the asset", - "readOnly": true - }, - "name": { + "type": { "type": "string", - "description": "The name of the resource", - "readOnly": true + "enum": [ + "header" + ], + "description": "The authentication type, always 'header' for header-based secret authentication." }, - "version": { + "header_name": { "type": "string", - "description": "The version of the resource", - "readOnly": true - }, - "taxonomyInput": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationTaxonomyInput" - } - ], - "description": "Input configuration for the evaluation taxonomy." + "description": "The name of the HTTP header to inject the secret value into.", + "example": "X-Otlp-Api-Key" }, - "taxonomyCategories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TaxonomyCategory" - }, - "description": "List of taxonomy categories." + "secret_id": { + "type": "string", + "description": "The identifier of the secret store or connection.", + "example": "my-secret-store" }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional properties for the evaluation taxonomy." + "secret_key": { + "type": "string", + "description": "The key within the secret to retrieve the authentication value.", + "example": "OTLP_KEY" } }, - "description": "Evaluation Taxonomy Definition" + "allOf": [ + { + "$ref": "#/components/schemas/TelemetryEndpointAuth" + } + ], + "description": "Header-based secret authentication for a telemetry endpoint. The resolved secret value is injected as an HTTP header.", + "x-ms-foundry-meta": { + "required_previews": [ + "HostedAgents=V1Preview" + ] + } }, - "EvaluationTaxonomyCreateOrUpdate": { + "HostedAgentDefinition": { "type": "object", "required": [ - "taxonomyInput" + "kind", + "container_protocol_versions", + "cpu", + "memory" ], "properties": { - "description": { + "kind": { "type": "string", - "description": "The asset description text." + "enum": [ + "hosted" + ] }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" + "tools": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAI.Tool" }, - "description": "Tag dictionary. Tags can be added, removed, and updated." - }, - "taxonomyInput": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationTaxonomyInput" - } - ], - "description": "Input configuration for the evaluation taxonomy." + "description": "An array of tools the hosted agent's model may call while generating a response. You\ncan specify which tool to use by setting the `tool_choice` parameter." }, - "taxonomyCategories": { + "container_protocol_versions": { "type": "array", "items": { - "$ref": "#/components/schemas/TaxonomyCategory" + "$ref": "#/components/schemas/ProtocolVersionRecord" }, - "description": "List of taxonomy categories." + "description": "The protocols that the agent supports for ingress communication of the containers.", + "example": [ + { + "protocol": "responses", + "version": "v0.1.1" + }, + { + "protocol": "a2a", + "version": "v0.3.0" + } + ] }, - "properties": { + "cpu": { + "type": "string", + "description": "The CPU configuration for the hosted agent.", + "example": "0.25" + }, + "memory": { + "type": "string", + "description": "The memory configuration for the hosted agent.", + "example": "0.5Gi" + }, + "environment_variables": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Additional properties for the evaluation taxonomy." - } - }, - "description": "Evaluation Taxonomy Definition" - }, - "EvaluationTaxonomyInput": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { + "description": "Environment variables to set in the hosted agent container.", + "example": { + "name": "LOG_LEVEL", + "value": "debug" + } + }, + "image": { + "type": "string", + "description": "The image ID for the agent, applicable to image-based hosted agents.", + "example": "my-registry.azurecr.io/my-hosted-agent:latest" + }, + "telemetry_config": { "allOf": [ { - "$ref": "#/components/schemas/EvaluationTaxonomyInputType" + "$ref": "#/components/schemas/TelemetryConfig" } ], - "description": "Input type of the evaluation taxonomy." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "agent": "#/components/schemas/AgentTaxonomyInput" + "description": "Optional customer-supplied telemetry configuration for exporting container logs, traces, and metrics." } }, - "description": "Input configuration for the evaluation taxonomy." - }, - "EvaluationTaxonomyInputType": { - "anyOf": [ - { - "type": "string" - }, + "allOf": [ { - "type": "string", - "enum": [ - "agent", - "policy" - ] + "$ref": "#/components/schemas/AgentDefinition" } ], - "description": "Type of the evaluation taxonomy input." + "description": "The hosted agent definition.", + "x-ms-foundry-meta": { + "required_previews": [ + "HostedAgents=V1Preview" + ] + } }, - "EvaluationTaxonomyInputUpdate": { + "HourlyRecurrenceSchedule": { "type": "object", "required": [ "type" ], "properties": { "type": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationTaxonomyInputType" - } - ], - "description": "Input type of the evaluation taxonomy." + "type": "string", + "enum": [ + "Hourly" + ] } }, - "discriminator": { - "propertyName": "type", - "mapping": { - "agent": "#/components/schemas/AgentTaxonomyInputUpdate" + "allOf": [ + { + "$ref": "#/components/schemas/RecurrenceSchedule" } - }, - "description": "Input configuration for the evaluation taxonomy." + ], + "description": "Hourly recurrence schedule." }, - "EvaluationTaxonomyUpdate": { + "HumanEvaluationPreviewRuleAction": { "type": "object", + "required": [ + "type", + "templateId" + ], "properties": { - "description": { + "type": { "type": "string", - "description": "The asset description text." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "enum": [ + "humanEvaluationPreview" + ] }, - "taxonomyInput": { + "templateId": { "allOf": [ { - "$ref": "#/components/schemas/EvaluationTaxonomyInputUpdate" + "$ref": "#/components/schemas/AssetId" } ], - "description": "Input configuration for the evaluation taxonomy." - }, - "taxonomyCategories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TaxonomyCategory" - }, - "description": "List of taxonomy categories." - }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional properties for the evaluation taxonomy." + "description": "Human evaluation template Id." } }, - "description": "Evaluation Taxonomy Definition" - }, - "EvaluatorCategory": { - "anyOf": [ - { - "type": "string" - }, + "allOf": [ { - "type": "string", - "enum": [ - "quality", - "safety", - "agents" - ] + "$ref": "#/components/schemas/EvaluationRuleAction" } ], - "description": "The category of the evaluator" + "description": "Evaluation rule action for human evaluation." }, - "EvaluatorConfiguration": { + "HumanEvaluationRuleAction": { "type": "object", "required": [ - "id" + "type", + "templateId" ], "properties": { - "id": { + "type": { "type": "string", - "description": "Identifier of the evaluator." - }, - "initParams": { - "type": "object", - "additionalProperties": {}, - "description": "Initialization parameters of the evaluator." + "enum": [ + "humanEvaluation" + ] }, - "dataMapping": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Data parameters of the evaluator." + "templateId": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetId" + } + ], + "description": "Human evaluation template Id." } }, - "description": "Evaluator Configuration" - }, - "EvaluatorCredentialRequest": { - "type": "object", - "required": [ - "blobUri" - ], - "properties": { - "blobUri": { - "type": "string", - "format": "uri", - "description": "The blob URI for the evaluator storage. Example: `https://account.blob.core.windows.net:443/container`" + "allOf": [ + { + "$ref": "#/components/schemas/EvaluationRuleAction" } - }, - "description": "Request body for getting evaluator credentials" + ], + "description": "Evaluation rule action for human evaluation." }, - "EvaluatorDefinition": { + "Index": { "type": "object", "required": [ - "type" + "type", + "name", + "version" ], "properties": { "type": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorDefinitionType" + "$ref": "#/components/schemas/IndexType" } ], - "description": "The type of evaluator definition" + "description": "Type of index" }, - "init_parameters": { - "type": "object", - "additionalProperties": {}, - "description": "The JSON schema (Draft 2020-12) for the evaluator's input parameters. This includes parameters like type, properties, required." + "id": { + "type": "string", + "description": "Asset ID, a unique identifier for the asset", + "readOnly": true }, - "data_schema": { - "type": "object", - "additionalProperties": {}, - "description": "The JSON schema (Draft 2020-12) for the evaluator's input data. This includes parameters like type, properties, required." + "name": { + "type": "string", + "description": "The name of the resource", + "readOnly": true }, - "metrics": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/EvaluatorMetric" - }, - "description": "List of output metrics produced by this evaluator" + "version": { + "type": "string", + "description": "The version of the resource", + "readOnly": true } }, "discriminator": { "propertyName": "type", "mapping": { - "code": "#/components/schemas/CodeBasedEvaluatorDefinition", - "prompt": "#/components/schemas/PromptBasedEvaluatorDefinition" + "AzureSearch": "#/components/schemas/AzureAISearchIndex", + "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndex", + "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndex" } }, - "description": "Base evaluator configuration with discriminator" + "description": "Index resource Definition" }, - "EvaluatorDefinitionType": { + "IndexType": { "anyOf": [ { "type": "string" @@ -18108,797 +25083,662 @@ { "type": "string", "enum": [ - "prompt", - "code", - "prompt_and_code", - "service", - "openai_graders" + "AzureSearch", + "CosmosDBNoSqlVectorStore", + "ManagedAzureSearch" ] } - ], - "description": "The type of evaluator definition" + ] }, - "EvaluatorMetric": { + "IndexUpdate": { "type": "object", + "required": [ + "type" + ], "properties": { "type": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorMetricType" - } - ], - "description": "Type of the metric." - }, - "desirable_direction": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluatorMetricDirection" + "$ref": "#/components/schemas/IndexType" } ], - "description": "It indicates whether a higher value is better or a lower value is better for this metric." - }, - "min_value": { - "type": "number", - "format": "float", - "description": "Minimum value for the metric" - }, - "max_value": { - "type": "number", - "format": "float", - "description": "Maximum value for the metric. If not specified, it is assumed to be unbounded." - }, - "threshold": { - "type": "number", - "format": "float", - "description": "Default pass/fail threshold for this metric." - }, - "is_primary": { - "type": "boolean", - "description": "Indicates if this metric is primary when there are multiple metrics." - } - }, - "description": "Evaluator Metric" - }, - "EvaluatorMetricDirection": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "increase", - "decrease", - "neutral" - ] - } - ], - "description": "The direction of the metric indicating whether a higher value is better, a lower value is better, or neutral" - }, - "EvaluatorMetricType": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "ordinal", - "continuous", - "boolean" - ] - } - ], - "description": "The type of the evaluator" - }, - "EvaluatorType": { - "anyOf": [ - { - "type": "string" + "description": "Type of index" }, - { - "type": "string", - "enum": [ - "builtin", - "custom" - ] - } - ], - "description": "The type of the evaluator" - }, - "EvaluatorVersion": { - "type": "object", - "required": [ - "evaluator_type", - "categories", - "definition", - "created_by", - "created_at", - "modified_at", - "name", - "version" - ], - "properties": { - "display_name": { + "description": { "type": "string", - "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." + "description": "The asset description text." }, - "metadata": { + "tags": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Metadata about the evaluator" - }, - "evaluator_type": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluatorType" - } - ], - "description": "The type of the evaluator" - }, - "categories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvaluatorCategory" - }, - "description": "The categories of the evaluator" - }, - "definition": { - "allOf": [ - { - "$ref": "#/components/schemas/EvaluatorDefinition" - } - ], - "description": "Definition of the evaluator" - }, - "created_by": { - "type": "string", - "description": "Creator of the evaluator", - "readOnly": true - }, - "created_at": { - "type": "string", - "description": "Creation date/time of the evaluator", - "readOnly": true - }, - "modified_at": { - "type": "string", - "description": "Last modified date/time of the evaluator", - "readOnly": true - }, - "id": { - "type": "string", - "description": "Asset ID, a unique identifier for the asset", - "readOnly": true - }, - "name": { - "type": "string", - "description": "The name of the resource", - "readOnly": true - }, - "version": { - "type": "string", - "description": "The version of the resource", - "readOnly": true + "description": "Tag dictionary. Tags can be added, removed, and updated." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "AzureSearch": "#/components/schemas/AzureAISearchIndexUpdate", + "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndexUpdate", + "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndexUpdate" } }, - "description": "Evaluator Definition" + "description": "Index resource Definition" }, - "EvaluatorVersionCreate": { + "Input": { "type": "object", "required": [ - "evaluator_type", - "categories", - "definition" + "jobInputType" ], "properties": { - "display_name": { - "type": "string", - "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Metadata about the evaluator" - }, - "evaluator_type": { + "jobInputType": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorType" + "$ref": "#/components/schemas/AssetTypes" } ], - "description": "The type of the evaluator" + "description": "Specifies the type of job input." }, - "categories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvaluatorCategory" - }, - "description": "The categories of the evaluator" + "uri": { + "type": "string", + "description": "Input Asset URI. Required for uri_file, uri_folder, and safetensors_model types." }, - "definition": { + "mode": { "allOf": [ { - "$ref": "#/components/schemas/EvaluatorDefinition" + "$ref": "#/components/schemas/InputOutputModes" } ], - "description": "Definition of the evaluator" + "description": "Input Asset Delivery Mode. Applies to uri-based inputs." }, - "description": { + "value": { "type": "string", - "description": "The asset description text." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "description": "Literal value. Required for literal type." } }, - "description": "Evaluator Definition" + "description": "Job input definition." }, - "EvaluatorVersionUpdate": { + "InputData": { "type": "object", + "required": [ + "type" + ], "properties": { - "display_name": { - "type": "string", - "description": "Display Name for evaluator. It helps to find the evaluator easily in AI Foundry. It does not need to be unique." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Metadata about the evaluator" - }, - "categories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/EvaluatorCategory" - }, - "description": "The categories of the evaluator" - }, - "description": { + "type": { "type": "string", - "description": "The asset description text." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "description": "Type of the data" } }, - "description": "Evaluator Definition" + "discriminator": { + "propertyName": "type", + "mapping": { + "dataset": "#/components/schemas/InputDataset" + } + }, + "description": "Abstract data class." }, - "FabricDataAgentToolCall": { + "InputDataset": { "type": "object", "required": [ "type", - "call_id", - "arguments", - "status" + "id" ], "properties": { "type": { "type": "string", "enum": [ - "fabric_dataagent_preview_call" + "dataset" ] }, - "call_id": { - "type": "string", - "description": "The unique ID of the tool call generated by the model." - }, - "arguments": { + "id": { "type": "string", - "description": "A JSON string of the arguments to pass to the tool." - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/ToolCallStatus" - } - ], - "description": "The status of the tool call." + "description": "Evaluation input data" } }, "allOf": [ { - "$ref": "#/components/schemas/OpenAI.OutputItem" + "$ref": "#/components/schemas/InputData" } ], - "description": "A Fabric data agent tool call." + "description": "Dataset as source for evaluation." }, - "FabricDataAgentToolCallOutput": { + "InputOutputModes": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "ReadOnlyMount", + "ReadWriteMount", + "Download", + "Direct", + "Upload" + ] + } + ], + "description": "Enum to determine the input/output data delivery mode." + }, + "Insight": { "type": "object", "required": [ - "type", - "call_id", - "status" + "id", + "metadata", + "state", + "displayName", + "request" ], "properties": { - "type": { + "id": { "type": "string", - "enum": [ - "fabric_dataagent_preview_call_output" - ] + "description": "The unique identifier for the insights report.", + "readOnly": true }, - "call_id": { + "metadata": { + "allOf": [ + { + "$ref": "#/components/schemas/InsightsMetadata" + } + ], + "description": "Metadata about the insights report.", + "readOnly": true + }, + "state": { + "allOf": [ + { + "$ref": "#/components/schemas/Azure.Core.Foundations.OperationState" + } + ], + "description": "The current state of the insights.", + "readOnly": true + }, + "displayName": { "type": "string", - "description": "The unique ID of the tool call generated by the model." + "description": "User friendly display name for the insight." }, - "output": { + "request": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallOutputContent" + "$ref": "#/components/schemas/InsightRequest" } ], - "description": "The output from the Fabric data agent tool call." + "description": "Request for the insights analysis." }, - "status": { + "result": { "allOf": [ { - "$ref": "#/components/schemas/ToolCallStatus" + "$ref": "#/components/schemas/InsightResult" } ], - "description": "The status of the tool call." + "description": "The result of the insights report.", + "readOnly": true } }, - "allOf": [ - { - "$ref": "#/components/schemas/OpenAI.OutputItem" - } - ], - "description": "The output of a Fabric data agent tool call." + "description": "The response body for cluster insights." }, - "FabricDataAgentToolParameters": { + "InsightCluster": { "type": "object", + "required": [ + "id", + "label", + "suggestion", + "suggestionTitle", + "description", + "weight" + ], "properties": { - "name": { + "id": { "type": "string", - "description": "Optional user-defined name for this tool or configuration." + "description": "The id of the analysis cluster." + }, + "label": { + "type": "string", + "description": "Label for the cluster" + }, + "suggestion": { + "type": "string", + "description": "Suggestion for the cluster" + }, + "suggestionTitle": { + "type": "string", + "description": "The title of the suggestion for the cluster" }, "description": { "type": "string", - "description": "Optional user-defined description for this tool or configuration." + "description": "Description of the analysis cluster." }, - "project_connections": { + "weight": { + "type": "integer", + "format": "int32", + "description": "The weight of the analysis cluster. This indicate number of samples in the cluster." + }, + "subClusters": { + "description": "List of subclusters within this cluster. Empty if no subclusters exist.", "type": "array", "items": { - "$ref": "#/components/schemas/ToolProjectConnection" + "$ref": "#/components/schemas/InsightCluster" + } + }, + "samples": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InsightSample" }, - "maxItems": 1, - "description": "The project connections attached to this tool. There can be a maximum of 1 connection\nresource attached to the tool." + "description": "List of samples that belong to this cluster. Empty if samples are part of subclusters." } }, - "description": "The fabric data agent tool parameters." + "description": "A cluster of analysis samples." }, - "FileDatasetVersion": { + "InsightModelConfiguration": { "type": "object", "required": [ - "type" + "modelDeploymentName" ], "properties": { - "type": { + "modelDeploymentName": { "type": "string", - "enum": [ - "uri_file" - ], - "description": "Dataset type" + "description": "The model deployment to be evaluated. Accepts either the deployment name alone or with the connection name as '{connectionName}/'." } }, - "allOf": [ - { - "$ref": "#/components/schemas/DatasetVersion" - } - ], - "description": "FileDatasetVersion Definition" + "description": "Configuration of the model used in the insight generation." }, - "FileDatasetVersionUpdate": { + "InsightRequest": { "type": "object", "required": [ "type" ], "properties": { "type": { - "type": "string", - "enum": [ - "uri_file" + "allOf": [ + { + "$ref": "#/components/schemas/InsightType" + } ], - "description": "Dataset type" + "description": "The type of request." } }, - "allOf": [ - { - "$ref": "#/components/schemas/DatasetVersionUpdate" - } - ], - "description": "FileDatasetVersion Definition" - }, - "FixedRatioVersionSelectionRule": { - "type": "object", - "required": [ - "type", - "traffic_percentage" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "FixedRatio" - ] - }, - "traffic_percentage": { - "type": "integer", - "format": "int32", - "minimum": 0, - "maximum": 100, - "description": "The percentage of traffic to route to the version. Must be between 0 and 100." + "discriminator": { + "propertyName": "type", + "mapping": { + "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightRequest", + "AgentClusterInsight": "#/components/schemas/AgentClusterInsightRequest", + "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightRequest" } }, - "allOf": [ - { - "$ref": "#/components/schemas/VersionSelectionRule" - } - ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "The request of the insights report." }, - "FolderDatasetVersion": { + "InsightResult": { "type": "object", "required": [ "type" ], "properties": { "type": { - "type": "string", - "enum": [ - "uri_folder" + "allOf": [ + { + "$ref": "#/components/schemas/InsightType" + } ], - "description": "Dataset type" + "description": "The type of insights result." } }, - "allOf": [ - { - "$ref": "#/components/schemas/DatasetVersion" - } - ], - "description": "FileDatasetVersion Definition" - }, - "FolderDatasetVersionUpdate": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "uri_folder" - ], - "description": "Dataset type" + "discriminator": { + "propertyName": "type", + "mapping": { + "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightResult", + "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightResult", + "AgentClusterInsight": "#/components/schemas/AgentClusterInsightResult" } }, - "allOf": [ - { - "$ref": "#/components/schemas/DatasetVersionUpdate" - } - ], - "description": "FileDatasetVersion Definition" + "description": "The result of the insights." }, - "FunctionToolCall": { + "InsightSample": { "type": "object", "required": [ - "name", - "arguments" + "id", + "type", + "features", + "correlationInfo" ], "properties": { - "name": { + "id": { "type": "string", - "description": "The name of the function to call." + "description": "The unique identifier for the analysis sample." }, - "arguments": { - "type": "string", - "description": "The arguments to call the function with, as generated by the model in JSON format." - } - }, - "description": "Details of a function tool call." - }, - "HeaderIsolationKeySource": { - "type": "object", - "required": [ - "kind", - "user_isolation_key", - "chat_isolation_key" - ], - "properties": { - "kind": { - "type": "string", - "enum": [ - "Header" - ] + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/SampleType" + } + ], + "description": "Sample type" }, - "user_isolation_key": { - "type": "string", - "description": "The user isolation key header value" + "features": { + "type": "object", + "additionalProperties": {}, + "description": "Features to help with additional filtering of data in UX." }, - "chat_isolation_key": { - "type": "string", - "description": "The chat isolation key header value" + "correlationInfo": { + "type": "object", + "additionalProperties": {}, + "description": "Info about the correlation for the analysis sample." } }, - "allOf": [ - { - "$ref": "#/components/schemas/IsolationKeySource" + "discriminator": { + "propertyName": "type", + "mapping": { + "EvaluationResultSample": "#/components/schemas/EvaluationResultSample" } - ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + }, + "description": "A sample from the analysis." }, - "HeaderTelemetryEndpointAuth": { + "InsightScheduleTask": { "type": "object", "required": [ "type", - "header_name", - "secret_id", - "secret_key" + "insight" ], "properties": { "type": { "type": "string", "enum": [ - "header" - ], - "description": "The authentication type, always 'header' for header-based secret authentication." - }, - "header_name": { - "type": "string", - "description": "The name of the HTTP header to inject the secret value into.", - "example": "X-Otlp-Api-Key" - }, - "secret_id": { - "type": "string", - "description": "The identifier of the secret store or connection.", - "example": "my-secret-store" + "Insight" + ] }, - "secret_key": { - "type": "string", - "description": "The key within the secret to retrieve the authentication value.", - "example": "OTLP_KEY" + "insight": { + "allOf": [ + { + "$ref": "#/components/schemas/Insight" + } + ], + "description": "The insight payload." } }, "allOf": [ { - "$ref": "#/components/schemas/TelemetryEndpointAuth" + "$ref": "#/components/schemas/ScheduleTask" } ], - "description": "Header-based secret authentication for a telemetry endpoint. The resolved secret value is injected as an HTTP header.", - "x-ms-foundry-meta": { - "required_previews": [ - "HostedAgents=V1Preview" - ] - } + "description": "Insight task for the schedule." }, - "HostedAgentDefinition": { + "InsightSummary": { "type": "object", "required": [ - "kind", - "container_protocol_versions", - "cpu", - "memory" + "sampleCount", + "uniqueSubclusterCount", + "uniqueClusterCount", + "method", + "usage" ], "properties": { - "kind": { - "type": "string", - "enum": [ - "hosted" - ] - }, - "tools": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAI.Tool" - }, - "description": "An array of tools the hosted agent's model may call while generating a response. You\ncan specify which tool to use by setting the `tool_choice` parameter." - }, - "container_protocol_versions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProtocolVersionRecord" - }, - "description": "The protocols that the agent supports for ingress communication of the containers.", - "example": [ - { - "protocol": "responses", - "version": "v0.1.1" - }, - { - "protocol": "a2a", - "version": "v0.3.0" - } - ] - }, - "cpu": { - "type": "string", - "description": "The CPU configuration for the hosted agent.", - "example": "0.25" + "sampleCount": { + "type": "integer", + "format": "int32", + "description": "Total number of samples analyzed." }, - "memory": { - "type": "string", - "description": "The memory configuration for the hosted agent.", - "example": "0.5Gi" + "uniqueSubclusterCount": { + "type": "integer", + "format": "int32", + "description": "Total number of unique subcluster labels." }, - "environment_variables": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Environment variables to set in the hosted agent container.", - "example": { - "name": "LOG_LEVEL", - "value": "debug" - } + "uniqueClusterCount": { + "type": "integer", + "format": "int32", + "description": "Total number of unique clusters." }, - "image": { + "method": { "type": "string", - "description": "The image ID for the agent, applicable to image-based hosted agents.", - "example": "my-registry.azurecr.io/my-hosted-agent:latest" + "description": "Method used for clustering." }, - "telemetry_config": { + "usage": { "allOf": [ { - "$ref": "#/components/schemas/TelemetryConfig" + "$ref": "#/components/schemas/ClusterTokenUsage" } ], - "description": "Optional customer-supplied telemetry configuration for exporting container logs, traces, and metrics." + "description": "Token usage while performing clustering analysis" } }, - "allOf": [ + "description": "Summary of the error cluster analysis." + }, + "InsightType": { + "anyOf": [ { - "$ref": "#/components/schemas/AgentDefinition" + "type": "string" + }, + { + "type": "string", + "enum": [ + "EvaluationRunClusterInsight", + "AgentClusterInsight", + "EvaluationComparison" + ] } ], - "description": "The hosted agent definition.", - "x-ms-foundry-meta": { - "required_previews": [ - "HostedAgents=V1Preview" - ] - } + "description": "The request of the insights." }, - "HourlyRecurrenceSchedule": { + "InsightsMetadata": { "type": "object", "required": [ - "type" + "createdAt" ], "properties": { - "type": { + "createdAt": { "type": "string", - "enum": [ - "Hourly" - ] + "format": "date-time", + "description": "The timestamp when the insights were created." + }, + "completedAt": { + "type": "string", + "format": "date-time", + "description": "The timestamp when the insights were completed." } }, - "allOf": [ + "description": "Metadata about the insights." + }, + "IsolationKeySource": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "$ref": "#/components/schemas/IsolationKeySourceKind" + } + }, + "discriminator": { + "propertyName": "kind", + "mapping": { + "Entra": "#/components/schemas/EntraIsolationKeySource", + "Header": "#/components/schemas/HeaderIsolationKeySource" + } + }, + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } + }, + "IsolationKeySourceKind": { + "anyOf": [ { - "$ref": "#/components/schemas/RecurrenceSchedule" + "type": "string" + }, + { + "type": "string", + "enum": [ + "Entra", + "Header" + ] } ], - "description": "Hourly recurrence schedule." + "x-ms-foundry-meta": { + "required_previews": [ + "AgentEndpoints=V1Preview" + ] + } }, - "HumanEvaluationPreviewRuleAction": { + "ItemGenerationParams": { "type": "object", "required": [ - "type", - "templateId" + "type" ], "properties": { "type": { - "type": "string", - "enum": [ - "humanEvaluationPreview" - ] - }, - "templateId": { "allOf": [ { - "$ref": "#/components/schemas/AssetId" + "$ref": "#/components/schemas/ItemGenerationParamsType" } ], - "description": "Human evaluation template Id." + "description": "The type of item generation parameters to use." } }, - "allOf": [ + "discriminator": { + "propertyName": "type", + "mapping": { + "red_team": "#/components/schemas/RedTeamItemGenerationParams", + "red_team_seed_prompts": "#/components/schemas/RedTeamSeedPromptsItemGenerationParams", + "red_team_taxonomy": "#/components/schemas/RedTeamTaxonomyItemGenerationParams", + "response_retrieval": "#/components/schemas/ResponseRetrievalItemGenerationParams" + } + }, + "description": "Represents the set of parameters used to control item generation operations." + }, + "ItemGenerationParamsType": { + "anyOf": [ { - "$ref": "#/components/schemas/EvaluationRuleAction" + "type": "string" + }, + { + "type": "string", + "enum": [ + "red_team", + "response_retrieval", + "red_team_seed_prompts", + "red_team_taxonomy", + "synthetic_data_gen_preview" + ] } ], - "description": "Evaluation rule action for human evaluation." + "description": "The types of parameters for red team item generation." }, - "HumanEvaluationRuleAction": { + "Job": { "type": "object", "required": [ - "type", - "templateId" + "name", + "properties" ], "properties": { + "name": { + "type": "string", + "description": "The name of the training job. This is case-sensitive.", + "readOnly": true + }, + "id": { + "type": "string", + "description": "The resource ID.", + "readOnly": true + }, "type": { "type": "string", - "enum": [ - "humanEvaluation" - ] + "description": "The resource type.", + "readOnly": true }, - "templateId": { + "properties": { "allOf": [ { - "$ref": "#/components/schemas/AssetId" + "$ref": "#/components/schemas/JobProperties" } ], - "description": "Human evaluation template Id." + "description": "Properties of the job." + }, + "systemData": { + "allOf": [ + { + "$ref": "#/components/schemas/SystemData" + } + ], + "description": "Metadata pertaining to creation and last modification of the resource.", + "readOnly": true } }, - "allOf": [ - { - "$ref": "#/components/schemas/EvaluationRuleAction" - } - ], - "description": "Evaluation rule action for human evaluation." + "description": "Training job resource." }, - "Index": { + "JobArtifact": { "type": "object", "required": [ - "type", - "name", - "version" + "path" ], "properties": { + "path": { + "type": "string", + "description": "Artifact path relative to the job artifact root.", + "readOnly": true + }, "type": { "allOf": [ { - "$ref": "#/components/schemas/IndexType" + "$ref": "#/components/schemas/JobArtifactType" } ], - "description": "Type of index" + "description": "Artifact type.", + "readOnly": true }, - "id": { - "type": "string", - "description": "Asset ID, a unique identifier for the asset", + "size": { + "type": "integer", + "format": "int64", + "description": "Artifact size in bytes.", "readOnly": true }, - "name": { + "createdTimeUtc": { "type": "string", - "description": "The name of the resource", + "format": "date-time", + "description": "Time the artifact was created.", "readOnly": true }, - "version": { + "updatedTimeUtc": { "type": "string", - "description": "The version of the resource", + "format": "date-time", + "description": "Time the artifact was last updated.", "readOnly": true } }, - "discriminator": { - "propertyName": "type", - "mapping": { - "AzureSearch": "#/components/schemas/AzureAISearchIndex", - "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndex", - "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndex" + "description": "Metadata for an artifact produced by or attached to a job." + }, + "JobArtifactContentInfo": { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "type": "string", + "description": "Artifact path relative to the job artifact root.", + "readOnly": true + }, + "contentUri": { + "type": "string", + "format": "uri", + "description": "Download URI for the artifact content.", + "readOnly": true + }, + "contentType": { + "type": "string", + "description": "MIME type of the content.", + "readOnly": true + }, + "expiresAtUtc": { + "type": "string", + "format": "date-time", + "description": "Time the content URI expires.", + "readOnly": true } }, - "description": "Index resource Definition" + "description": "Content access information for a job artifact." }, - "IndexType": { + "JobArtifactType": { "anyOf": [ { "type": "string" @@ -18906,376 +25746,547 @@ { "type": "string", "enum": [ - "AzureSearch", - "CosmosDBNoSqlVectorStore", - "ManagedAzureSearch" + "File", + "Directory" ] } - ] + ], + "description": "Type of a job artifact." }, - "IndexUpdate": { + "JobCreate": { "type": "object", "required": [ - "type" + "name", + "properties" ], "properties": { - "type": { + "name": { + "type": "string", + "description": "The name of the training job. This is case-sensitive." + }, + "properties": { "allOf": [ { - "$ref": "#/components/schemas/IndexType" + "$ref": "#/components/schemas/JobProperties" } ], - "description": "Type of index" - }, - "description": { + "description": "Properties of the job." + } + }, + "description": "Request body for creating a training job." + }, + "JobMetric": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { "type": "string", - "description": "The asset description text." + "description": "Metric name.", + "readOnly": true }, - "tags": { + "metricType": { + "allOf": [ + { + "$ref": "#/components/schemas/JobMetricType" + } + ], + "description": "Metric type.", + "readOnly": true + }, + "columns": { "type": "object", "additionalProperties": { "type": "string" }, - "description": "Tag dictionary. Tags can be added, removed, and updated." + "description": "Column metadata for structured metric values.", + "readOnly": true } }, - "discriminator": { - "propertyName": "type", - "mapping": { - "AzureSearch": "#/components/schemas/AzureAISearchIndexUpdate", - "ManagedAzureSearch": "#/components/schemas/ManagedAzureAISearchIndexUpdate", - "CosmosDBNoSqlVectorStore": "#/components/schemas/CosmosDBIndexUpdate" + "description": "Metadata for a metric emitted by a job or run." + }, + "JobMetricAggregate": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Metric name.", + "readOnly": true + }, + "startUtc": { + "type": "string", + "format": "date-time", + "description": "Aggregate window start.", + "readOnly": true + }, + "endUtc": { + "type": "string", + "format": "date-time", + "description": "Aggregate window end.", + "readOnly": true + }, + "values": { + "type": "object", + "additionalProperties": {}, + "description": "Aggregate values.", + "readOnly": true } }, - "description": "Index resource Definition" + "description": "Aggregated values for a metric." }, - "InputData": { + "JobMetricLastValue": { "type": "object", "required": [ - "type" + "name" ], "properties": { - "type": { + "name": { "type": "string", - "description": "Type of the data" + "description": "Metric name.", + "readOnly": true + }, + "value": { + "allOf": [ + { + "$ref": "#/components/schemas/JobMetricPoint" + } + ], + "description": "Latest metric point.", + "readOnly": true } }, - "discriminator": { - "propertyName": "type", - "mapping": { - "dataset": "#/components/schemas/InputDataset" + "description": "Latest value for a metric." + }, + "JobMetricPoint": { + "type": "object", + "properties": { + "metricId": { + "type": "string", + "description": "Metric identifier.", + "readOnly": true + }, + "step": { + "type": "integer", + "format": "int64", + "description": "Metric step.", + "readOnly": true + }, + "createdUtc": { + "type": "string", + "format": "date-time", + "description": "Time the metric point was created.", + "readOnly": true + }, + "data": { + "type": "object", + "additionalProperties": {}, + "description": "Metric data values.", + "readOnly": true } }, - "description": "Abstract data class." + "description": "A metric data point." }, - "InputDataset": { + "JobMetricSample": { "type": "object", "required": [ - "type", - "id" + "name", + "points" ], "properties": { - "type": { + "name": { "type": "string", - "enum": [ - "dataset" - ] + "description": "Metric name.", + "readOnly": true }, - "id": { - "type": "string", - "description": "Evaluation input data" + "points": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricPoint" + }, + "description": "Sampled metric points.", + "readOnly": true } }, - "allOf": [ + "description": "Sampled values for a metric." + }, + "JobMetricType": { + "anyOf": [ { - "$ref": "#/components/schemas/InputData" + "type": "string" + }, + { + "type": "string", + "enum": [ + "Scalar", + "Table", + "Image" + ] } ], - "description": "Dataset as source for evaluation." + "description": "The kind of metric emitted by a job." }, - "Insight": { + "JobOperationError": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable error code." + }, + "message": { + "type": "string", + "description": "Human-readable error message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional error information." + } + }, + "description": "Error details for an asynchronous training job operation." + }, + "JobOperationResource": { "type": "object", "required": [ - "id", - "metadata", - "state", - "displayName", - "request" + "status" ], "properties": { "id": { "type": "string", - "description": "The unique identifier for the insights report.", + "description": "Operation resource ID.", "readOnly": true }, - "metadata": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightsMetadata" - } - ], - "description": "Metadata about the insights report.", + "name": { + "type": "string", + "description": "Operation name.", "readOnly": true }, - "state": { + "status": { "allOf": [ { - "$ref": "#/components/schemas/Azure.Core.Foundations.OperationState" + "$ref": "#/components/schemas/JobOperationStatus" } ], - "description": "The current state of the insights.", + "description": "Operation status.", "readOnly": true }, - "displayName": { + "properties": { + "type": "object", + "additionalProperties": {}, + "description": "Operation result properties.", + "readOnly": true + }, + "startTime": { "type": "string", - "description": "User friendly display name for the insight." + "format": "date-time", + "description": "Operation start time.", + "readOnly": true }, - "request": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightRequest" - } - ], - "description": "Request for the insights analysis." + "endTime": { + "type": "string", + "format": "date-time", + "description": "Operation end time.", + "readOnly": true }, - "result": { + "percentComplete": { + "type": "number", + "format": "double", + "description": "Operation completion percentage from 0 to 100.", + "readOnly": true + }, + "error": { "allOf": [ { - "$ref": "#/components/schemas/InsightResult" + "$ref": "#/components/schemas/JobOperationError" } ], - "description": "The result of the insights report.", + "description": "Operation error information.", "readOnly": true } }, - "description": "The response body for cluster insights." + "description": "Asynchronous training job operation resource." }, - "InsightCluster": { + "JobOperationStatus": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "InProgress", + "Deleting", + "Succeeded", + "Failed", + "Canceled" + ] + } + ], + "description": "Status of an asynchronous training job operation." + }, + "JobOutputReference": { "type": "object", "required": [ - "id", - "label", - "suggestion", - "suggestionTitle", - "description", - "weight" + "name" ], "properties": { - "id": { + "name": { "type": "string", - "description": "The id of the analysis cluster." + "description": "Output name.", + "readOnly": true }, - "label": { - "type": "string", - "description": "Label for the cluster" + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypes" + } + ], + "description": "Output asset type.", + "readOnly": true }, - "suggestion": { - "type": "string", - "description": "Suggestion for the cluster" + "mode": { + "allOf": [ + { + "$ref": "#/components/schemas/InputOutputModes" + } + ], + "description": "Output delivery mode.", + "readOnly": true }, - "suggestionTitle": { + "uri": { "type": "string", - "description": "The title of the suggestion for the cluster" + "description": "Output storage URI.", + "readOnly": true }, - "description": { + "assetName": { "type": "string", - "description": "Description of the analysis cluster." - }, - "weight": { - "type": "integer", - "format": "int32", - "description": "The weight of the analysis cluster. This indicate number of samples in the cluster." - }, - "subClusters": { - "description": "List of subclusters within this cluster. Empty if no subclusters exist.", - "type": "array", - "items": { - "$ref": "#/components/schemas/InsightCluster" - } + "description": "Registered asset name, if the output produced an asset.", + "readOnly": true }, - "samples": { - "type": "array", - "items": { - "$ref": "#/components/schemas/InsightSample" - }, - "description": "List of samples that belong to this cluster. Empty if samples are part of subclusters." - } - }, - "description": "A cluster of analysis samples." - }, - "InsightModelConfiguration": { - "type": "object", - "required": [ - "modelDeploymentName" - ], - "properties": { - "modelDeploymentName": { + "assetVersion": { + "type": "string", + "description": "Registered asset version, if the output produced an asset.", + "readOnly": true + }, + "baseModelId": { "type": "string", - "description": "The model deployment to be evaluated. Accepts either the deployment name alone or with the connection name as '{connectionName}/'." + "description": "Base model ID for model outputs.", + "readOnly": true + }, + "description": { + "type": "string", + "description": "Output description.", + "readOnly": true } }, - "description": "Configuration of the model used in the insight generation." + "description": "Named output produced by a job." }, - "InsightRequest": { + "JobProperties": { "type": "object", "required": [ - "type" + "jobType" ], "properties": { - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightType" - } - ], - "description": "The type of request." + "jobType": { + "type": "string", + "description": "Job type." } }, "discriminator": { - "propertyName": "type", + "propertyName": "jobType", "mapping": { - "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightRequest", - "AgentClusterInsight": "#/components/schemas/AgentClusterInsightRequest", - "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightRequest" + "Command": "#/components/schemas/CommandJob" } }, - "description": "The request of the insights report." + "description": "Base properties of a Job." }, - "InsightResult": { + "JobResourceConfiguration": { "type": "object", - "required": [ - "type" - ], "properties": { - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/InsightType" - } - ], - "description": "The type of insights result." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "EvaluationComparison": "#/components/schemas/EvaluationComparisonInsightResult", - "EvaluationRunClusterInsight": "#/components/schemas/EvaluationRunClusterInsightResult", - "AgentClusterInsight": "#/components/schemas/AgentClusterInsightResult" + "instanceCount": { + "type": "integer", + "format": "int32", + "description": "Optional number of instances or nodes used by the compute target." + }, + "instanceType": { + "type": "string", + "description": "Optional type of VM used as supported by the compute target." + }, + "properties": { + "type": "object", + "additionalProperties": {}, + "description": "Additional properties bag." + }, + "shmSize": { + "type": "string", + "description": "Size of the docker container's shared memory block. This should be in the format of (number)(unit) where number as to be greater than 0 and the unit can be one of b(bytes), k(kilobytes), m(megabytes), or g(gigabytes)." + }, + "dockerArgs": { + "type": "string", + "description": "Extra arguments to pass to the Docker run command. This would override any parameters that have already been set by the system, or in this section. This parameter is only supported for Azure ML compute types." } }, - "description": "The result of the insights." + "description": "Compute Resource configuration for the job." }, - "InsightSample": { + "JobRun": { "type": "object", "required": [ "id", - "type", - "features", - "correlationInfo" + "jobName" ], "properties": { "id": { "type": "string", - "description": "The unique identifier for the analysis sample." + "description": "The run identifier.", + "readOnly": true }, - "type": { + "jobName": { + "type": "string", + "description": "The job name this run belongs to.", + "readOnly": true + }, + "status": { "allOf": [ { - "$ref": "#/components/schemas/SampleType" + "$ref": "#/components/schemas/JobRunStatus" } ], - "description": "Sample type" + "description": "The run status.", + "readOnly": true }, - "features": { - "type": "object", - "additionalProperties": {}, - "description": "Features to help with additional filtering of data in UX." + "statusReason": { + "type": "string", + "description": "Additional status reason.", + "readOnly": true }, - "correlationInfo": { + "startTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the run started.", + "readOnly": true + }, + "endTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the run ended.", + "readOnly": true + }, + "lastStartTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Most recent time the run started running.", + "readOnly": true + }, + "computeDuration": { + "type": "string", + "format": "duration", + "description": "Total compute duration consumed by the run.", + "readOnly": true + }, + "queueingInfo": { "type": "object", "additionalProperties": {}, - "description": "Info about the correlation for the analysis sample." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "EvaluationResultSample": "#/components/schemas/EvaluationResultSample" - } - }, - "description": "A sample from the analysis." - }, - "InsightScheduleTask": { - "type": "object", - "required": [ - "type", - "insight" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Insight" - ] + "description": "Queueing details associated with the run.", + "readOnly": true }, - "insight": { + "computeDetails": { "allOf": [ { - "$ref": "#/components/schemas/Insight" + "$ref": "#/components/schemas/JobRunComputeDetails" } ], - "description": "The insight payload." + "description": "Compute details associated with the run.", + "readOnly": true + }, + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/JobRunError" + } + ], + "description": "Terminal error for the run, if any.", + "readOnly": true + }, + "warnings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobRunWarning" + }, + "description": "Warnings emitted for the run.", + "readOnly": true + }, + "isCurrent": { + "type": "boolean", + "description": "Whether this run is the current run for the job.", + "readOnly": true } }, - "allOf": [ - { - "$ref": "#/components/schemas/ScheduleTask" - } - ], - "description": "Insight task for the schedule." + "description": "One execution run of a training job." }, - "InsightSummary": { + "JobRunComputeDetails": { "type": "object", - "required": [ - "sampleCount", - "uniqueSubclusterCount", - "uniqueClusterCount", - "method", - "usage" - ], "properties": { - "sampleCount": { - "type": "integer", - "format": "int32", - "description": "Total number of samples analyzed." + "vmSize": { + "type": "string", + "description": "Virtual machine size used for this run attempt.", + "readOnly": true }, - "uniqueSubclusterCount": { + "instanceType": { + "type": "string", + "description": "Instance type used for this run attempt.", + "readOnly": true + }, + "instanceCount": { "type": "integer", "format": "int32", - "description": "Total number of unique subcluster labels." + "description": "Number of instances allocated to this run attempt.", + "readOnly": true }, - "uniqueClusterCount": { + "gpuCount": { "type": "integer", "format": "int32", - "description": "Total number of unique clusters." + "description": "Number of GPUs allocated to this run attempt.", + "readOnly": true }, - "method": { + "region": { "type": "string", - "description": "Method used for clustering." + "description": "Region where this run attempt was placed.", + "readOnly": true }, - "usage": { - "allOf": [ - { - "$ref": "#/components/schemas/ClusterTokenUsage" - } - ], - "description": "Token usage while performing clustering analysis" + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional backend-specific compute placement properties.", + "readOnly": true } }, - "description": "Summary of the error cluster analysis." + "description": "Compute placement details for a job run attempt." }, - "InsightType": { + "JobRunError": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable error code." + }, + "message": { + "type": "string", + "description": "Human-readable error message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional error details." + } + }, + "description": "Error emitted during a job run." + }, + "JobRunStatus": { "anyOf": [ { "type": "string" @@ -19283,57 +26294,36 @@ { "type": "string", "enum": [ - "EvaluationRunClusterInsight", - "AgentClusterInsight", - "EvaluationComparison" + "Queued", + "Running", + "Completed", + "Failed", + "Canceled" ] } ], - "description": "The request of the insights." + "description": "Status of a job execution run." }, - "InsightsMetadata": { + "JobRunWarning": { "type": "object", - "required": [ - "createdAt" - ], "properties": { - "createdAt": { + "code": { "type": "string", - "format": "date-time", - "description": "The timestamp when the insights were created." + "description": "Machine-readable warning code." }, - "completedAt": { + "message": { "type": "string", - "format": "date-time", - "description": "The timestamp when the insights were completed." - } - }, - "description": "Metadata about the insights." - }, - "IsolationKeySource": { - "type": "object", - "required": [ - "kind" - ], - "properties": { - "kind": { - "$ref": "#/components/schemas/IsolationKeySourceKind" - } - }, - "discriminator": { - "propertyName": "kind", - "mapping": { - "Entra": "#/components/schemas/EntraIsolationKeySource", - "Header": "#/components/schemas/HeaderIsolationKeySource" + "description": "Human-readable warning message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional warning details." } }, - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } + "description": "Warning emitted during a job run." }, - "IsolationKeySourceKind": { + "JobType": { "anyOf": [ { "type": "string" @@ -19341,44 +26331,13 @@ { "type": "string", "enum": [ - "Entra", - "Header" + "Command" ] } ], - "x-ms-foundry-meta": { - "required_previews": [ - "AgentEndpoints=V1Preview" - ] - } - }, - "ItemGenerationParams": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/ItemGenerationParamsType" - } - ], - "description": "The type of item generation parameters to use." - } - }, - "discriminator": { - "propertyName": "type", - "mapping": { - "red_team": "#/components/schemas/RedTeamItemGenerationParams", - "red_team_seed_prompts": "#/components/schemas/RedTeamSeedPromptsItemGenerationParams", - "red_team_taxonomy": "#/components/schemas/RedTeamTaxonomyItemGenerationParams", - "response_retrieval": "#/components/schemas/ResponseRetrievalItemGenerationParams" - } - }, - "description": "Represents the set of parameters used to control item generation operations." + "description": "Type of a job." }, - "ItemGenerationParamsType": { + "ListViewType": { "anyOf": [ { "type": "string" @@ -19386,15 +26345,13 @@ { "type": "string", "enum": [ - "red_team", - "response_retrieval", - "red_team_seed_prompts", - "red_team_taxonomy", - "synthetic_data_gen_preview" + "ActiveOnly", + "ArchivedOnly", + "All" ] } ], - "description": "The types of parameters for red team item generation." + "description": "Specifies which jobs to include in a list result based on their lifecycle state." }, "ManagedAgentIdentityBlueprint": { "type": "object", @@ -20297,6 +27254,16 @@ ], "description": "The input definition information for a Microsoft Fabric tool as used to configure an agent." }, + "Mlflow.MlflowPayload": { + "type": "object", + "additionalProperties": {}, + "description": "Generic MLflow compatibility request payload." + }, + "Mlflow.MlflowResponse": { + "type": "object", + "additionalProperties": {}, + "description": "Generic MLflow compatibility response payload." + }, "ModelDeployment": { "type": "object", "required": [ @@ -20448,6 +27415,32 @@ ], "description": "Monthly recurrence schedule." }, + "MpiDistribution": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "enum": [ + "Mpi" + ], + "description": "Specifies the type of distribution framework." + }, + "processCountPerNode": { + "type": "integer", + "format": "int32", + "description": "Number of processes per MPI node." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "MPI distribution configuration." + }, "NoAuthenticationCredentials": { "type": "object", "required": [ @@ -40306,6 +47299,51 @@ ] } }, + "Output": { + "type": "object", + "required": [ + "jobOutputType" + ], + "properties": { + "jobOutputType": { + "allOf": [ + { + "$ref": "#/components/schemas/AssetTypes" + } + ], + "description": "Specifies the type of job output." + }, + "mode": { + "allOf": [ + { + "$ref": "#/components/schemas/InputOutputModes" + } + ], + "description": "Output Asset Delivery Mode." + }, + "assetName": { + "type": "string", + "description": "Name of the output data asset to register." + }, + "assetVersion": { + "type": "string", + "description": "Version of the output data asset to register." + }, + "uri": { + "type": "string", + "description": "Output Asset URI." + }, + "baseModelId": { + "type": "string", + "description": "Base model ID. Applies to safetensors_model outputs." + }, + "description": { + "type": "string", + "description": "Description for the output." + } + }, + "description": "Job output definition." + }, "PageOrder": { "type": "string", "enum": [ @@ -40502,6 +47540,195 @@ }, "description": "Paged collection of Insight items" }, + "PagedJob": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Job" + }, + "description": "The Job items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of Job items" + }, + "PagedJobArtifact": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobArtifact" + }, + "description": "The JobArtifact items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobArtifact items" + }, + "PagedJobArtifactContentInfo": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobArtifactContentInfo" + }, + "description": "The JobArtifactContentInfo items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobArtifactContentInfo items" + }, + "PagedJobMetric": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetric" + }, + "description": "The JobMetric items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetric items" + }, + "PagedJobMetricAggregate": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricAggregate" + }, + "description": "The JobMetricAggregate items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetricAggregate items" + }, + "PagedJobMetricLastValue": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricLastValue" + }, + "description": "The JobMetricLastValue items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetricLastValue items" + }, + "PagedJobMetricPoint": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricPoint" + }, + "description": "The JobMetricPoint items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobMetricPoint items" + }, + "PagedJobOutputReference": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobOutputReference" + }, + "description": "The JobOutputReference items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobOutputReference items" + }, + "PagedJobRun": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobRun" + }, + "description": "The JobRun items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobRun items" + }, "PagedManagedAgentIdentityBlueprint": { "type": "object", "required": [ @@ -40816,6 +48043,42 @@ }, "description": "A record mapping for a single protocol and its version." }, + "PyTorchDistribution": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "enum": [ + "PyTorch" + ], + "description": "Specifies the type of distribution framework." + }, + "processCountPerInstance": { + "type": "integer", + "format": "int32", + "description": "Number of processes per node." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "PyTorch distribution configuration." + }, + "QueueSettings": { + "type": "object", + "properties": { + "jobTier": { + "type": "string", + "description": "Controls the compute job tier." + } + }, + "description": "Queue settings for the job." + }, "RaiConfig": { "type": "object", "required": [ @@ -41976,6 +49239,44 @@ } ] }, + "SystemData": { + "type": "object", + "properties": { + "createdBy": { + "type": "string", + "description": "The identity that created the resource.", + "readOnly": true + }, + "createdByType": { + "type": "string", + "description": "The type of identity that created the resource.", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "The timestamp of resource creation (UTC).", + "readOnly": true + }, + "lastModifiedBy": { + "type": "string", + "description": "The identity that last modified the resource.", + "readOnly": true + }, + "lastModifiedByType": { + "type": "string", + "description": "The type of identity that last modified the resource.", + "readOnly": true + }, + "lastModifiedAt": { + "type": "string", + "format": "date-time", + "description": "The timestamp of resource last modification (UTC).", + "readOnly": true + } + }, + "description": "Metadata pertaining to creation and last modification of the resource." + }, "SystemMessage": { "type": "object", "required": [ @@ -42370,6 +49671,37 @@ ] } }, + "TensorFlowDistribution": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "enum": [ + "TensorFlow" + ], + "description": "Specifies the type of distribution framework." + }, + "workerCount": { + "type": "integer", + "format": "int32", + "description": "Number of workers. If not specified, will default to the instance count." + }, + "parameterServerCount": { + "type": "integer", + "format": "int32", + "description": "Number of parameter server tasks." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "TensorFlow distribution configuration." + }, "ToolCallOutputContent": { "anyOf": [ { @@ -42549,6 +49881,450 @@ ], "description": "Represents a data source for evaluation runs that operate over Agent traces stored in Application Insights." }, + "TrainingAlgorithm": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Sft", + "Dpo", + "Kto", + "Orpo", + "Cpo", + "SimPo", + "Grpo", + "Ppo", + "Rloo", + "ReinforcePp", + "RewardModel" + ] + } + ], + "description": "Training algorithm used by a declarative training job." + }, + "TrainingColumnMapping": { + "type": "object", + "properties": { + "prompt": { + "type": "string", + "description": "Column containing prompts." + }, + "chosen": { + "type": "string", + "description": "Column containing chosen responses for preference training." + }, + "rejected": { + "type": "string", + "description": "Column containing rejected responses for preference training." + }, + "reference": { + "type": "string", + "description": "Column containing reference answers or reward context." + }, + "messages": { + "type": "string", + "description": "Column containing chat messages." + } + }, + "description": "Mapping from logical training fields to columns in the dataset." + }, + "TrainingConfiguration": { + "type": "object", + "required": [ + "algorithm", + "model", + "dataset" + ], + "properties": { + "algorithm": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingAlgorithm" + } + ], + "description": "Training algorithm." + }, + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework. If omitted, the service selects a compatible framework." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "reward": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Reward signal configuration." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "description": "Declarative training recipe. When specified, command must be omitted and environmentImageReference is optional." + }, + "TrainingDataFormatConfiguration": { + "type": "object", + "properties": { + "chatTemplate": { + "allOf": [ + { + "$ref": "#/components/schemas/ChatTemplate" + } + ], + "description": "Built-in chat template to apply to the dataset." + }, + "chatTemplatePath": { + "type": "string", + "description": "Path to a custom chat template relative to the job's code directory." + } + }, + "description": "Formatting options for conversational training data." + }, + "TrainingDatasetConfiguration": { + "type": "object", + "required": [ + "train" + ], + "properties": { + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingColumnMapping" + } + ], + "description": "Mapping from training fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "description": "Dataset configuration for a declarative training job." + }, + "TrainingEntryPointReference": { + "type": "object", + "required": [ + "entryPoint" + ], + "properties": { + "entryPoint": { + "type": "string", + "description": "Path to the Python callable in module/file.py:function format." + } + }, + "description": "Reference to a Python callable relative to the job's code directory." + }, + "TrainingEvalBenchmark": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Gsm8k", + "Mmlu", + "Humaneval", + "Mbpp", + "Arc", + "Hellaswag" + ] + } + ], + "description": "Built-in evaluation benchmark." + }, + "TrainingEvalConfiguration": { + "type": "object", + "properties": { + "benchmark": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalBenchmark" + } + ], + "description": "Named built-in benchmark. Mutually exclusive with dataset." + }, + "dataset": { + "type": "string", + "description": "Custom evaluation dataset asset reference. Mutually exclusive with benchmark." + }, + "everyNSteps": { + "type": "integer", + "format": "int32", + "description": "Evaluation frequency in training steps. Omit for end-of-training only." + } + }, + "description": "Evaluation configuration for a declarative training job." + }, + "TrainingFramework": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Trl", + "Verl", + "OpenRlhf", + "NemoRl", + "Slime", + "TorchForge" + ] + } + ], + "description": "Training framework used to lower a declarative training job into an execution command." + }, + "TrainingInlineFunctionConfiguration": { + "type": "object", + "required": [ + "def" + ], + "properties": { + "def": { + "type": "string", + "description": "Python function definition." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingInlineFunctionRuntime" + } + ], + "description": "Runtime dependencies for the inline function." + } + }, + "description": "Inline Python function definition for custom training logic." + }, + "TrainingInlineFunctionRuntime": { + "type": "object", + "properties": { + "pip": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Pip packages to install before invoking the inline function." + } + }, + "description": "Python runtime dependencies for an inline function." + }, + "TrainingJobService": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Service type.", + "readOnly": true + }, + "port": { + "type": "integer", + "format": "int32", + "description": "Service port.", + "readOnly": true + }, + "status": { + "type": "string", + "description": "Service status.", + "readOnly": true + }, + "error": { + "type": "object", + "additionalProperties": {}, + "description": "Terminal error for the service, if any.", + "readOnly": true + }, + "endpoint": { + "type": "string", + "description": "Service endpoint URI.", + "readOnly": true + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional service properties.", + "readOnly": true + } + }, + "description": "Service endpoint details for a training job." + }, + "TrainingJobServiceCollection": { + "type": "object", + "required": [ + "services" + ], + "properties": { + "services": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TrainingJobService" + }, + "description": "Services keyed by service name.", + "readOnly": true + } + }, + "description": "Services exposed by a training job." + }, + "TrainingLoraConfiguration": { + "type": "object", + "required": [ + "rank" + ], + "properties": { + "rank": { + "type": "integer", + "format": "int32", + "description": "Low-rank dimension." + }, + "alpha": { + "type": "integer", + "format": "int32", + "description": "LoRA scaling factor." + }, + "dropout": { + "type": "number", + "format": "double", + "description": "Dropout applied to adapter inputs.", + "default": 0.05 + }, + "targetModules": { + "type": "string", + "description": "Linear layers that receive adapters. Use 'auto' to let the framework choose defaults.", + "default": "auto" + }, + "quantize": { + "type": "boolean", + "description": "Whether to enable QLoRA 4-bit base weight loading.", + "default": false + } + }, + "description": "LoRA adapter configuration for parameter-efficient fine tuning." + }, + "TrainingRewardConfiguration": { + "type": "object", + "properties": { + "model": { + "type": "string", + "description": "Reward model asset reference." + }, + "function": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEntryPointReference" + } + ], + "description": "Python callable used to compute reward scores." + }, + "inline_function": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingInlineFunctionConfiguration" + } + ], + "description": "Inline Python function used to compute reward scores." + } + }, + "description": "Reward signal configuration for reinforcement or reward model training." + }, + "TrainingRolloutConfiguration": { + "type": "object", + "required": [ + "engine" + ], + "properties": { + "engine": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutEngine" + } + ], + "description": "Rollout inference engine." + }, + "tensorParallelSize": { + "type": "integer", + "format": "int32", + "description": "Tensor parallel size used by the rollout engine.", + "default": 1 + }, + "gpuMemoryUtilization": { + "type": "number", + "format": "double", + "description": "GPU memory utilization target for the rollout engine, between 0.0 and 1.0." + } + }, + "description": "Rollout generation configuration for online reinforcement learning." + }, + "TrainingRolloutEngine": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Vllm", + "Sglang", + "Hf", + "MegatronInference" + ] + } + ], + "description": "Inference engine used for rollout generation during online reinforcement learning." + }, "TreatmentEffectType": { "anyOf": [ { diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp index c900cc58376d..9362b15b255d 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp @@ -573,7 +573,7 @@ model CommandJob extends JobProperties { } @doc("Training job resource.") -@Rest.resource("trainingJobs") +@Rest.resource("training_jobs") model Job { @doc("The name of the training job. This is case-sensitive.") @key("name") diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp index 8479b703df42..3bea98ba0ffe 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp @@ -52,7 +52,7 @@ interface TrainingJobs { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job services are projected from run history service instances." @doc("List service endpoints for the current view of a training job.") @get - @route("/trainingJobs/{jobName}/services") + @route("/training_jobs/{jobName}/services") showServices is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -68,7 +68,7 @@ interface TrainingJobs { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Jobs use Operation-Id based idempotent submission." @doc("Create and execute a model training job.") @post - @route("/trainingJobs") + @route("/training_jobs") create is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -112,11 +112,11 @@ interface TrainingJobs { @tag("TrainingJobs") interface TrainingJobOperations { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Foundry job operations are exposed as data-plane polling routes under trainingJobs." + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Foundry job operations are exposed as data-plane polling routes under training_jobs." #suppress "@azure-tools/typespec-azure-core/no-response-body" "The operation result route can return 202/200 with no body or a terminal operation resource." @doc("Poll the result of an asynchronous training job operation.") @get - @route("/trainingJobs/operations/{operationId}/result") + @route("/training_jobs/operations/{operationId}/result") getOperationResult is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -127,11 +127,11 @@ interface TrainingJobOperations { JobOperationResource | JobOperationAcceptedResponse | Http.OkResponse >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Foundry job operations are exposed as data-plane polling routes under trainingJobs." + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Foundry job operations are exposed as data-plane polling routes under training_jobs." #suppress "@azure-tools/typespec-azure-core/no-response-body" "The operation status route can return 200 with no body or an operation resource." @doc("Poll the status of an asynchronous training job operation.") @get - @route("/trainingJobs/operations/{operationId}/status") + @route("/training_jobs/operations/{operationId}/status") getOperationStatus is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -148,7 +148,7 @@ interface TrainingJobRuns { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job runs are projected from job execution history." @doc("List runs for a training job.") @get - @route("/trainingJobs/{jobName}/runs") + @route("/training_jobs/{jobName}/runs") listRuns is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -164,7 +164,7 @@ interface TrainingJobRuns { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job runs are projected from job execution history." @doc("Get one run for a training job.") @get - @route("/trainingJobs/{jobName}/runs/{runId}") + @route("/training_jobs/{jobName}/runs/{runId}") getRun is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -185,7 +185,7 @@ interface TrainingJobArtifacts { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." @doc("List artifacts for the current view of a training job.") @get - @route("/trainingJobs/{jobName}/artifacts") + @route("/training_jobs/{jobName}/artifacts") listArtifacts is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -201,7 +201,7 @@ interface TrainingJobArtifacts { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." @doc("Get metadata for a training job artifact.") @get - @route("/trainingJobs/{jobName}/artifacts:metadata") + @route("/training_jobs/{jobName}/artifacts:metadata") getArtifactMetadata is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -219,7 +219,7 @@ interface TrainingJobArtifacts { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." @doc("Get download information for a training job artifact.") @get - @route("/trainingJobs/{jobName}/artifacts:contentInfo") + @route("/training_jobs/{jobName}/artifacts:contentInfo") getArtifactContentInfo is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -237,7 +237,7 @@ interface TrainingJobArtifacts { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." @doc("List download information for training job artifacts under a path prefix.") @get - @route("/trainingJobs/{jobName}/artifacts:contentInfoByPrefix") + @route("/training_jobs/{jobName}/artifacts:contentInfoByPrefix") getArtifactContentInfoByPrefix is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -254,7 +254,7 @@ interface TrainingJobArtifacts { #suppress "@azure-tools/typespec-azure-core/byos" "Job artifact content is produced by the job and streamed back to the caller." @doc("Download training job artifact content.") @get - @route("/trainingJobs/{jobName}/artifacts:content") + @route("/training_jobs/{jobName}/artifacts:content") downloadArtifact is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -275,7 +275,7 @@ interface TrainingJobRunArtifacts { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run artifacts are projected from the run data container." @doc("List artifacts for a specific training job run.") @get - @route("/trainingJobs/{jobName}/runs/{runId}/artifacts") + @route("/training_jobs/{jobName}/runs/{runId}/artifacts") listRunArtifacts is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -295,7 +295,7 @@ interface TrainingJobRunArtifacts { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run artifacts are projected from the run data container." @doc("Get metadata for an artifact from a specific training job run.") @get - @route("/trainingJobs/{jobName}/runs/{runId}/artifacts:metadata") + @route("/training_jobs/{jobName}/runs/{runId}/artifacts:metadata") getRunArtifactMetadata is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -317,7 +317,7 @@ interface TrainingJobRunArtifacts { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run artifacts are projected from the run data container." @doc("Get download information for an artifact from a specific training job run.") @get - @route("/trainingJobs/{jobName}/runs/{runId}/artifacts:contentInfo") + @route("/training_jobs/{jobName}/runs/{runId}/artifacts:contentInfo") getRunArtifactContentInfo is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -339,7 +339,7 @@ interface TrainingJobRunArtifacts { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run artifacts are projected from the run data container." @doc("List download information for artifacts under a path prefix from a specific training job run.") @get - @route("/trainingJobs/{jobName}/runs/{runId}/artifacts:contentInfoByPrefix") + @route("/training_jobs/{jobName}/runs/{runId}/artifacts:contentInfoByPrefix") getRunArtifactContentInfoByPrefix is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -360,7 +360,7 @@ interface TrainingJobRunArtifacts { #suppress "@azure-tools/typespec-azure-core/byos" "Job artifact content is produced by the job and streamed back to the caller." @doc("Download artifact content from a specific training job run.") @get - @route("/trainingJobs/{jobName}/runs/{runId}/artifacts:content") + @route("/training_jobs/{jobName}/runs/{runId}/artifacts:content") downloadRunArtifact is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -385,7 +385,7 @@ interface TrainingJobMetrics { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." @doc("List metrics emitted by the current view of a training job.") @get - @route("/trainingJobs/{jobName}/metrics") + @route("/training_jobs/{jobName}/metrics") listMetrics is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -401,7 +401,7 @@ interface TrainingJobMetrics { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." @doc("Get the latest values for metrics emitted by the current view of a training job.") @get - @route("/trainingJobs/{jobName}/metrics:lastValues") + @route("/training_jobs/{jobName}/metrics:lastValues") getMetricLastValues is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -415,7 +415,7 @@ interface TrainingJobMetrics { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." @doc("Get the full history for a training job metric.") @get - @route("/trainingJobs/{jobName}/metrics/{metricName}") + @route("/training_jobs/{jobName}/metrics/{metricName}") getMetric is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -435,7 +435,7 @@ interface TrainingJobMetrics { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." @doc("Get aggregate values for a training job metric.") @get - @route("/trainingJobs/{jobName}/metrics/{metricName}:aggregates") + @route("/training_jobs/{jobName}/metrics/{metricName}:aggregates") getMetricAggregates is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -455,7 +455,7 @@ interface TrainingJobMetrics { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." @doc("Get sampled values for a training job metric.") @get - @route("/trainingJobs/{jobName}/metrics/{metricName}:samples") + @route("/training_jobs/{jobName}/metrics/{metricName}:samples") getMetricSamples is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -475,7 +475,7 @@ interface TrainingJobMetrics { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." @doc("Get one sampled value or window for a training job metric.") @get - @route("/trainingJobs/{jobName}/metrics/{metricName}:sample") + @route("/training_jobs/{jobName}/metrics/{metricName}:sample") getMetricSample is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -498,7 +498,7 @@ interface TrainingJobRunMetrics { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." @doc("List metrics emitted by a specific training job run.") @get - @route("/trainingJobs/{jobName}/runs/{runId}/metrics") + @route("/training_jobs/{jobName}/runs/{runId}/metrics") listRunMetrics is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -518,7 +518,7 @@ interface TrainingJobRunMetrics { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." @doc("Get latest metric values for a specific training job run.") @get - @route("/trainingJobs/{jobName}/runs/{runId}/metrics:lastValues") + @route("/training_jobs/{jobName}/runs/{runId}/metrics:lastValues") getRunMetricLastValues is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -536,7 +536,7 @@ interface TrainingJobRunMetrics { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." @doc("Get the full history for a metric from a specific training job run.") @get - @route("/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}") + @route("/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}") getRunMetric is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -560,7 +560,7 @@ interface TrainingJobRunMetrics { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." @doc("Get aggregate metric values from a specific training job run.") @get - @route("/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:aggregates") + @route("/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:aggregates") getRunMetricAggregates is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -584,7 +584,7 @@ interface TrainingJobRunMetrics { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." @doc("Get sampled metric values from a specific training job run.") @get - @route("/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:samples") + @route("/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:samples") getRunMetricSamples is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -608,7 +608,7 @@ interface TrainingJobRunMetrics { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." @doc("Get one sampled value or window from a specific training job run.") @get - @route("/trainingJobs/{jobName}/runs/{runId}/metrics/{metricName}:sample") + @route("/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:sample") getRunMetricSample is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -635,7 +635,7 @@ interface TrainingJobOutputs { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job outputs are projected from job outputs and asset relationships." @doc("List outputs produced by a training job.") @get - @route("/trainingJobs/{jobName}/outputs") + @route("/training_jobs/{jobName}/outputs") listOutputs is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -650,7 +650,7 @@ interface TrainingJobOutputs { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job outputs are projected from job outputs and asset relationships." @doc("Get one output produced by a training job.") @get - @route("/trainingJobs/{jobName}/outputs/{outputName}") + @route("/training_jobs/{jobName}/outputs/{outputName}") getOutput is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -671,7 +671,7 @@ interface TrainingJobRunOutputs { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run outputs are projected from run output state and asset relationships." @doc("List outputs produced by a specific training job run.") @get - @route("/trainingJobs/{jobName}/runs/{runId}/outputs") + @route("/training_jobs/{jobName}/runs/{runId}/outputs") listRunOutputs is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -690,7 +690,7 @@ interface TrainingJobRunOutputs { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run outputs are projected from run output state and asset relationships." @doc("Get one output produced by a specific training job run.") @get - @route("/trainingJobs/{jobName}/runs/{runId}/outputs/{outputName}") + @route("/training_jobs/{jobName}/runs/{runId}/outputs/{outputName}") getRunOutput is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { From 38f25808940c382f9f2928fb10b9735fa1220baa Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Tue, 5 May 2026 18:05:16 -0700 Subject: [PATCH 14/37] feat(foundry): add managed training and ray contracts Add model-scoped managed training APIs, operation polling, stricter training configuration contracts, and cluster-scoped interactive Ray job creation. Regenerate Foundry OpenAPI output and examples for the new routes. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ai-foundry/data-plane/Foundry/client.tsp | 58 + ...reateInteractiveRayJob_MaximumSet_Gen.json | 46 + ..._CreateGrpoTrainingJob_MaximumSet_Gen.json | 83 + ...s_CreateKtoTrainingJob_MaximumSet_Gen.json | 66 + ...icyGradientTrainingJob_MaximumSet_Gen.json | 77 + ...s_CreatePpoTrainingJob_MaximumSet_Gen.json | 77 + ...ePreferenceTrainingJob_MaximumSet_Gen.json | 71 + ...RewardModelTrainingJob_MaximumSet_Gen.json | 63 + ...s_CreateSftTrainingJob_MaximumSet_Gen.json | 66 + ...rainingOperationResult_MaximumSet_Gen.json | 29 + .../TrainingJobs_Create_MaximumSet_Gen.json | 36 +- .../TrainingJobs_Create_MinimumSet_Gen.json | 4 +- .../ai-foundry/data-plane/Foundry/main.tsp | 2 + .../v1/microsoft-foundry-openapi3.json | 3833 +++++++++++++++-- .../microsoft-foundry-openapi3.json | 3829 ++++++++++++++-- .../Foundry/src/clusters/models.tsp | 21 + .../Foundry/src/clusters/routes.tsp | 32 + .../data-plane/Foundry/src/jobs/models.tsp | 377 +- .../data-plane/Foundry/src/models/models.tsp | 717 +++ .../data-plane/Foundry/src/models/routes.tsp | 162 + 20 files changed, 8882 insertions(+), 767 deletions(-) create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_CreateInteractiveRayJob_MaximumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateGrpoTrainingJob_MaximumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateKtoTrainingJob_MaximumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePolicyGradientTrainingJob_MaximumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePpoTrainingJob_MaximumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePreferenceTrainingJob_MaximumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateRewardModelTrainingJob_MaximumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateSftTrainingJob_MaximumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Models_GetTrainingOperationResult_MaximumSet_Gen.json create mode 100644 specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp create mode 100644 specification/ai-foundry/data-plane/Foundry/src/clusters/routes.tsp create mode 100644 specification/ai-foundry/data-plane/Foundry/src/models/models.tsp create mode 100644 specification/ai-foundry/data-plane/Foundry/src/models/routes.tsp diff --git a/specification/ai-foundry/data-plane/Foundry/client.tsp b/specification/ai-foundry/data-plane/Foundry/client.tsp index c0528751330c..eb232900e0cb 100644 --- a/specification/ai-foundry/data-plane/Foundry/client.tsp +++ b/specification/ai-foundry/data-plane/Foundry/client.tsp @@ -9,10 +9,12 @@ import "./src/evaluation-rules/routes.tsp"; // Stable operation (GA routes) without preview features import "./src/connections/routes.tsp"; +import "./src/clusters/routes.tsp"; import "./src/datasets/routes.tsp"; import "./src/deployments/routes.tsp"; import "./src/indexes/routes.tsp"; import "./src/mlflow/routes.tsp"; +import "./src/models/routes.tsp"; // Beta operations (preview routes, requiring opt-in request header) import "./src/evaluation-taxonomies/routes.tsp"; @@ -172,6 +174,62 @@ using Azure.AI.Projects; @@clientName(Azure.AI.Projects.Insight.id, "insight_id"); @@clientName(InsightsGetParams.id, "insight_id"); +// -------------------------------------------------------------------------------- +// Models sub-client +// -------------------------------------------------------------------------------- + +@@clientName(Models.createSftTrainingJob, "create_sft_training_job", "python"); +@@clientName(Models.createPreferenceTrainingJob, + "create_preference_training_job", + "python" +); +@@clientName(Models.createKtoTrainingJob, "create_kto_training_job", "python"); +@@clientName(Models.createRewardModelTrainingJob, + "create_reward_model_training_job", + "python" +); +@@clientName(Models.createGrpoTrainingJob, + "create_grpo_training_job", + "python" +); +@@clientName(Models.createPolicyGradientTrainingJob, + "create_policy_gradient_training_job", + "python" +); +@@clientName(Models.createPpoTrainingJob, "create_ppo_training_job", "python"); +@@clientName(Models.createSftTrainingJob, "createSftTrainingJob", "javascript"); +@@clientName(Models.createPreferenceTrainingJob, + "createPreferenceTrainingJob", + "javascript" +); +@@clientName(Models.createKtoTrainingJob, "createKtoTrainingJob", "javascript"); +@@clientName(Models.createRewardModelTrainingJob, + "createRewardModelTrainingJob", + "javascript" +); +@@clientName(Models.createGrpoTrainingJob, + "createGrpoTrainingJob", + "javascript" +); +@@clientName(Models.createPolicyGradientTrainingJob, + "createPolicyGradientTrainingJob", + "javascript" +); +@@clientName(Models.createPpoTrainingJob, "createPpoTrainingJob", "javascript"); + +// -------------------------------------------------------------------------------- +// Clusters sub-client +// -------------------------------------------------------------------------------- + +@@clientName(Clusters.createInteractiveRayJob, + "create_interactive_ray_job", + "python" +); +@@clientName(Clusters.createInteractiveRayJob, + "createInteractiveRayJob", + "javascript" +); + // -------------------------------------------------------------------------------- // Datasets sub-client // -------------------------------------------------------------------------------- diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_CreateInteractiveRayJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_CreateInteractiveRayJob_MaximumSet_Gen.json new file mode 100644 index 000000000000..cbd14d4d1615 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_CreateInteractiveRayJob_MaximumSet_Gen.json @@ -0,0 +1,46 @@ +{ + "title": "Clusters_CreateInteractiveRayJob_MaximumSet", + "operationId": "Clusters_createInteractiveRayJob", + "parameters": { + "api-version": "v1", + "Foundry-Features": "Jobs=V1Preview", + "clusterName": "my-cluster", + "Operation-Id": "create-ray-job-01", + "request": { + "name": "ray-job-01", + "displayName": "ray-4node", + "description": "Interactive Ray job (4 nodes)", + "tags": { + "scenario": "interactive-ray" + }, + "instanceCount": 4 + } + }, + "responses": { + "201": { + "body": { + "name": "ray-job-01", + "properties": { + "jobType": "Command", + "displayName": "ray-4node", + "description": "Interactive Ray job (4 nodes)", + "tags": { + "scenario": "interactive-ray" + }, + "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "command": "python -c \"import time; print('Ray cluster ready'); time.sleep(86400)\"", + "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04", + "distribution": { + "distributionType": "Ray", + "port": 6379, + "includeDashboard": true, + "dashboardPort": 8265 + }, + "resources": { + "instanceCount": 4 + } + } + } + } + } +} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateGrpoTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateGrpoTrainingJob_MaximumSet_Gen.json new file mode 100644 index 000000000000..4f808ee105a4 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateGrpoTrainingJob_MaximumSet_Gen.json @@ -0,0 +1,83 @@ +{ + "title": "Models_CreateGrpoTrainingJob_MaximumSet", + "operationId": "Models_createGrpoTrainingJob", + "parameters": { + "api-version": "v1", + "Operation-Id": "create-my-grpo-training-job-01", + "Foundry-Features": "Jobs=V1Preview", + "request": { + "name": "qwen-reasoning-grpo", + "version": "1", + "description": "GRPO model trained for reasoning tasks", + "tags": { + "algorithm": "grpo" + }, + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1", + "eval": "azureai://accounts/my-account/projects/my-project/data/eval-dataset/versions/1", + "columns": { + "prompt": "prompt", + "reference": "reference" + }, + "dataFormat": { + "chatTemplate": "chatml" + } + }, + "runtime": { + "framework": "verl", + "hyperparameters": { + "learning_rate": 0.00001, + "num_generations": 8, + "max_completion_length": 512 + }, + "judge": { + "kind": "inline_function", + "inline_function": { + "def": "def score(samples, **kwargs):\n return [1.0 for _ in samples]", + "runtime": { + "pip": [ + "numpy>=1.26" + ] + } + } + }, + "lora": { + "rank": 16, + "alpha": 32, + "dropout": 0.05, + "targetModules": "auto", + "quantize": true + }, + "rollout": { + "engine": "vllm", + "tensorParallelSize": 2, + "gpuMemoryUtilization": 0.9 + }, + "eval": { + "benchmark": "gsm8k", + "everyNSteps": 100 + } + }, + "compute": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "resources": { + "instanceCount": 4, + "instanceType": "Standard_NC96ads_A100_v4" + }, + "gpuCount": 32 + } + } + }, + "responses": { + "202": { + "headers": { + "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-grpo-training-job-01/result?api-version=v1" + }, + "body": { + "operationId": "create-my-grpo-training-job-01", + "status": "queued" + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateKtoTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateKtoTrainingJob_MaximumSet_Gen.json new file mode 100644 index 000000000000..03027b63196a --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateKtoTrainingJob_MaximumSet_Gen.json @@ -0,0 +1,66 @@ +{ + "title": "Models_CreateKtoTrainingJob_MaximumSet", + "operationId": "Models_createKtoTrainingJob", + "parameters": { + "api-version": "v1", + "Operation-Id": "create-my-kto-training-job-01", + "Foundry-Features": "Jobs=V1Preview", + "request": { + "name": "qwen-feedback-kto", + "version": "1", + "description": "KTO model trained from binary desirability feedback", + "tags": { + "algorithm": "kto" + }, + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "train": "azureai://accounts/my-account/projects/my-project/data/kto-train/versions/1", + "eval": "azureai://accounts/my-account/projects/my-project/data/kto-eval/versions/1", + "columns": { + "prompt": "prompt", + "response": "response", + "label": "is_desirable" + }, + "dataFormat": { + "chatTemplate": "chatml" + } + }, + "runtime": { + "framework": "trl", + "desirableWeight": 1.0, + "undesirableWeight": 1.33, + "hyperparameters": { + "learning_rate": 0.00005, + "beta": 0.1 + }, + "lora": { + "rank": 16, + "alpha": 32, + "targetModules": "auto" + }, + "packaging": { + "mode": "merged_model" + } + }, + "compute": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "resources": { + "instanceCount": 2, + "instanceType": "Standard_NC96ads_A100_v4" + }, + "gpuCount": 16 + } + } + }, + "responses": { + "202": { + "headers": { + "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-kto-training-job-01/result?api-version=v1" + }, + "body": { + "operationId": "create-my-kto-training-job-01", + "status": "queued" + } + } + } +} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePolicyGradientTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePolicyGradientTrainingJob_MaximumSet_Gen.json new file mode 100644 index 000000000000..842b56d4a1f7 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePolicyGradientTrainingJob_MaximumSet_Gen.json @@ -0,0 +1,77 @@ +{ + "title": "Models_CreatePolicyGradientTrainingJob_MaximumSet", + "operationId": "Models_createPolicyGradientTrainingJob", + "parameters": { + "api-version": "v1", + "Operation-Id": "create-my-rloo-training-job-01", + "Foundry-Features": "Jobs=V1Preview", + "request": { + "algorithm": "rloo", + "name": "qwen-rloo-math", + "version": "1", + "description": "RLOO policy model trained with a built-in math verifier", + "tags": { + "algorithm": "rloo" + }, + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "train": "azureai://accounts/my-account/projects/my-project/data/math-prompts-train/versions/1", + "eval": "azureai://accounts/my-account/projects/my-project/data/math-prompts-eval/versions/1", + "columns": { + "prompt": "prompt", + "reference": "answer" + }, + "dataFormat": { + "chatTemplate": "chatml" + } + }, + "runtime": { + "framework": "verl", + "judge": { + "kind": "builtin", + "type": "math_equivalence" + }, + "reference": { + "kind": "base_model" + }, + "rollout": { + "engine": "vllm", + "numGenerations": 8, + "maxCompletionLength": 512, + "temperature": 0.7, + "topP": 0.95, + "batchSize": 64, + "tensorParallelSize": 2 + }, + "hyperparameters": { + "learning_rate": 0.00001, + "kl_coefficient": 0.02 + }, + "lora": { + "rank": 16, + "alpha": 32, + "targetModules": "auto" + } + }, + "compute": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "resources": { + "instanceCount": 4, + "instanceType": "Standard_NC96ads_A100_v4" + }, + "gpuCount": 32 + } + } + }, + "responses": { + "202": { + "headers": { + "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-rloo-training-job-01/result?api-version=v1" + }, + "body": { + "operationId": "create-my-rloo-training-job-01", + "status": "queued" + } + } + } +} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePpoTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePpoTrainingJob_MaximumSet_Gen.json new file mode 100644 index 000000000000..da50edfc81bf --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePpoTrainingJob_MaximumSet_Gen.json @@ -0,0 +1,77 @@ +{ + "title": "Models_CreatePpoTrainingJob_MaximumSet", + "operationId": "Models_createPpoTrainingJob", + "parameters": { + "api-version": "v1", + "Operation-Id": "create-my-ppo-training-job-01", + "Foundry-Features": "Jobs=V1Preview", + "request": { + "name": "qwen-ppo-helpfulness", + "version": "1", + "description": "PPO policy model trained with a reward model judge", + "tags": { + "algorithm": "ppo" + }, + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "train": "azureai://accounts/my-account/projects/my-project/data/helpfulness-prompts-train/versions/1", + "eval": "azureai://accounts/my-account/projects/my-project/data/helpfulness-prompts-eval/versions/1", + "columns": { + "prompt": "prompt", + "reference": "reference" + }, + "dataFormat": { + "chatTemplate": "chatml" + } + }, + "runtime": { + "framework": "open_rlhf", + "judge": { + "kind": "model", + "model": "azureai://accounts/my-account/projects/my-project/models/qwen-helpfulness-reward-model/versions/1" + }, + "reference": { + "kind": "base_model" + }, + "critic": { + "valueLossCoefficient": 0.1, + "gamma": 1.0, + "lambda": 0.95 + }, + "rollout": { + "engine": "vllm", + "numGenerations": 4, + "maxCompletionLength": 512, + "temperature": 0.8, + "topP": 0.95, + "batchSize": 64, + "tensorParallelSize": 2 + }, + "hyperparameters": { + "learning_rate": 0.000005, + "clip_range": 0.2, + "kl_coefficient": 0.02 + } + }, + "compute": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "resources": { + "instanceCount": 4, + "instanceType": "Standard_NC96ads_A100_v4" + }, + "gpuCount": 32 + } + } + }, + "responses": { + "202": { + "headers": { + "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-ppo-training-job-01/result?api-version=v1" + }, + "body": { + "operationId": "create-my-ppo-training-job-01", + "status": "queued" + } + } + } +} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePreferenceTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePreferenceTrainingJob_MaximumSet_Gen.json new file mode 100644 index 000000000000..05b85e1861fe --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePreferenceTrainingJob_MaximumSet_Gen.json @@ -0,0 +1,71 @@ +{ + "title": "Models_CreatePreferenceTrainingJob_MaximumSet", + "operationId": "Models_createPreferenceTrainingJob", + "parameters": { + "api-version": "v1", + "Operation-Id": "create-my-dpo-training-job-01", + "Foundry-Features": "Jobs=V1Preview", + "request": { + "algorithm": "dpo", + "name": "qwen-helpful-dpo", + "version": "1", + "description": "DPO model trained from pairwise preferences", + "tags": { + "algorithm": "dpo" + }, + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "train": "azureai://accounts/my-account/projects/my-project/data/preference-train/versions/1", + "eval": "azureai://accounts/my-account/projects/my-project/data/preference-eval/versions/1", + "columns": { + "prompt": "prompt", + "chosen": "chosen", + "rejected": "rejected" + }, + "dataFormat": { + "chatTemplate": "chatml" + } + }, + "runtime": { + "framework": "trl", + "reference": { + "kind": "base_model" + }, + "hyperparameters": { + "learning_rate": 0.00005, + "beta": 0.1 + }, + "lora": { + "rank": 16, + "alpha": 32, + "targetModules": "auto" + }, + "eval": { + "dataset": "azureai://accounts/my-account/projects/my-project/data/preference-eval/versions/1" + }, + "packaging": { + "mode": "model_and_adapter" + } + }, + "compute": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "resources": { + "instanceCount": 2, + "instanceType": "Standard_NC96ads_A100_v4" + }, + "gpuCount": 16 + } + } + }, + "responses": { + "202": { + "headers": { + "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-dpo-training-job-01/result?api-version=v1" + }, + "body": { + "operationId": "create-my-dpo-training-job-01", + "status": "queued" + } + } + } +} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateRewardModelTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateRewardModelTrainingJob_MaximumSet_Gen.json new file mode 100644 index 000000000000..9490077f4f69 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateRewardModelTrainingJob_MaximumSet_Gen.json @@ -0,0 +1,63 @@ +{ + "title": "Models_CreateRewardModelTrainingJob_MaximumSet", + "operationId": "Models_createRewardModelTrainingJob", + "parameters": { + "api-version": "v1", + "Operation-Id": "create-my-reward-model-training-job-01", + "Foundry-Features": "Jobs=V1Preview", + "request": { + "name": "qwen-helpfulness-reward-model", + "version": "1", + "description": "Reward model trained from pairwise helpfulness preferences", + "tags": { + "algorithm": "reward_model" + }, + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "kind": "pairwise", + "train": "azureai://accounts/my-account/projects/my-project/data/reward-train/versions/1", + "eval": "azureai://accounts/my-account/projects/my-project/data/reward-eval/versions/1", + "columns": { + "prompt": "prompt", + "chosen": "chosen", + "rejected": "rejected" + }, + "dataFormat": { + "chatTemplate": "chatml" + } + }, + "runtime": { + "framework": "trl", + "loss": "bradley_terry", + "hyperparameters": { + "learning_rate": 0.00002, + "num_train_epochs": 2 + }, + "lora": { + "rank": 8, + "alpha": 16, + "targetModules": "auto" + } + }, + "compute": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "resources": { + "instanceCount": 2, + "instanceType": "Standard_NC96ads_A100_v4" + }, + "gpuCount": 16 + } + } + }, + "responses": { + "202": { + "headers": { + "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-reward-model-training-job-01/result?api-version=v1" + }, + "body": { + "operationId": "create-my-reward-model-training-job-01", + "status": "queued" + } + } + } +} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateSftTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateSftTrainingJob_MaximumSet_Gen.json new file mode 100644 index 000000000000..efd61b0b0024 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateSftTrainingJob_MaximumSet_Gen.json @@ -0,0 +1,66 @@ +{ + "title": "Models_CreateSftTrainingJob_MaximumSet", + "operationId": "Models_createSftTrainingJob", + "parameters": { + "api-version": "v1", + "Operation-Id": "create-my-sft-training-job-01", + "Foundry-Features": "Jobs=V1Preview", + "request": { + "name": "qwen-medical-sft", + "version": "1", + "description": "SFT model trained for medical instruction following", + "tags": { + "algorithm": "sft" + }, + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1", + "eval": "azureai://accounts/my-account/projects/my-project/data/eval-dataset/versions/1", + "columns": { + "messages": "messages" + }, + "dataFormat": { + "chatTemplate": "chatml" + } + }, + "runtime": { + "framework": "trl", + "hyperparameters": { + "learning_rate": 0.0001, + "num_train_epochs": 3, + "per_device_train_batch_size": 2 + }, + "lora": { + "rank": 16, + "alpha": 32, + "dropout": 0.05, + "targetModules": "auto", + "quantize": true + }, + "eval": { + "benchmark": "mmlu", + "everyNSteps": 100 + } + }, + "compute": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "resources": { + "instanceCount": 2, + "instanceType": "Standard_NC6s_v3" + }, + "gpuCount": 4 + } + } + }, + "responses": { + "202": { + "headers": { + "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-sft-training-job-01/result?api-version=v1" + }, + "body": { + "operationId": "create-my-sft-training-job-01", + "status": "queued" + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_GetTrainingOperationResult_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_GetTrainingOperationResult_MaximumSet_Gen.json new file mode 100644 index 000000000000..18cc5859deda --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_GetTrainingOperationResult_MaximumSet_Gen.json @@ -0,0 +1,29 @@ +{ + "title": "Models_GetTrainingOperationResult_MaximumSet", + "operationId": "Models_getTrainingOperationResult", + "parameters": { + "api-version": "v1", + "Foundry-Features": "Jobs=V1Preview", + "operationId": "create-my-grpo-training-job-01" + }, + "responses": { + "200": { + "body": { + "operationId": "create-my-grpo-training-job-01", + "status": "succeeded", + "result": { + "id": "azureai://accounts/my-account/projects/my-project/models/qwen-reasoning-grpo/versions/1", + "name": "qwen-reasoning-grpo", + "version": "1", + "description": "GRPO model trained for reasoning tasks", + "tags": { + "algorithm": "grpo" + }, + "uri": "azureml://locations/eastus2/workspaces/00000000-0000-0000-0000-000000000000/models/qwen-reasoning-grpo/versions/1", + "baseModel": "azureai://registries/azureml/models/qwen-base/versions/1", + "trainingJob": "grpo-qwen-reasoning-01" + } + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json index e29ea334d480..fffd6ca3c5fd 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json @@ -20,8 +20,8 @@ "codeId": "azureai://accounts/my-account/projects/my-project/data/my-training-code/versions/1", "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", "training": { - "algorithm": "Grpo", - "framework": "Trl", + "algorithm": "grpo", + "framework": "trl", "model": "azureai://registries/azureml/models/qwen-base/versions/1", "dataset": { "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1", @@ -34,10 +34,16 @@ "messages": "messages" }, "dataFormat": { - "chatTemplate": "Chatml" + "chatTemplate": "chatml" } }, + "hyperparameters": { + "learning_rate": 0.0001, + "num_train_epochs": 3, + "per_device_train_batch_size": 2 + }, "reward": { + "kind": "inline_function", "inline_function": { "def": "def score(samples, **kwargs):\n return [1.0 for _ in samples]", "runtime": { @@ -55,12 +61,12 @@ "quantize": true }, "rollout": { - "engine": "Vllm", + "engine": "vllm", "tensorParallelSize": 2, "gpuMemoryUtilization": 0.9 }, "eval": { - "benchmark": "Gsm8k", + "benchmark": "gsm8k", "everyNSteps": 100 } }, @@ -127,8 +133,10 @@ "codeId": "azureai://accounts/my-account/projects/my-project/data/my-training-code/versions/1", "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", "training": { - "algorithm": "Grpo", - "framework": "Trl", + "algorithm": "grpo", + "framework": "trl", + "resolvedFramework": "trl", + "frameworkVersion": "0.21.0", "model": "azureai://registries/azureml/models/qwen-base/versions/1", "dataset": { "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1", @@ -141,10 +149,16 @@ "messages": "messages" }, "dataFormat": { - "chatTemplate": "Chatml" + "chatTemplate": "chatml" } }, + "hyperparameters": { + "learning_rate": 0.0001, + "num_train_epochs": 3, + "per_device_train_batch_size": 2 + }, "reward": { + "kind": "inline_function", "inline_function": { "def": "def score(samples, **kwargs):\n return [1.0 for _ in samples]", "runtime": { @@ -162,12 +176,12 @@ "quantize": true }, "rollout": { - "engine": "Vllm", + "engine": "vllm", "tensorParallelSize": 2, "gpuMemoryUtilization": 0.9 }, "eval": { - "benchmark": "Gsm8k", + "benchmark": "gsm8k", "everyNSteps": 100 } }, @@ -224,4 +238,4 @@ } } } -} +} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json index a2fc654f4e02..6c74944270ad 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json @@ -9,7 +9,7 @@ "properties": { "jobType": "Command", "training": { - "algorithm": "Sft", + "algorithm": "sft", "model": "azureai://registries/azureml/models/qwen-base/versions/1", "dataset": { "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1" @@ -26,7 +26,7 @@ "properties": { "jobType": "Command", "training": { - "algorithm": "Sft", + "algorithm": "sft", "model": "azureai://registries/azureml/models/qwen-base/versions/1", "dataset": { "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1" diff --git a/specification/ai-foundry/data-plane/Foundry/main.tsp b/specification/ai-foundry/data-plane/Foundry/main.tsp index 8e81db1e4f09..35b6354eb0fc 100644 --- a/specification/ai-foundry/data-plane/Foundry/main.tsp +++ b/specification/ai-foundry/data-plane/Foundry/main.tsp @@ -4,6 +4,7 @@ import "./src/agents-session-files/routes.tsp"; import "./src/agents-invocations/routes.tsp"; import "./src/common/custom-types.tsp"; import "./src/common/service.tsp"; +import "./src/clusters/routes.tsp"; import "./src/connections/routes.tsp"; import "./src/datasets/routes.tsp"; import "./src/deployments/routes.tsp"; @@ -16,6 +17,7 @@ import "./src/insights/routes.tsp"; import "./src/managed-blueprints/routes.tsp"; import "./src/memory-stores/routes.tsp"; import "./src/mlflow/routes.tsp"; +import "./src/models/routes.tsp"; import "./src/openai-conversations/routes.tsp"; import "./src/openai-evaluations/routes.tsp"; import "./src/openai-finetuning/routes.tsp"; diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 430404564c4c..5cf337b2aa48 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -26,6 +26,9 @@ { "name": "Agents" }, + { + "name": "Clusters" + }, { "name": "Connections" }, @@ -53,6 +56,9 @@ { "name": "Memory Stores" }, + { + "name": "Models" + }, { "name": "Conversations" }, @@ -956,348 +962,432 @@ } } }, - "/connections": { - "get": { - "operationId": "Connections_list", - "description": "List all connections in the project, without populating connection credentials", + "/clusters/{clusterName}:create_interactive_ray_job": { + "post": { + "operationId": "Clusters_createInteractiveRayJob", + "description": "Create an interactive Ray command job on a compute cluster.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "connectionType", - "in": "query", - "required": false, - "description": "List connections of this specific type", - "schema": { - "$ref": "#/components/schemas/ConnectionType" - }, - "explode": false - }, - { - "name": "defaultConnection", - "in": "query", - "required": false, - "description": "List connections that are default connections", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "boolean" - }, - "explode": false - }, - { - "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "headers": { - "x-ms-client-request-id": { - "required": false, - "description": "An opaque, globally-unique, client-generated string identifier for the request.", - "schema": { - "$ref": "#/components/schemas/Azure.Core.uuid" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedConnection" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] } - } - }, - "tags": [ - "Connections" - ] - } - }, - "/connections/{name}": { - "get": { - "operationId": "Connections_get", - "description": "Get a connection by name, without populating connection credentials", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "name", + "name": "clusterName", "in": "path", "required": true, - "description": "The friendly name of the connection, provided by the user.", + "description": "The compute cluster name.", "schema": { "type": "string" } }, { - "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "headers": { - "x-ms-client-request-id": { - "required": false, - "description": "An opaque, globally-unique, client-generated string identifier for the request.", - "schema": { - "$ref": "#/components/schemas/Azure.Core.uuid" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Connection" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry interactive Ray job creation.", + "schema": { + "type": "string" } - } - }, - "tags": [ - "Connections" - ] - } - }, - "/connections/{name}/getConnectionWithCredentials": { - "post": { - "operationId": "Connections_getWithCredentials", - "description": "Get a connection by name, with its connection credentials", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "name", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The friendly name of the connection, provided by the user.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } - }, - { - "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" + }, + "explode": false } ], "responses": { - "200": { - "description": "The request has succeeded.", - "headers": { - "x-ms-client-request-id": { - "required": false, - "description": "An opaque, globally-unique, client-generated string identifier for the request.", - "schema": { - "$ref": "#/components/schemas/Azure.Core.uuid" - } - } - }, + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Connection" + "$ref": "#/components/schemas/Job" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Connections" - ] - } - }, - "/datasets": { - "get": { - "operationId": "Datasets_listLatest", - "description": "List the latest version of each DatasetVersion", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - } + "Clusters" ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedDatasetVersion" - } + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InteractiveRayJobCreate" } } }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Datasets" - ] + "description": "Interactive Ray job creation request." + } } }, - "/datasets/{name}/versions": { + "/connections": { "get": { - "operationId": "Datasets_listVersions", - "description": "List all versions of the given DatasetVersion", + "operationId": "Connections_list", + "description": "List all connections in the project, without populating connection credentials", "parameters": [ { "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the resource", + "name": "connectionType", + "in": "query", + "required": false, + "description": "List connections of this specific type", "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedDatasetVersion" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } + "$ref": "#/components/schemas/ConnectionType" }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Datasets" - ] - } - }, - "/datasets/{name}/versions/{version}": { - "get": { - "operationId": "Datasets_getVersion", - "description": "Get the specific version of the DatasetVersion. The service returns 404 Not Found error if the DatasetVersion does not exist.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "explode": false }, { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the resource", + "name": "defaultConnection", + "in": "query", + "required": false, + "description": "List connections that are default connections", "schema": { - "type": "string" - } + "type": "boolean" + }, + "explode": false }, { - "name": "version", - "in": "path", - "required": true, - "description": "The specific version id of the DatasetVersion to retrieve.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" } ], "responses": { "200": { "description": "The request has succeeded.", + "headers": { + "x-ms-client-request-id": { + "required": false, + "description": "An opaque, globally-unique, client-generated string identifier for the request.", + "schema": { + "$ref": "#/components/schemas/Azure.Core.uuid" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DatasetVersion" + "$ref": "#/components/schemas/PagedConnection" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Connections" + ] + } + }, + "/connections/{name}": { + "get": { + "operationId": "Connections_get", + "description": "Get a connection by name, without populating connection credentials", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The friendly name of the connection, provided by the user.", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "headers": { + "x-ms-client-request-id": { + "required": false, + "description": "An opaque, globally-unique, client-generated string identifier for the request.", + "schema": { + "$ref": "#/components/schemas/Azure.Core.uuid" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Connection" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Connections" + ] + } + }, + "/connections/{name}/getConnectionWithCredentials": { + "post": { + "operationId": "Connections_getWithCredentials", + "description": "Get a connection by name, with its connection credentials", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The friendly name of the connection, provided by the user.", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "headers": { + "x-ms-client-request-id": { + "required": false, + "description": "An opaque, globally-unique, client-generated string identifier for the request.", + "schema": { + "$ref": "#/components/schemas/Azure.Core.uuid" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Connection" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Connections" + ] + } + }, + "/datasets": { + "get": { + "operationId": "Datasets_listLatest", + "description": "List the latest version of each DatasetVersion", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedDatasetVersion" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Datasets" + ] + } + }, + "/datasets/{name}/versions": { + "get": { + "operationId": "Datasets_listVersions", + "description": "List all versions of the given DatasetVersion", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the resource", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedDatasetVersion" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Datasets" + ] + } + }, + "/datasets/{name}/versions/{version}": { + "get": { + "operationId": "Datasets_getVersion", + "description": "Get the specific version of the DatasetVersion. The service returns 404 Not Found error if the DatasetVersion does not exist.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the resource", + "schema": { + "type": "string" + } + }, + { + "name": "version", + "in": "path", + "required": true, + "description": "The specific version id of the DatasetVersion to retrieve.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DatasetVersion" } } } @@ -7084,6 +7174,665 @@ } } }, + "/models/operations/{operationId}/result": { + "get": { + "operationId": "Models_getTrainingOperationResult", + "description": "Poll the result of a managed model training operation.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "operationId", + "in": "path", + "required": true, + "description": "The managed model training operation identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ] + } + }, + "/models:create_grpo_training_job": { + "post": { + "operationId": "Models_createGrpoTrainingJob", + "description": "Create a model by running managed GRPO training.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry managed model training.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GrpoModelTrainingJobCreate" + } + } + }, + "description": "The managed GRPO model training request." + } + } + }, + "/models:create_kto_training_job": { + "post": { + "operationId": "Models_createKtoTrainingJob", + "description": "Create a model by running managed KTO training.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry managed model training.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/KtoModelTrainingJobCreate" + } + } + }, + "description": "The managed KTO model training request." + } + } + }, + "/models:create_policy_gradient_training_job": { + "post": { + "operationId": "Models_createPolicyGradientTrainingJob", + "description": "Create a model by running managed online policy-gradient training.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry managed model training.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PolicyGradientModelTrainingJobCreate" + } + } + }, + "description": "The managed online policy-gradient model training request." + } + } + }, + "/models:create_ppo_training_job": { + "post": { + "operationId": "Models_createPpoTrainingJob", + "description": "Create a model by running managed PPO training.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry managed model training.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PpoModelTrainingJobCreate" + } + } + }, + "description": "The managed PPO model training request." + } + } + }, + "/models:create_preference_training_job": { + "post": { + "operationId": "Models_createPreferenceTrainingJob", + "description": "Create a model by running managed pairwise preference training.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry managed model training.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PreferenceModelTrainingJobCreate" + } + } + }, + "description": "The managed pairwise preference model training request." + } + } + }, + "/models:create_reward_model_training_job": { + "post": { + "operationId": "Models_createRewardModelTrainingJob", + "description": "Create a reward model by running managed reward-model training.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry managed model training.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RewardModelTrainingJobCreate" + } + } + }, + "description": "The managed reward-model training request." + } + } + }, + "/models:create_sft_training_job": { + "post": { + "operationId": "Models_createSftTrainingJob", + "description": "Create a model by running managed supervised fine-tuning.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry managed model training.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SftModelTrainingJobCreate" + } + } + }, + "description": "The managed SFT model training request." + } + } + }, "/openai/v1/conversations": { "post": { "operationId": "createConversation", @@ -16756,6 +17505,27 @@ }, "description": "A base class for connection credentials" }, + "BaseModelReferenceConfiguration": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "base_model" + ], + "description": "Reference policy kind, always 'base_model'." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingReferenceConfiguration" + } + ], + "description": "Use the submitted base model as the reference policy." + }, "BenchmarkName": { "anyOf": [ { @@ -17431,10 +18201,10 @@ { "type": "string", "enum": [ - "Chatml", + "chatml", "llama-3", - "Zephyr", - "Gemma", + "zephyr", + "gemma", "phi-3" ] } @@ -17907,6 +18677,43 @@ ], "description": "CosmosDB Vector Store Index Definition" }, + "CpoTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "cpo" + ], + "description": "Training algorithm, always 'cpo'." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Contrastive preference optimization training recipe." + }, "CreateAgentFromManifestRequest": { "type": "object", "required": [ @@ -18729,10 +19536,48 @@ "mapping": { "PyTorch": "#/components/schemas/PyTorchDistribution", "Mpi": "#/components/schemas/MpiDistribution", - "TensorFlow": "#/components/schemas/TensorFlowDistribution" + "TensorFlow": "#/components/schemas/TensorFlowDistribution", + "Ray": "#/components/schemas/RayDistribution" } }, - "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, Ray, or null." + }, + "DpoTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "dpo" + ], + "description": "Training algorithm, always 'dpo'." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Direct preference optimization training recipe." }, "EntraIDCredentials": { "type": "object", @@ -20363,6 +21208,32 @@ }, "description": "Evaluator Definition" }, + "ExplicitModelReferenceConfiguration": { + "type": "object", + "required": [ + "kind", + "model" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "model" + ], + "description": "Reference policy kind, always 'model'." + }, + "model": { + "type": "string", + "description": "Reference model asset URI." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingReferenceConfiguration" + } + ], + "description": "Use an explicit model as the reference policy." + }, "FabricDataAgentToolCall": { "type": "object", "required": [ @@ -20568,6 +21439,240 @@ }, "description": "Details of a function tool call." }, + "GrpoModelTrainingJobCreate": { + "type": "object", + "required": [ + "model", + "dataset", + "runtime", + "compute" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional name of the model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed GRPO." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "description": "Request body for creating a managed GRPO training job from a base model." + }, + "GrpoTrainingColumnMapping": { + "type": "object", + "required": [ + "prompt" + ], + "properties": { + "prompt": { + "type": "string", + "description": "Column containing prompts for rollout generation." + }, + "reference": { + "type": "string", + "description": "Column containing reference answers or reward context passed to the judge." + } + }, + "description": "Column mapping for managed GRPO datasets. The training dataset must contain prompts; reference answers or reward context can be passed to the judge." + }, + "GrpoTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm", + "reward" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "grpo" + ], + "description": "Training algorithm, always 'grpo'." + }, + "reward": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Reward signal configuration." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Group relative policy optimization training recipe." + }, + "GrpoTrainingDatasetConfiguration": { + "type": "object", + "required": [ + "train", + "columns" + ], + "properties": { + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingColumnMapping" + } + ], + "description": "Mapping from GRPO training fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "description": "Dataset configuration for managed GRPO training." + }, + "GrpoTrainingRuntimeConfiguration": { + "type": "object", + "required": [ + "judge" + ], + "properties": { + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework implementation. If omitted, the service selects a compatible framework." + }, + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters passed through to the selected framework." + }, + "judge": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Judge used to score generated completions during GRPO training." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + }, + "reference": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingReferenceConfiguration" + } + ], + "description": "Reference policy used for KL anchoring." + }, + "packaging": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingConfiguration" + } + ], + "description": "Model artifact packaging options." + } + }, + "description": "Runtime options for managed GRPO training." + }, "HostedAgentDefinition": { "type": "object", "required": [ @@ -21156,6 +22261,39 @@ }, "description": "Metadata about the insights." }, + "InteractiveRayJobCreate": { + "type": "object", + "required": [ + "instanceCount" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional job name. If omitted, the service uses the Operation-Id header or generates one." + }, + "displayName": { + "type": "string", + "description": "Optional display name for the generated Ray job." + }, + "description": { + "type": "string", + "description": "Optional description for the generated Ray job." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags to attach to the generated Ray job." + }, + "instanceCount": { + "type": "integer", + "format": "int32", + "description": "Number of compute nodes to reserve for the interactive Ray session." + } + }, + "description": "Request body for creating an interactive Ray command job on a compute cluster." + }, "ItemGenerationParams": { "type": "object", "required": [ @@ -21913,6 +23051,211 @@ ], "description": "Type of a job." }, + "KtoFeedbackColumnMapping": { + "type": "object", + "required": [ + "prompt", + "response", + "label" + ], + "properties": { + "prompt": { + "type": "string", + "description": "Column containing prompts." + }, + "response": { + "type": "string", + "description": "Column containing responses." + }, + "label": { + "type": "string", + "description": "Column containing the binary desirability label." + } + }, + "description": "Column mapping for KTO feedback datasets." + }, + "KtoModelTrainingJobCreate": { + "type": "object", + "required": [ + "model", + "dataset", + "compute" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional name of the model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/KtoTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/KtoTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed KTO." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "description": "Request body for creating a managed KTO training job from a base model." + }, + "KtoTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "kto" + ], + "description": "Training algorithm, always 'kto'." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Kahneman-Tversky optimization training recipe." + }, + "KtoTrainingDatasetConfiguration": { + "type": "object", + "required": [ + "train", + "columns" + ], + "properties": { + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/KtoFeedbackColumnMapping" + } + ], + "description": "Mapping from KTO fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "description": "Dataset configuration for managed KTO training." + }, + "KtoTrainingRuntimeConfiguration": { + "type": "object", + "properties": { + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework implementation. If omitted, the service selects a compatible framework." + }, + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters passed through to the selected framework." + }, + "desirableWeight": { + "type": "number", + "format": "double", + "description": "Weight applied to desirable examples." + }, + "undesirableWeight": { + "type": "number", + "format": "double", + "description": "Weight applied to undesirable examples." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + }, + "packaging": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingConfiguration" + } + ], + "description": "Model artifact packaging options." + } + }, + "description": "Runtime options for managed KTO training." + }, "ListViewType": { "anyOf": [ { @@ -22711,6 +24054,59 @@ "additionalProperties": {}, "description": "Generic MLflow compatibility response payload." }, + "Model": { + "type": "object", + "required": [ + "name", + "version" + ], + "properties": { + "id": { + "type": "string", + "description": "Asset ID, a unique identifier for the model asset.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "The name of the model asset.", + "readOnly": true + }, + "version": { + "type": "string", + "description": "The version of the model asset.", + "readOnly": true + }, + "description": { + "type": "string", + "description": "The model asset description text.", + "readOnly": true + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tags associated with the model asset.", + "readOnly": true + }, + "uri": { + "type": "string", + "description": "URI of the registered model artifact.", + "readOnly": true + }, + "baseModel": { + "type": "string", + "description": "Base model used to create this model, when the model was produced by managed training.", + "readOnly": true + }, + "trainingJob": { + "type": "string", + "description": "Backing training job that produced this model, when available.", + "readOnly": true + } + }, + "description": "Model asset produced by managed model training." + }, "ModelDeployment": { "type": "object", "required": [ @@ -22832,6 +24228,146 @@ }, "description": "Represents a set of parameters used to control the sampling behavior of a language model during text generation." }, + "ModelTrainingComputeConfiguration": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "Compute resource ID used to run the managed training job." + }, + "resources": { + "allOf": [ + { + "$ref": "#/components/schemas/JobResourceConfiguration" + } + ], + "description": "Compute resource configuration for the managed training job." + }, + "gpuCount": { + "type": "integer", + "format": "int32", + "description": "Number of GPUs requested by the managed training job." + }, + "distribution": { + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "Distribution configuration for the managed training job." + }, + "queueSettings": { + "allOf": [ + { + "$ref": "#/components/schemas/QueueSettings" + } + ], + "description": "Queue settings for the managed training job." + }, + "userAssignedIdentityId": { + "type": "string", + "description": "ARM resource ID of a user-assigned managed identity attached to the Foundry project." + } + }, + "description": "Compute placement for a managed model training job." + }, + "ModelTrainingOperation": { + "type": "object", + "required": [ + "operationId", + "status" + ], + "properties": { + "operationId": { + "type": "string", + "description": "Operation identifier for the managed model training request." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingOperationStatus" + } + ], + "description": "Managed model training operation status." + }, + "result": { + "allOf": [ + { + "$ref": "#/components/schemas/Model" + } + ], + "description": "The model produced by managed training when the operation succeeds." + }, + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Error" + } + ], + "description": "Error object that describes the failure when status is 'failed'." + } + }, + "description": "Status resource for a managed model training operation." + }, + "ModelTrainingOperationStatus": { + "type": "string", + "enum": [ + "queued", + "in_progress", + "succeeded", + "failed", + "canceled" + ], + "description": "Status of a managed model training operation." + }, + "ModelTrainingPackagingConfiguration": { + "type": "object", + "properties": { + "mode": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingMode" + } + ], + "description": "How the trained model artifact should be packaged.", + "default": "merged_model" + } + }, + "description": "Model artifact packaging options." + }, + "ModelTrainingPackagingMode": { + "type": "string", + "enum": [ + "merged_model", + "adapter", + "model_and_adapter" + ], + "description": "Output packaging for a managed model training job." + }, + "ModelTrainingReferenceConfiguration": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "type": "string", + "description": "Reference policy kind." + } + }, + "discriminator": { + "propertyName": "kind", + "mapping": { + "base_model": "#/components/schemas/BaseModelReferenceConfiguration", + "model": "#/components/schemas/ExplicitModelReferenceConfiguration", + "none": "#/components/schemas/NoReferenceConfiguration" + } + }, + "description": "Reference policy used for preference optimization or online reinforcement training." + }, "MonthlyRecurrenceSchedule": { "type": "object", "required": [ @@ -22910,6 +24446,27 @@ ], "description": "Credentials that do not require authentication" }, + "NoReferenceConfiguration": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "none" + ], + "description": "Reference policy kind, always 'none'." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingReferenceConfiguration" + } + ], + "description": "Disable reference policy or KL anchoring." + }, "OAuthConsentRequestOutputItem": { "type": "object", "required": [ @@ -42679,6 +44236,43 @@ ], "description": "The output of an OpenAPI tool call." }, + "OrpoTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "orpo" + ], + "description": "Training algorithm, always 'orpo'." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Odds ratio preference optimization training recipe." + }, "Output": { "type": "object", "required": [ @@ -43151,6 +44745,110 @@ }, "description": "Paged collection of ScheduleRun items" }, + "PairwisePreferenceColumnMapping": { + "type": "object", + "required": [ + "prompt", + "chosen", + "rejected" + ], + "properties": { + "prompt": { + "type": "string", + "description": "Column containing prompts." + }, + "chosen": { + "type": "string", + "description": "Column containing the preferred response." + }, + "rejected": { + "type": "string", + "description": "Column containing the rejected response." + } + }, + "description": "Column mapping for pairwise preference datasets." + }, + "PairwisePreferenceDatasetConfiguration": { + "type": "object", + "required": [ + "train", + "columns" + ], + "properties": { + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/PairwisePreferenceColumnMapping" + } + ], + "description": "Mapping from pairwise preference fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "description": "Dataset configuration for managed pairwise preference training." + }, + "PairwiseRewardModelTrainingDatasetConfiguration": { + "type": "object", + "required": [ + "kind", + "train", + "columns" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "pairwise" + ], + "description": "Reward-model dataset kind, always 'pairwise'." + }, + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/PairwisePreferenceColumnMapping" + } + ], + "description": "Mapping from pairwise preference fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/RewardModelTrainingDatasetConfiguration" + } + ], + "description": "Pairwise preference dataset for managed reward-model training." + }, "PendingUploadRequest": { "type": "object", "required": [ @@ -43204,10 +44902,502 @@ "enum": [ "BlobReference" ], - "description": "BlobReference is the only supported type" + "description": "BlobReference is the only supported type" + } + }, + "description": "Represents the response for a pending upload request" + }, + "PolicyGradientModelTrainingJobCreate": { + "type": "object", + "required": [ + "algorithm", + "model", + "dataset", + "runtime", + "compute" + ], + "properties": { + "algorithm": { + "allOf": [ + { + "$ref": "#/components/schemas/PolicyGradientTrainingAlgorithm" + } + ], + "description": "Policy-gradient algorithm to run." + }, + "name": { + "type": "string", + "description": "Optional name of the model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/PolicyGradientTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed online policy-gradient training." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "description": "Request body for creating a managed online policy-gradient training job from a base model." + }, + "PolicyGradientTrainingAlgorithm": { + "type": "string", + "enum": [ + "rloo", + "reinforce_pp" + ], + "description": "Policy-gradient algorithm used by managed online reinforcement training." + }, + "PolicyGradientTrainingRuntimeConfiguration": { + "type": "object", + "required": [ + "judge", + "rollout" + ], + "properties": { + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework implementation. If omitted, the service selects a compatible framework." + }, + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters passed through to the selected framework." + }, + "judge": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Judge used to score generated completions during online training." + }, + "reference": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingReferenceConfiguration" + } + ], + "description": "Reference policy used for KL anchoring." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + }, + "packaging": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingConfiguration" + } + ], + "description": "Model artifact packaging options." + } + }, + "description": "Runtime options for managed online policy-gradient training." + }, + "PpoCriticConfiguration": { + "type": "object", + "properties": { + "model": { + "type": "string", + "description": "Optional critic model asset reference. If omitted, the service initializes the critic from the policy model." + }, + "valueLossCoefficient": { + "type": "number", + "format": "double", + "description": "Value loss coefficient." + }, + "gamma": { + "type": "number", + "format": "double", + "description": "GAE discount factor." + }, + "lambda": { + "type": "number", + "format": "double", + "description": "GAE lambda." + } + }, + "description": "Critic or value model configuration for managed PPO training." + }, + "PpoModelTrainingJobCreate": { + "type": "object", + "required": [ + "model", + "dataset", + "runtime", + "compute" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional name of the model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/PpoTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed PPO." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "description": "Request body for creating a managed PPO training job from a base model." + }, + "PpoTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm", + "reward" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "ppo" + ], + "description": "Training algorithm, always 'ppo'." + }, + "reward": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Reward signal configuration." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Proximal policy optimization training recipe." + }, + "PpoTrainingRuntimeConfiguration": { + "type": "object", + "required": [ + "judge", + "rollout" + ], + "properties": { + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework implementation. If omitted, the service selects a compatible framework." + }, + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters passed through to the selected framework." + }, + "judge": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Judge used to score generated completions during PPO training." + }, + "reference": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingReferenceConfiguration" + } + ], + "description": "Reference policy used for KL anchoring." + }, + "critic": { + "allOf": [ + { + "$ref": "#/components/schemas/PpoCriticConfiguration" + } + ], + "description": "Critic or value model configuration." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + }, + "packaging": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingConfiguration" + } + ], + "description": "Model artifact packaging options." + } + }, + "description": "Runtime options for managed PPO training." + }, + "PreferenceModelTrainingJobCreate": { + "type": "object", + "required": [ + "algorithm", + "model", + "dataset", + "compute" + ], + "properties": { + "algorithm": { + "allOf": [ + { + "$ref": "#/components/schemas/PreferenceTrainingAlgorithm" + } + ], + "description": "Preference optimization algorithm to run." + }, + "name": { + "type": "string", + "description": "Optional name of the model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/PairwisePreferenceDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/PreferenceTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed pairwise preference training." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "description": "Request body for creating a managed pairwise preference training job from a base model." + }, + "PreferenceTrainingAlgorithm": { + "type": "string", + "enum": [ + "dpo", + "orpo", + "cpo", + "simpo" + ], + "description": "Preference optimization algorithm used by managed pairwise preference training." + }, + "PreferenceTrainingRuntimeConfiguration": { + "type": "object", + "properties": { + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework implementation. If omitted, the service selects a compatible framework." + }, + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters passed through to the selected framework." + }, + "reference": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingReferenceConfiguration" + } + ], + "description": "Reference policy used by algorithms that require KL anchoring or a reference model." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + }, + "packaging": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingConfiguration" + } + ], + "description": "Model artifact packaging options." } }, - "description": "Represents the response for a pending upload request" + "description": "Runtime options for managed pairwise preference training." }, "PromptAgentDefinition": { "type": "object", @@ -43404,6 +45594,53 @@ }, "description": "Configuration for Responsible AI (RAI) content filtering and safety features." }, + "RayDistribution": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "enum": [ + "Ray" + ], + "description": "Specifies the type of distribution framework." + }, + "port": { + "type": "integer", + "format": "int32", + "description": "The port of the head Ray process." + }, + "address": { + "type": "string", + "description": "The address of the Ray head node." + }, + "includeDashboard": { + "type": "boolean", + "description": "Whether to start the Ray dashboard GUI." + }, + "dashboardPort": { + "type": "integer", + "format": "int32", + "description": "The port to bind the dashboard server to." + }, + "headNodeAdditionalArgs": { + "type": "string", + "description": "Additional arguments passed to ray start on the head node." + }, + "workerNodeAdditionalArgs": { + "type": "string", + "description": "Additional arguments passed to ray start on worker nodes." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "Ray distribution configuration." + }, "RecurrenceSchedule": { "type": "object", "required": [ @@ -43733,6 +45970,60 @@ ], "description": "Represents the parameters for red team taxonomy item generation." }, + "ReinforcePpTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm", + "reward" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "reinforce_pp" + ], + "description": "Training algorithm, always 'reinforce_pp'." + }, + "reward": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Reward signal configuration." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "REINFORCE++ training recipe." + }, "ResponseRetrievalItemGenerationParams": { "type": "object", "required": [ @@ -43780,6 +46071,187 @@ ], "description": "Represents the parameters for response retrieval item generation." }, + "RewardModelTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "reward_model" + ], + "description": "Training algorithm, always 'reward_model'." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Reward model training recipe." + }, + "RewardModelTrainingDatasetConfiguration": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "type": "string", + "description": "Reward-model dataset kind." + } + }, + "discriminator": { + "propertyName": "kind", + "mapping": { + "pairwise": "#/components/schemas/PairwiseRewardModelTrainingDatasetConfiguration", + "scored": "#/components/schemas/ScoredRewardModelTrainingDatasetConfiguration" + } + }, + "description": "Dataset configuration for managed reward-model training." + }, + "RewardModelTrainingJobCreate": { + "type": "object", + "required": [ + "model", + "dataset", + "compute" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional name of the reward model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the reward model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the reward model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the reward model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/RewardModelTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/RewardModelTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed reward-model training." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "description": "Request body for creating a managed reward-model training job from a base model." + }, + "RewardModelTrainingLoss": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "bradley_terry", + "regression" + ] + } + ], + "description": "Loss function used for reward-model training." + }, + "RewardModelTrainingRuntimeConfiguration": { + "type": "object", + "properties": { + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework implementation. If omitted, the service selects a compatible framework." + }, + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters passed through to the selected framework." + }, + "loss": { + "allOf": [ + { + "$ref": "#/components/schemas/RewardModelTrainingLoss" + } + ], + "description": "Loss function used for reward-model training." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + }, + "packaging": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingConfiguration" + } + ], + "description": "Model artifact packaging options." + } + }, + "description": "Runtime options for managed reward-model training." + }, "RiskCategory": { "anyOf": [ { @@ -43803,6 +46275,60 @@ ], "description": "Risk category for the attack objective." }, + "RlooTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm", + "reward" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "rloo" + ], + "description": "Training algorithm, always 'rloo'." + }, + "reward": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Reward signal configuration." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "REINFORCE leave-one-out training recipe." + }, "SASCredentials": { "type": "object", "required": [ @@ -44051,6 +46577,261 @@ ], "description": "Type of the task." }, + "ScoredRewardModelColumnMapping": { + "type": "object", + "required": [ + "prompt", + "response", + "score" + ], + "properties": { + "prompt": { + "type": "string", + "description": "Column containing prompts." + }, + "response": { + "type": "string", + "description": "Column containing responses." + }, + "score": { + "type": "string", + "description": "Column containing numeric reward scores." + } + }, + "description": "Column mapping for scored reward-model datasets." + }, + "ScoredRewardModelTrainingDatasetConfiguration": { + "type": "object", + "required": [ + "kind", + "train", + "columns" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "scored" + ], + "description": "Reward-model dataset kind, always 'scored'." + }, + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/ScoredRewardModelColumnMapping" + } + ], + "description": "Mapping from scored response fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/RewardModelTrainingDatasetConfiguration" + } + ], + "description": "Scored response dataset for managed reward-model training." + }, + "SftModelTrainingJobCreate": { + "type": "object", + "required": [ + "model", + "dataset", + "compute" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional name of the model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/SftTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/SftTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed SFT." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "description": "Request body for creating a managed SFT training job from a base model." + }, + "SftTrainingColumnMapping": { + "type": "object", + "required": [ + "messages" + ], + "properties": { + "messages": { + "type": "string", + "description": "Column containing chat messages used for supervised fine tuning." + } + }, + "description": "Column mapping for managed SFT datasets. The training dataset must contain chat messages for each training example." + }, + "SftTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "sft" + ], + "description": "Training algorithm, always 'sft'." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Supervised fine-tuning recipe." + }, + "SftTrainingDatasetConfiguration": { + "type": "object", + "required": [ + "train", + "columns" + ], + "properties": { + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/SftTrainingColumnMapping" + } + ], + "description": "Mapping from SFT training fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "description": "Dataset configuration for managed supervised fine tuning." + }, + "SftTrainingRuntimeConfiguration": { + "type": "object", + "properties": { + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework implementation. If omitted, the service selects a compatible framework." + }, + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters passed through to the selected framework." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + }, + "packaging": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingConfiguration" + } + ], + "description": "Model artifact packaging options." + } + }, + "description": "Runtime options for managed supervised fine tuning." + }, "SharepointGroundingToolCall": { "type": "object", "required": [ @@ -44192,6 +46973,43 @@ ], "description": "The input definition information for a sharepoint tool as used to configure an agent." }, + "SimPoTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "simpo" + ], + "description": "Training algorithm, always 'simpo'." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Simple preference optimization training recipe." + }, "SkillObject": { "type": "object", "required": [ @@ -44900,22 +47718,74 @@ { "type": "string", "enum": [ - "Sft", - "Dpo", - "Kto", - "Orpo", - "Cpo", - "SimPo", - "Grpo", - "Ppo", - "Rloo", - "ReinforcePp", - "RewardModel" + "sft", + "dpo", + "kto", + "orpo", + "cpo", + "simpo", + "grpo", + "ppo", + "rloo", + "reinforce_pp", + "reward_model" ] } ], "description": "Training algorithm used by a declarative training job." }, + "TrainingBuiltinRewardConfiguration": { + "type": "object", + "required": [ + "kind", + "type" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "builtin" + ], + "description": "Reward or judge signal kind, always 'builtin'." + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingBuiltinRewardType" + } + ], + "description": "Built-in reward or verifier type." + }, + "configuration": { + "type": "object", + "additionalProperties": {}, + "description": "Optional verifier configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Built-in reward or verifier used as a judge." + }, + "TrainingBuiltinRewardType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "exact_match", + "regex", + "math_equivalence", + "unit_tests" + ] + } + ], + "description": "Built-in reward or verifier type." + }, "TrainingColumnMapping": { "type": "object", "properties": { @@ -44942,6 +47812,35 @@ }, "description": "Mapping from logical training fields to columns in the dataset." }, + "TrainingCompositeRewardConfiguration": { + "type": "object", + "required": [ + "kind", + "rewards" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "composite" + ], + "description": "Reward or judge signal kind, always 'composite'." + }, + "rewards": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TrainingWeightedRewardConfiguration" + }, + "description": "Weighted reward signals to combine." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Composite reward or judge made from multiple weighted reward signals." + }, "TrainingConfiguration": { "type": "object", "required": [ @@ -44964,51 +47863,54 @@ "$ref": "#/components/schemas/TrainingFramework" } ], - "description": "Training framework. If omitted, the service selects a compatible framework." + "description": "Training framework implementation. If omitted, the service selects a compatible framework for the algorithm and records the resolved framework on the job." }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, - "dataset": { + "resolvedFramework": { "allOf": [ { - "$ref": "#/components/schemas/TrainingDatasetConfiguration" + "$ref": "#/components/schemas/TrainingFramework" } ], - "description": "Training and optional evaluation datasets." + "description": "Training framework resolved by the service.", + "readOnly": true }, - "reward": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingRewardConfiguration" - } - ], - "description": "Reward signal configuration." + "frameworkVersion": { + "type": "string", + "description": "Version of the resolved training framework used by the service.", + "readOnly": true }, - "lora": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingLoraConfiguration" - } - ], - "description": "LoRA adapter configuration." + "model": { + "type": "string", + "description": "Base model asset reference." }, - "rollout": { + "dataset": { "allOf": [ { - "$ref": "#/components/schemas/TrainingRolloutConfiguration" + "$ref": "#/components/schemas/TrainingDatasetConfiguration" } ], - "description": "Rollout generation configuration." + "description": "Training and optional evaluation datasets." }, - "eval": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingEvalConfiguration" - } - ], - "description": "Evaluation configuration." + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters. Strongly typed SDK helpers may project common hyperparameters into richer language-specific types." + } + }, + "discriminator": { + "propertyName": "algorithm", + "mapping": { + "sft": "#/components/schemas/SftTrainingConfiguration", + "dpo": "#/components/schemas/DpoTrainingConfiguration", + "kto": "#/components/schemas/KtoTrainingConfiguration", + "orpo": "#/components/schemas/OrpoTrainingConfiguration", + "cpo": "#/components/schemas/CpoTrainingConfiguration", + "simpo": "#/components/schemas/SimPoTrainingConfiguration", + "grpo": "#/components/schemas/GrpoTrainingConfiguration", + "ppo": "#/components/schemas/PpoTrainingConfiguration", + "rloo": "#/components/schemas/RlooTrainingConfiguration", + "reinforce_pp": "#/components/schemas/ReinforcePpTrainingConfiguration", + "reward_model": "#/components/schemas/RewardModelTrainingConfiguration" } }, "description": "Declarative training recipe. When specified, command must be omitted and environmentImageReference is optional." @@ -45064,6 +47966,36 @@ }, "description": "Dataset configuration for a declarative training job." }, + "TrainingDeploymentRewardConfiguration": { + "type": "object", + "required": [ + "kind", + "deployment" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "deployment" + ], + "description": "Reward or judge signal kind, always 'deployment'." + }, + "deployment": { + "type": "string", + "description": "Model deployment name or resource reference used as the judge." + }, + "rubric": { + "type": "string", + "description": "Rubric or scoring instruction for the judge deployment." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Model deployment used as an LLM judge." + }, "TrainingEntryPointReference": { "type": "object", "required": [ @@ -45085,12 +48017,12 @@ { "type": "string", "enum": [ - "Gsm8k", - "Mmlu", - "Humaneval", - "Mbpp", - "Arc", - "Hellaswag" + "gsm8k", + "mmlu", + "humaneval", + "mbpp", + "arc", + "hellaswag" ] } ], @@ -45119,6 +48051,39 @@ }, "description": "Evaluation configuration for a declarative training job." }, + "TrainingEvaluatorRewardConfiguration": { + "type": "object", + "required": [ + "kind", + "evaluator" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "evaluator" + ], + "description": "Reward or judge signal kind, always 'evaluator'." + }, + "evaluator": { + "type": "string", + "description": "Evaluator asset reference." + }, + "inputMapping": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional evaluator input mapping." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Foundry evaluator used as a judge." + }, "TrainingFramework": { "anyOf": [ { @@ -45127,17 +48092,47 @@ { "type": "string", "enum": [ - "Trl", - "Verl", - "OpenRlhf", - "NemoRl", - "Slime", - "TorchForge" + "trl", + "verl", + "open_rlhf", + "nemo_rl", + "slime", + "torch_forge" ] } ], "description": "Training framework used to lower a declarative training job into an execution command." }, + "TrainingFunctionRewardConfiguration": { + "type": "object", + "required": [ + "kind", + "function" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "function" + ], + "description": "Reward or judge signal kind, always 'function'." + }, + "function": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEntryPointReference" + } + ], + "description": "Python callable used to compute reward scores." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Python callable used as a judge." + }, "TrainingInlineFunctionConfiguration": { "type": "object", "required": [ @@ -45159,6 +48154,36 @@ }, "description": "Inline Python function definition for custom training logic." }, + "TrainingInlineFunctionRewardConfiguration": { + "type": "object", + "required": [ + "kind", + "inline_function" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "inline_function" + ], + "description": "Reward or judge signal kind, always 'inline_function'." + }, + "inline_function": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingInlineFunctionConfiguration" + } + ], + "description": "Inline Python function used to compute reward scores." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Inline Python function used as a judge." + }, "TrainingInlineFunctionRuntime": { "type": "object", "properties": { @@ -45265,31 +48290,56 @@ }, "description": "LoRA adapter configuration for parameter-efficient fine tuning." }, - "TrainingRewardConfiguration": { + "TrainingModelRewardConfiguration": { "type": "object", + "required": [ + "kind", + "model" + ], "properties": { - "model": { + "kind": { "type": "string", - "description": "Reward model asset reference." - }, - "function": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingEntryPointReference" - } + "enum": [ + "model" ], - "description": "Python callable used to compute reward scores." + "description": "Reward or judge signal kind, always 'model'." }, - "inline_function": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingInlineFunctionConfiguration" - } - ], - "description": "Inline Python function used to compute reward scores." + "model": { + "type": "string", + "description": "Reward model asset reference used to compute scores." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Learned reward model used as a judge." + }, + "TrainingRewardConfiguration": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "type": "string", + "description": "Reward or judge signal kind." } }, - "description": "Reward signal configuration for reinforcement or reward model training." + "discriminator": { + "propertyName": "kind", + "mapping": { + "model": "#/components/schemas/TrainingModelRewardConfiguration", + "function": "#/components/schemas/TrainingFunctionRewardConfiguration", + "inline_function": "#/components/schemas/TrainingInlineFunctionRewardConfiguration", + "builtin": "#/components/schemas/TrainingBuiltinRewardConfiguration", + "evaluator": "#/components/schemas/TrainingEvaluatorRewardConfiguration", + "deployment": "#/components/schemas/TrainingDeploymentRewardConfiguration", + "composite": "#/components/schemas/TrainingCompositeRewardConfiguration" + } + }, + "description": "Reward or judge signal configuration for reinforcement or reward model training." }, "TrainingRolloutConfiguration": { "type": "object", @@ -45305,6 +48355,48 @@ ], "description": "Rollout inference engine." }, + "numGenerations": { + "type": "integer", + "format": "int32", + "description": "Number of completions to generate for each prompt." + }, + "maxPromptLength": { + "type": "integer", + "format": "int32", + "description": "Maximum prompt length in tokens." + }, + "maxCompletionLength": { + "type": "integer", + "format": "int32", + "description": "Maximum completion length in tokens." + }, + "temperature": { + "type": "number", + "format": "double", + "description": "Sampling temperature for rollout generation." + }, + "topP": { + "type": "number", + "format": "double", + "description": "Nucleus sampling probability for rollout generation." + }, + "stop": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Stop sequences for rollout generation." + }, + "batchSize": { + "type": "integer", + "format": "int32", + "description": "Rollout batch size." + }, + "seed": { + "type": "integer", + "format": "int32", + "description": "Random seed for rollout generation." + }, "tensorParallelSize": { "type": "integer", "format": "int32", @@ -45327,15 +48419,38 @@ { "type": "string", "enum": [ - "Vllm", - "Sglang", - "Hf", - "MegatronInference" + "vllm", + "sglang", + "hf", + "megatron_inference" ] } ], "description": "Inference engine used for rollout generation during online reinforcement learning." }, + "TrainingWeightedRewardConfiguration": { + "type": "object", + "required": [ + "reward" + ], + "properties": { + "reward": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Reward signal." + }, + "weight": { + "type": "number", + "format": "double", + "description": "Weight applied to this reward signal.", + "default": 1 + } + }, + "description": "Weighted reward signal used in a composite judge." + }, "TreatmentEffectType": { "anyOf": [ { diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 636f9a707746..7ba8708d6308 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -35,6 +35,9 @@ { "name": "Agent Invocations" }, + { + "name": "Clusters" + }, { "name": "Connections" }, @@ -62,6 +65,9 @@ { "name": "Memory Stores" }, + { + "name": "Models" + }, { "name": "Conversations" }, @@ -3043,348 +3049,432 @@ } } }, - "/connections": { - "get": { - "operationId": "Connections_list", - "description": "List all connections in the project, without populating connection credentials", + "/clusters/{clusterName}:create_interactive_ray_job": { + "post": { + "operationId": "Clusters_createInteractiveRayJob", + "description": "Create an interactive Ray command job on a compute cluster.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "connectionType", - "in": "query", - "required": false, - "description": "List connections of this specific type", - "schema": { - "$ref": "#/components/schemas/ConnectionType" - }, - "explode": false - }, - { - "name": "defaultConnection", - "in": "query", - "required": false, - "description": "List connections that are default connections", + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", "schema": { - "type": "boolean" - }, - "explode": false - }, - { - "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "headers": { - "x-ms-client-request-id": { - "required": false, - "description": "An opaque, globally-unique, client-generated string identifier for the request.", - "schema": { - "$ref": "#/components/schemas/Azure.Core.uuid" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedConnection" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] } - } - }, - "tags": [ - "Connections" - ] - } - }, - "/connections/{name}": { - "get": { - "operationId": "Connections_get", - "description": "Get a connection by name, without populating connection credentials", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "name", + "name": "clusterName", "in": "path", "required": true, - "description": "The friendly name of the connection, provided by the user.", + "description": "The compute cluster name.", "schema": { "type": "string" } }, { - "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "headers": { - "x-ms-client-request-id": { - "required": false, - "description": "An opaque, globally-unique, client-generated string identifier for the request.", - "schema": { - "$ref": "#/components/schemas/Azure.Core.uuid" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Connection" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry interactive Ray job creation.", + "schema": { + "type": "string" } - } - }, - "tags": [ - "Connections" - ] - } - }, - "/connections/{name}/getConnectionWithCredentials": { - "post": { - "operationId": "Connections_getWithCredentials", - "description": "Get a connection by name, with its connection credentials", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "name", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The friendly name of the connection, provided by the user.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } - }, - { - "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" + }, + "explode": false } ], "responses": { - "200": { - "description": "The request has succeeded.", - "headers": { - "x-ms-client-request-id": { - "required": false, - "description": "An opaque, globally-unique, client-generated string identifier for the request.", - "schema": { - "$ref": "#/components/schemas/Azure.Core.uuid" - } - } - }, + "201": { + "description": "The request has succeeded and a new resource has been created as a result.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Connection" + "$ref": "#/components/schemas/Job" } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } } }, "tags": [ - "Connections" - ] - } - }, - "/datasets": { - "get": { - "operationId": "Datasets_listLatest", - "description": "List the latest version of each DatasetVersion", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - } + "Clusters" ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedDatasetVersion" - } + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InteractiveRayJobCreate" } } }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Datasets" - ] + "description": "Interactive Ray job creation request." + } } }, - "/datasets/{name}/versions": { + "/connections": { "get": { - "operationId": "Datasets_listVersions", - "description": "List all versions of the given DatasetVersion", + "operationId": "Connections_list", + "description": "List all connections in the project, without populating connection credentials", "parameters": [ { "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the resource", + "name": "connectionType", + "in": "query", + "required": false, + "description": "List connections of this specific type", "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedDatasetVersion" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } + "$ref": "#/components/schemas/ConnectionType" }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Datasets" - ] - } - }, - "/datasets/{name}/versions/{version}": { - "get": { - "operationId": "Datasets_getVersion", - "description": "Get the specific version of the DatasetVersion. The service returns 404 Not Found error if the DatasetVersion does not exist.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "explode": false }, { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the resource", + "name": "defaultConnection", + "in": "query", + "required": false, + "description": "List connections that are default connections", "schema": { - "type": "string" - } + "type": "boolean" + }, + "explode": false }, { - "name": "version", - "in": "path", - "required": true, - "description": "The specific version id of the DatasetVersion to retrieve.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" } ], "responses": { "200": { "description": "The request has succeeded.", + "headers": { + "x-ms-client-request-id": { + "required": false, + "description": "An opaque, globally-unique, client-generated string identifier for the request.", + "schema": { + "$ref": "#/components/schemas/Azure.Core.uuid" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DatasetVersion" + "$ref": "#/components/schemas/PagedConnection" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Connections" + ] + } + }, + "/connections/{name}": { + "get": { + "operationId": "Connections_get", + "description": "Get a connection by name, without populating connection credentials", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The friendly name of the connection, provided by the user.", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "headers": { + "x-ms-client-request-id": { + "required": false, + "description": "An opaque, globally-unique, client-generated string identifier for the request.", + "schema": { + "$ref": "#/components/schemas/Azure.Core.uuid" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Connection" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Connections" + ] + } + }, + "/connections/{name}/getConnectionWithCredentials": { + "post": { + "operationId": "Connections_getWithCredentials", + "description": "Get a connection by name, with its connection credentials", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The friendly name of the connection, provided by the user.", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "headers": { + "x-ms-client-request-id": { + "required": false, + "description": "An opaque, globally-unique, client-generated string identifier for the request.", + "schema": { + "$ref": "#/components/schemas/Azure.Core.uuid" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Connection" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Connections" + ] + } + }, + "/datasets": { + "get": { + "operationId": "Datasets_listLatest", + "description": "List the latest version of each DatasetVersion", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedDatasetVersion" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Datasets" + ] + } + }, + "/datasets/{name}/versions": { + "get": { + "operationId": "Datasets_listVersions", + "description": "List all versions of the given DatasetVersion", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the resource", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedDatasetVersion" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Datasets" + ] + } + }, + "/datasets/{name}/versions/{version}": { + "get": { + "operationId": "Datasets_getVersion", + "description": "Get the specific version of the DatasetVersion. The service returns 404 Not Found error if the DatasetVersion does not exist.", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + }, + { + "name": "name", + "in": "path", + "required": true, + "description": "The name of the resource", + "schema": { + "type": "string" + } + }, + { + "name": "version", + "in": "path", + "required": true, + "description": "The specific version id of the DatasetVersion to retrieve.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DatasetVersion" } } } @@ -9778,6 +9868,665 @@ } } }, + "/models/operations/{operationId}/result": { + "get": { + "operationId": "Models_getTrainingOperationResult", + "description": "Poll the result of a managed model training operation.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "operationId", + "in": "path", + "required": true, + "description": "The managed model training operation identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ] + } + }, + "/models:create_grpo_training_job": { + "post": { + "operationId": "Models_createGrpoTrainingJob", + "description": "Create a model by running managed GRPO training.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry managed model training.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GrpoModelTrainingJobCreate" + } + } + }, + "description": "The managed GRPO model training request." + } + } + }, + "/models:create_kto_training_job": { + "post": { + "operationId": "Models_createKtoTrainingJob", + "description": "Create a model by running managed KTO training.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry managed model training.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/KtoModelTrainingJobCreate" + } + } + }, + "description": "The managed KTO model training request." + } + } + }, + "/models:create_policy_gradient_training_job": { + "post": { + "operationId": "Models_createPolicyGradientTrainingJob", + "description": "Create a model by running managed online policy-gradient training.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry managed model training.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PolicyGradientModelTrainingJobCreate" + } + } + }, + "description": "The managed online policy-gradient model training request." + } + } + }, + "/models:create_ppo_training_job": { + "post": { + "operationId": "Models_createPpoTrainingJob", + "description": "Create a model by running managed PPO training.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry managed model training.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PpoModelTrainingJobCreate" + } + } + }, + "description": "The managed PPO model training request." + } + } + }, + "/models:create_preference_training_job": { + "post": { + "operationId": "Models_createPreferenceTrainingJob", + "description": "Create a model by running managed pairwise preference training.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry managed model training.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PreferenceModelTrainingJobCreate" + } + } + }, + "description": "The managed pairwise preference model training request." + } + } + }, + "/models:create_reward_model_training_job": { + "post": { + "operationId": "Models_createRewardModelTrainingJob", + "description": "Create a reward model by running managed reward-model training.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry managed model training.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RewardModelTrainingJobCreate" + } + } + }, + "description": "The managed reward-model training request." + } + } + }, + "/models:create_sft_training_job": { + "post": { + "operationId": "Models_createSftTrainingJob", + "description": "Create a model by running managed supervised fine-tuning.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "Operation-Id", + "in": "header", + "required": false, + "description": "Idempotency key used to safely retry managed model training.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "The request has been accepted for processing, but processing has not yet completed.", + "headers": { + "Operation-Location": { + "required": true, + "description": "The location for monitoring the operation state.", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ModelTrainingOperation" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Models" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SftModelTrainingJobCreate" + } + } + }, + "description": "The managed SFT model training request." + } + } + }, "/openai/v1/conversations": { "post": { "operationId": "createConversation", @@ -20437,6 +21186,27 @@ }, "description": "A base class for connection credentials" }, + "BaseModelReferenceConfiguration": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "base_model" + ], + "description": "Reference policy kind, always 'base_model'." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingReferenceConfiguration" + } + ], + "description": "Use the submitted base model as the reference policy." + }, "BenchmarkName": { "anyOf": [ { @@ -21160,10 +21930,10 @@ { "type": "string", "enum": [ - "Chatml", + "chatml", "llama-3", - "Zephyr", - "Gemma", + "zephyr", + "gemma", "phi-3" ] } @@ -21777,6 +22547,43 @@ ], "description": "CosmosDB Vector Store Index Definition" }, + "CpoTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "cpo" + ], + "description": "Training algorithm, always 'cpo'." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Contrastive preference optimization training recipe." + }, "CreateAgentFromManifestRequest": { "type": "object", "required": [ @@ -22738,10 +23545,48 @@ "mapping": { "PyTorch": "#/components/schemas/PyTorchDistribution", "Mpi": "#/components/schemas/MpiDistribution", - "TensorFlow": "#/components/schemas/TensorFlowDistribution" + "TensorFlow": "#/components/schemas/TensorFlowDistribution", + "Ray": "#/components/schemas/RayDistribution" } }, - "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, Ray, or null." + }, + "DpoTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "dpo" + ], + "description": "Training algorithm, always 'dpo'." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Direct preference optimization training recipe." }, "EntraAuthorizationScheme": { "type": "object", @@ -24554,6 +25399,32 @@ }, "description": "Evaluator Definition" }, + "ExplicitModelReferenceConfiguration": { + "type": "object", + "required": [ + "kind", + "model" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "model" + ], + "description": "Reference policy kind, always 'model'." + }, + "model": { + "type": "string", + "description": "Reference model asset URI." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingReferenceConfiguration" + } + ], + "description": "Use an explicit model as the reference policy." + }, "FabricDataAgentToolCall": { "type": "object", "required": [ @@ -24791,6 +25662,240 @@ }, "description": "Details of a function tool call." }, + "GrpoModelTrainingJobCreate": { + "type": "object", + "required": [ + "model", + "dataset", + "runtime", + "compute" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional name of the model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed GRPO." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "description": "Request body for creating a managed GRPO training job from a base model." + }, + "GrpoTrainingColumnMapping": { + "type": "object", + "required": [ + "prompt" + ], + "properties": { + "prompt": { + "type": "string", + "description": "Column containing prompts for rollout generation." + }, + "reference": { + "type": "string", + "description": "Column containing reference answers or reward context passed to the judge." + } + }, + "description": "Column mapping for managed GRPO datasets. The training dataset must contain prompts; reference answers or reward context can be passed to the judge." + }, + "GrpoTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm", + "reward" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "grpo" + ], + "description": "Training algorithm, always 'grpo'." + }, + "reward": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Reward signal configuration." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Group relative policy optimization training recipe." + }, + "GrpoTrainingDatasetConfiguration": { + "type": "object", + "required": [ + "train", + "columns" + ], + "properties": { + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingColumnMapping" + } + ], + "description": "Mapping from GRPO training fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "description": "Dataset configuration for managed GRPO training." + }, + "GrpoTrainingRuntimeConfiguration": { + "type": "object", + "required": [ + "judge" + ], + "properties": { + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework implementation. If omitted, the service selects a compatible framework." + }, + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters passed through to the selected framework." + }, + "judge": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Judge used to score generated completions during GRPO training." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + }, + "reference": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingReferenceConfiguration" + } + ], + "description": "Reference policy used for KL anchoring." + }, + "packaging": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingConfiguration" + } + ], + "description": "Model artifact packaging options." + } + }, + "description": "Runtime options for managed GRPO training." + }, "HeaderIsolationKeySource": { "type": "object", "required": [ @@ -25538,6 +26643,39 @@ }, "description": "Metadata about the insights." }, + "InteractiveRayJobCreate": { + "type": "object", + "required": [ + "instanceCount" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional job name. If omitted, the service uses the Operation-Id header or generates one." + }, + "displayName": { + "type": "string", + "description": "Optional display name for the generated Ray job." + }, + "description": { + "type": "string", + "description": "Optional description for the generated Ray job." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags to attach to the generated Ray job." + }, + "instanceCount": { + "type": "integer", + "format": "int32", + "description": "Number of compute nodes to reserve for the interactive Ray session." + } + }, + "description": "Request body for creating an interactive Ray command job on a compute cluster." + }, "IsolationKeySource": { "type": "object", "required": [ @@ -26337,6 +27475,211 @@ ], "description": "Type of a job." }, + "KtoFeedbackColumnMapping": { + "type": "object", + "required": [ + "prompt", + "response", + "label" + ], + "properties": { + "prompt": { + "type": "string", + "description": "Column containing prompts." + }, + "response": { + "type": "string", + "description": "Column containing responses." + }, + "label": { + "type": "string", + "description": "Column containing the binary desirability label." + } + }, + "description": "Column mapping for KTO feedback datasets." + }, + "KtoModelTrainingJobCreate": { + "type": "object", + "required": [ + "model", + "dataset", + "compute" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional name of the model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/KtoTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/KtoTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed KTO." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "description": "Request body for creating a managed KTO training job from a base model." + }, + "KtoTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "kto" + ], + "description": "Training algorithm, always 'kto'." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Kahneman-Tversky optimization training recipe." + }, + "KtoTrainingDatasetConfiguration": { + "type": "object", + "required": [ + "train", + "columns" + ], + "properties": { + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/KtoFeedbackColumnMapping" + } + ], + "description": "Mapping from KTO fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "description": "Dataset configuration for managed KTO training." + }, + "KtoTrainingRuntimeConfiguration": { + "type": "object", + "properties": { + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework implementation. If omitted, the service selects a compatible framework." + }, + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters passed through to the selected framework." + }, + "desirableWeight": { + "type": "number", + "format": "double", + "description": "Weight applied to desirable examples." + }, + "undesirableWeight": { + "type": "number", + "format": "double", + "description": "Weight applied to undesirable examples." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + }, + "packaging": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingConfiguration" + } + ], + "description": "Model artifact packaging options." + } + }, + "description": "Runtime options for managed KTO training." + }, "ListViewType": { "anyOf": [ { @@ -27264,6 +28607,59 @@ "additionalProperties": {}, "description": "Generic MLflow compatibility response payload." }, + "Model": { + "type": "object", + "required": [ + "name", + "version" + ], + "properties": { + "id": { + "type": "string", + "description": "Asset ID, a unique identifier for the model asset.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "The name of the model asset.", + "readOnly": true + }, + "version": { + "type": "string", + "description": "The version of the model asset.", + "readOnly": true + }, + "description": { + "type": "string", + "description": "The model asset description text.", + "readOnly": true + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tags associated with the model asset.", + "readOnly": true + }, + "uri": { + "type": "string", + "description": "URI of the registered model artifact.", + "readOnly": true + }, + "baseModel": { + "type": "string", + "description": "Base model used to create this model, when the model was produced by managed training.", + "readOnly": true + }, + "trainingJob": { + "type": "string", + "description": "Backing training job that produced this model, when available.", + "readOnly": true + } + }, + "description": "Model asset produced by managed model training." + }, "ModelDeployment": { "type": "object", "required": [ @@ -27385,6 +28781,146 @@ }, "description": "Represents a set of parameters used to control the sampling behavior of a language model during text generation." }, + "ModelTrainingComputeConfiguration": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "description": "Compute resource ID used to run the managed training job." + }, + "resources": { + "allOf": [ + { + "$ref": "#/components/schemas/JobResourceConfiguration" + } + ], + "description": "Compute resource configuration for the managed training job." + }, + "gpuCount": { + "type": "integer", + "format": "int32", + "description": "Number of GPUs requested by the managed training job." + }, + "distribution": { + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "Distribution configuration for the managed training job." + }, + "queueSettings": { + "allOf": [ + { + "$ref": "#/components/schemas/QueueSettings" + } + ], + "description": "Queue settings for the managed training job." + }, + "userAssignedIdentityId": { + "type": "string", + "description": "ARM resource ID of a user-assigned managed identity attached to the Foundry project." + } + }, + "description": "Compute placement for a managed model training job." + }, + "ModelTrainingOperation": { + "type": "object", + "required": [ + "operationId", + "status" + ], + "properties": { + "operationId": { + "type": "string", + "description": "Operation identifier for the managed model training request." + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingOperationStatus" + } + ], + "description": "Managed model training operation status." + }, + "result": { + "allOf": [ + { + "$ref": "#/components/schemas/Model" + } + ], + "description": "The model produced by managed training when the operation succeeds." + }, + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/OpenAI.Error" + } + ], + "description": "Error object that describes the failure when status is 'failed'." + } + }, + "description": "Status resource for a managed model training operation." + }, + "ModelTrainingOperationStatus": { + "type": "string", + "enum": [ + "queued", + "in_progress", + "succeeded", + "failed", + "canceled" + ], + "description": "Status of a managed model training operation." + }, + "ModelTrainingPackagingConfiguration": { + "type": "object", + "properties": { + "mode": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingMode" + } + ], + "description": "How the trained model artifact should be packaged.", + "default": "merged_model" + } + }, + "description": "Model artifact packaging options." + }, + "ModelTrainingPackagingMode": { + "type": "string", + "enum": [ + "merged_model", + "adapter", + "model_and_adapter" + ], + "description": "Output packaging for a managed model training job." + }, + "ModelTrainingReferenceConfiguration": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "type": "string", + "description": "Reference policy kind." + } + }, + "discriminator": { + "propertyName": "kind", + "mapping": { + "base_model": "#/components/schemas/BaseModelReferenceConfiguration", + "model": "#/components/schemas/ExplicitModelReferenceConfiguration", + "none": "#/components/schemas/NoReferenceConfiguration" + } + }, + "description": "Reference policy used for preference optimization or online reinforcement training." + }, "MonthlyRecurrenceSchedule": { "type": "object", "required": [ @@ -27463,6 +28999,27 @@ ], "description": "Credentials that do not require authentication" }, + "NoReferenceConfiguration": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "none" + ], + "description": "Reference policy kind, always 'none'." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingReferenceConfiguration" + } + ], + "description": "Disable reference policy or KL anchoring." + }, "OAuthConsentRequestOutputItem": { "type": "object", "required": [ @@ -47257,6 +48814,43 @@ ], "description": "The output of an OpenAPI tool call." }, + "OrpoTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "orpo" + ], + "description": "Training algorithm, always 'orpo'." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Odds ratio preference optimization training recipe." + }, "OtlpTelemetryEndpoint": { "type": "object", "required": [ @@ -47813,6 +49407,110 @@ }, "description": "Paged collection of ScheduleRun items" }, + "PairwisePreferenceColumnMapping": { + "type": "object", + "required": [ + "prompt", + "chosen", + "rejected" + ], + "properties": { + "prompt": { + "type": "string", + "description": "Column containing prompts." + }, + "chosen": { + "type": "string", + "description": "Column containing the preferred response." + }, + "rejected": { + "type": "string", + "description": "Column containing the rejected response." + } + }, + "description": "Column mapping for pairwise preference datasets." + }, + "PairwisePreferenceDatasetConfiguration": { + "type": "object", + "required": [ + "train", + "columns" + ], + "properties": { + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/PairwisePreferenceColumnMapping" + } + ], + "description": "Mapping from pairwise preference fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "description": "Dataset configuration for managed pairwise preference training." + }, + "PairwiseRewardModelTrainingDatasetConfiguration": { + "type": "object", + "required": [ + "kind", + "train", + "columns" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "pairwise" + ], + "description": "Reward-model dataset kind, always 'pairwise'." + }, + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/PairwisePreferenceColumnMapping" + } + ], + "description": "Mapping from pairwise preference fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/RewardModelTrainingDatasetConfiguration" + } + ], + "description": "Pairwise preference dataset for managed reward-model training." + }, "PatchAgentRequest": { "type": "object", "properties": { @@ -47897,6 +49595,498 @@ }, "description": "Represents the response for a pending upload request" }, + "PolicyGradientModelTrainingJobCreate": { + "type": "object", + "required": [ + "algorithm", + "model", + "dataset", + "runtime", + "compute" + ], + "properties": { + "algorithm": { + "allOf": [ + { + "$ref": "#/components/schemas/PolicyGradientTrainingAlgorithm" + } + ], + "description": "Policy-gradient algorithm to run." + }, + "name": { + "type": "string", + "description": "Optional name of the model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/PolicyGradientTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed online policy-gradient training." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "description": "Request body for creating a managed online policy-gradient training job from a base model." + }, + "PolicyGradientTrainingAlgorithm": { + "type": "string", + "enum": [ + "rloo", + "reinforce_pp" + ], + "description": "Policy-gradient algorithm used by managed online reinforcement training." + }, + "PolicyGradientTrainingRuntimeConfiguration": { + "type": "object", + "required": [ + "judge", + "rollout" + ], + "properties": { + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework implementation. If omitted, the service selects a compatible framework." + }, + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters passed through to the selected framework." + }, + "judge": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Judge used to score generated completions during online training." + }, + "reference": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingReferenceConfiguration" + } + ], + "description": "Reference policy used for KL anchoring." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + }, + "packaging": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingConfiguration" + } + ], + "description": "Model artifact packaging options." + } + }, + "description": "Runtime options for managed online policy-gradient training." + }, + "PpoCriticConfiguration": { + "type": "object", + "properties": { + "model": { + "type": "string", + "description": "Optional critic model asset reference. If omitted, the service initializes the critic from the policy model." + }, + "valueLossCoefficient": { + "type": "number", + "format": "double", + "description": "Value loss coefficient." + }, + "gamma": { + "type": "number", + "format": "double", + "description": "GAE discount factor." + }, + "lambda": { + "type": "number", + "format": "double", + "description": "GAE lambda." + } + }, + "description": "Critic or value model configuration for managed PPO training." + }, + "PpoModelTrainingJobCreate": { + "type": "object", + "required": [ + "model", + "dataset", + "runtime", + "compute" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional name of the model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/PpoTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed PPO." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "description": "Request body for creating a managed PPO training job from a base model." + }, + "PpoTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm", + "reward" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "ppo" + ], + "description": "Training algorithm, always 'ppo'." + }, + "reward": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Reward signal configuration." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Proximal policy optimization training recipe." + }, + "PpoTrainingRuntimeConfiguration": { + "type": "object", + "required": [ + "judge", + "rollout" + ], + "properties": { + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework implementation. If omitted, the service selects a compatible framework." + }, + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters passed through to the selected framework." + }, + "judge": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Judge used to score generated completions during PPO training." + }, + "reference": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingReferenceConfiguration" + } + ], + "description": "Reference policy used for KL anchoring." + }, + "critic": { + "allOf": [ + { + "$ref": "#/components/schemas/PpoCriticConfiguration" + } + ], + "description": "Critic or value model configuration." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + }, + "packaging": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingConfiguration" + } + ], + "description": "Model artifact packaging options." + } + }, + "description": "Runtime options for managed PPO training." + }, + "PreferenceModelTrainingJobCreate": { + "type": "object", + "required": [ + "algorithm", + "model", + "dataset", + "compute" + ], + "properties": { + "algorithm": { + "allOf": [ + { + "$ref": "#/components/schemas/PreferenceTrainingAlgorithm" + } + ], + "description": "Preference optimization algorithm to run." + }, + "name": { + "type": "string", + "description": "Optional name of the model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/PairwisePreferenceDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/PreferenceTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed pairwise preference training." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "description": "Request body for creating a managed pairwise preference training job from a base model." + }, + "PreferenceTrainingAlgorithm": { + "type": "string", + "enum": [ + "dpo", + "orpo", + "cpo", + "simpo" + ], + "description": "Preference optimization algorithm used by managed pairwise preference training." + }, + "PreferenceTrainingRuntimeConfiguration": { + "type": "object", + "properties": { + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework implementation. If omitted, the service selects a compatible framework." + }, + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters passed through to the selected framework." + }, + "reference": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingReferenceConfiguration" + } + ], + "description": "Reference policy used by algorithms that require KL anchoring or a reference model." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + }, + "packaging": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingConfiguration" + } + ], + "description": "Model artifact packaging options." + } + }, + "description": "Runtime options for managed pairwise preference training." + }, "PromptAgentDefinition": { "type": "object", "required": [ @@ -48092,6 +50282,53 @@ }, "description": "Configuration for Responsible AI (RAI) content filtering and safety features." }, + "RayDistribution": { + "type": "object", + "required": [ + "distributionType" + ], + "properties": { + "distributionType": { + "type": "string", + "enum": [ + "Ray" + ], + "description": "Specifies the type of distribution framework." + }, + "port": { + "type": "integer", + "format": "int32", + "description": "The port of the head Ray process." + }, + "address": { + "type": "string", + "description": "The address of the Ray head node." + }, + "includeDashboard": { + "type": "boolean", + "description": "Whether to start the Ray dashboard GUI." + }, + "dashboardPort": { + "type": "integer", + "format": "int32", + "description": "The port to bind the dashboard server to." + }, + "headNodeAdditionalArgs": { + "type": "string", + "description": "Additional arguments passed to ray start on the head node." + }, + "workerNodeAdditionalArgs": { + "type": "string", + "description": "Additional arguments passed to ray start on worker nodes." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "Ray distribution configuration." + }, "RecurrenceSchedule": { "type": "object", "required": [ @@ -48421,6 +50658,60 @@ ], "description": "Represents the parameters for red team taxonomy item generation." }, + "ReinforcePpTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm", + "reward" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "reinforce_pp" + ], + "description": "Training algorithm, always 'reinforce_pp'." + }, + "reward": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Reward signal configuration." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "REINFORCE++ training recipe." + }, "ResponseRetrievalItemGenerationParams": { "type": "object", "required": [ @@ -48468,6 +50759,187 @@ ], "description": "Represents the parameters for response retrieval item generation." }, + "RewardModelTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "reward_model" + ], + "description": "Training algorithm, always 'reward_model'." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Reward model training recipe." + }, + "RewardModelTrainingDatasetConfiguration": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "type": "string", + "description": "Reward-model dataset kind." + } + }, + "discriminator": { + "propertyName": "kind", + "mapping": { + "pairwise": "#/components/schemas/PairwiseRewardModelTrainingDatasetConfiguration", + "scored": "#/components/schemas/ScoredRewardModelTrainingDatasetConfiguration" + } + }, + "description": "Dataset configuration for managed reward-model training." + }, + "RewardModelTrainingJobCreate": { + "type": "object", + "required": [ + "model", + "dataset", + "compute" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional name of the reward model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the reward model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the reward model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the reward model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/RewardModelTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/RewardModelTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed reward-model training." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "description": "Request body for creating a managed reward-model training job from a base model." + }, + "RewardModelTrainingLoss": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "bradley_terry", + "regression" + ] + } + ], + "description": "Loss function used for reward-model training." + }, + "RewardModelTrainingRuntimeConfiguration": { + "type": "object", + "properties": { + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework implementation. If omitted, the service selects a compatible framework." + }, + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters passed through to the selected framework." + }, + "loss": { + "allOf": [ + { + "$ref": "#/components/schemas/RewardModelTrainingLoss" + } + ], + "description": "Loss function used for reward-model training." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + }, + "packaging": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingConfiguration" + } + ], + "description": "Model artifact packaging options." + } + }, + "description": "Runtime options for managed reward-model training." + }, "RiskCategory": { "anyOf": [ { @@ -48491,6 +50963,60 @@ ], "description": "Risk category for the attack objective." }, + "RlooTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm", + "reward" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "rloo" + ], + "description": "Training algorithm, always 'rloo'." + }, + "reward": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Reward signal configuration." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "rollout": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRolloutConfiguration" + } + ], + "description": "Rollout generation configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "REINFORCE leave-one-out training recipe." + }, "SASCredentials": { "type": "object", "required": [ @@ -48739,6 +51265,76 @@ ], "description": "Type of the task." }, + "ScoredRewardModelColumnMapping": { + "type": "object", + "required": [ + "prompt", + "response", + "score" + ], + "properties": { + "prompt": { + "type": "string", + "description": "Column containing prompts." + }, + "response": { + "type": "string", + "description": "Column containing responses." + }, + "score": { + "type": "string", + "description": "Column containing numeric reward scores." + } + }, + "description": "Column mapping for scored reward-model datasets." + }, + "ScoredRewardModelTrainingDatasetConfiguration": { + "type": "object", + "required": [ + "kind", + "train", + "columns" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "scored" + ], + "description": "Reward-model dataset kind, always 'scored'." + }, + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/ScoredRewardModelColumnMapping" + } + ], + "description": "Mapping from scored response fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/RewardModelTrainingDatasetConfiguration" + } + ], + "description": "Scored response dataset for managed reward-model training." + }, "SessionDirectoryEntry": { "type": "object", "required": [ @@ -48835,6 +51431,191 @@ ] } }, + "SftModelTrainingJobCreate": { + "type": "object", + "required": [ + "model", + "dataset", + "compute" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional name of the model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/SftTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/SftTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed SFT." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "description": "Request body for creating a managed SFT training job from a base model." + }, + "SftTrainingColumnMapping": { + "type": "object", + "required": [ + "messages" + ], + "properties": { + "messages": { + "type": "string", + "description": "Column containing chat messages used for supervised fine tuning." + } + }, + "description": "Column mapping for managed SFT datasets. The training dataset must contain chat messages for each training example." + }, + "SftTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "sft" + ], + "description": "Training algorithm, always 'sft'." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Supervised fine-tuning recipe." + }, + "SftTrainingDatasetConfiguration": { + "type": "object", + "required": [ + "train", + "columns" + ], + "properties": { + "train": { + "type": "string", + "description": "Training dataset asset reference." + }, + "eval": { + "type": "string", + "description": "Optional evaluation dataset asset reference." + }, + "columns": { + "allOf": [ + { + "$ref": "#/components/schemas/SftTrainingColumnMapping" + } + ], + "description": "Mapping from SFT training fields to dataset columns." + }, + "dataFormat": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingDataFormatConfiguration" + } + ], + "description": "Conversational data formatting options." + } + }, + "description": "Dataset configuration for managed supervised fine tuning." + }, + "SftTrainingRuntimeConfiguration": { + "type": "object", + "properties": { + "framework": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingFramework" + } + ], + "description": "Training framework implementation. If omitted, the service selects a compatible framework." + }, + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters passed through to the selected framework." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + }, + "packaging": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingPackagingConfiguration" + } + ], + "description": "Model artifact packaging options." + } + }, + "description": "Runtime options for managed supervised fine tuning." + }, "SharepointGroundingToolCall": { "type": "object", "required": [ @@ -48976,6 +51757,43 @@ ], "description": "The input definition information for a sharepoint tool as used to configure an agent." }, + "SimPoTrainingConfiguration": { + "type": "object", + "required": [ + "algorithm" + ], + "properties": { + "algorithm": { + "type": "string", + "enum": [ + "simpo" + ], + "description": "Training algorithm, always 'simpo'." + }, + "lora": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingLoraConfiguration" + } + ], + "description": "LoRA adapter configuration." + }, + "eval": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEvalConfiguration" + } + ], + "description": "Evaluation configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Simple preference optimization training recipe." + }, "SkillObject": { "type": "object", "required": [ @@ -49889,22 +52707,74 @@ { "type": "string", "enum": [ - "Sft", - "Dpo", - "Kto", - "Orpo", - "Cpo", - "SimPo", - "Grpo", - "Ppo", - "Rloo", - "ReinforcePp", - "RewardModel" + "sft", + "dpo", + "kto", + "orpo", + "cpo", + "simpo", + "grpo", + "ppo", + "rloo", + "reinforce_pp", + "reward_model" ] } ], "description": "Training algorithm used by a declarative training job." }, + "TrainingBuiltinRewardConfiguration": { + "type": "object", + "required": [ + "kind", + "type" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "builtin" + ], + "description": "Reward or judge signal kind, always 'builtin'." + }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingBuiltinRewardType" + } + ], + "description": "Built-in reward or verifier type." + }, + "configuration": { + "type": "object", + "additionalProperties": {}, + "description": "Optional verifier configuration." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Built-in reward or verifier used as a judge." + }, + "TrainingBuiltinRewardType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "exact_match", + "regex", + "math_equivalence", + "unit_tests" + ] + } + ], + "description": "Built-in reward or verifier type." + }, "TrainingColumnMapping": { "type": "object", "properties": { @@ -49931,6 +52801,35 @@ }, "description": "Mapping from logical training fields to columns in the dataset." }, + "TrainingCompositeRewardConfiguration": { + "type": "object", + "required": [ + "kind", + "rewards" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "composite" + ], + "description": "Reward or judge signal kind, always 'composite'." + }, + "rewards": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TrainingWeightedRewardConfiguration" + }, + "description": "Weighted reward signals to combine." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Composite reward or judge made from multiple weighted reward signals." + }, "TrainingConfiguration": { "type": "object", "required": [ @@ -49953,51 +52852,54 @@ "$ref": "#/components/schemas/TrainingFramework" } ], - "description": "Training framework. If omitted, the service selects a compatible framework." + "description": "Training framework implementation. If omitted, the service selects a compatible framework for the algorithm and records the resolved framework on the job." }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, - "dataset": { + "resolvedFramework": { "allOf": [ { - "$ref": "#/components/schemas/TrainingDatasetConfiguration" + "$ref": "#/components/schemas/TrainingFramework" } ], - "description": "Training and optional evaluation datasets." + "description": "Training framework resolved by the service.", + "readOnly": true }, - "reward": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingRewardConfiguration" - } - ], - "description": "Reward signal configuration." + "frameworkVersion": { + "type": "string", + "description": "Version of the resolved training framework used by the service.", + "readOnly": true }, - "lora": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingLoraConfiguration" - } - ], - "description": "LoRA adapter configuration." + "model": { + "type": "string", + "description": "Base model asset reference." }, - "rollout": { + "dataset": { "allOf": [ { - "$ref": "#/components/schemas/TrainingRolloutConfiguration" + "$ref": "#/components/schemas/TrainingDatasetConfiguration" } ], - "description": "Rollout generation configuration." + "description": "Training and optional evaluation datasets." }, - "eval": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingEvalConfiguration" - } - ], - "description": "Evaluation configuration." + "hyperparameters": { + "type": "object", + "additionalProperties": {}, + "description": "Algorithm-specific hyperparameters. Strongly typed SDK helpers may project common hyperparameters into richer language-specific types." + } + }, + "discriminator": { + "propertyName": "algorithm", + "mapping": { + "sft": "#/components/schemas/SftTrainingConfiguration", + "dpo": "#/components/schemas/DpoTrainingConfiguration", + "kto": "#/components/schemas/KtoTrainingConfiguration", + "orpo": "#/components/schemas/OrpoTrainingConfiguration", + "cpo": "#/components/schemas/CpoTrainingConfiguration", + "simpo": "#/components/schemas/SimPoTrainingConfiguration", + "grpo": "#/components/schemas/GrpoTrainingConfiguration", + "ppo": "#/components/schemas/PpoTrainingConfiguration", + "rloo": "#/components/schemas/RlooTrainingConfiguration", + "reinforce_pp": "#/components/schemas/ReinforcePpTrainingConfiguration", + "reward_model": "#/components/schemas/RewardModelTrainingConfiguration" } }, "description": "Declarative training recipe. When specified, command must be omitted and environmentImageReference is optional." @@ -50053,6 +52955,36 @@ }, "description": "Dataset configuration for a declarative training job." }, + "TrainingDeploymentRewardConfiguration": { + "type": "object", + "required": [ + "kind", + "deployment" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "deployment" + ], + "description": "Reward or judge signal kind, always 'deployment'." + }, + "deployment": { + "type": "string", + "description": "Model deployment name or resource reference used as the judge." + }, + "rubric": { + "type": "string", + "description": "Rubric or scoring instruction for the judge deployment." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Model deployment used as an LLM judge." + }, "TrainingEntryPointReference": { "type": "object", "required": [ @@ -50074,12 +53006,12 @@ { "type": "string", "enum": [ - "Gsm8k", - "Mmlu", - "Humaneval", - "Mbpp", - "Arc", - "Hellaswag" + "gsm8k", + "mmlu", + "humaneval", + "mbpp", + "arc", + "hellaswag" ] } ], @@ -50108,6 +53040,39 @@ }, "description": "Evaluation configuration for a declarative training job." }, + "TrainingEvaluatorRewardConfiguration": { + "type": "object", + "required": [ + "kind", + "evaluator" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "evaluator" + ], + "description": "Reward or judge signal kind, always 'evaluator'." + }, + "evaluator": { + "type": "string", + "description": "Evaluator asset reference." + }, + "inputMapping": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional evaluator input mapping." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Foundry evaluator used as a judge." + }, "TrainingFramework": { "anyOf": [ { @@ -50116,17 +53081,47 @@ { "type": "string", "enum": [ - "Trl", - "Verl", - "OpenRlhf", - "NemoRl", - "Slime", - "TorchForge" + "trl", + "verl", + "open_rlhf", + "nemo_rl", + "slime", + "torch_forge" ] } ], "description": "Training framework used to lower a declarative training job into an execution command." }, + "TrainingFunctionRewardConfiguration": { + "type": "object", + "required": [ + "kind", + "function" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "function" + ], + "description": "Reward or judge signal kind, always 'function'." + }, + "function": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingEntryPointReference" + } + ], + "description": "Python callable used to compute reward scores." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Python callable used as a judge." + }, "TrainingInlineFunctionConfiguration": { "type": "object", "required": [ @@ -50148,6 +53143,36 @@ }, "description": "Inline Python function definition for custom training logic." }, + "TrainingInlineFunctionRewardConfiguration": { + "type": "object", + "required": [ + "kind", + "inline_function" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "inline_function" + ], + "description": "Reward or judge signal kind, always 'inline_function'." + }, + "inline_function": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingInlineFunctionConfiguration" + } + ], + "description": "Inline Python function used to compute reward scores." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Inline Python function used as a judge." + }, "TrainingInlineFunctionRuntime": { "type": "object", "properties": { @@ -50254,31 +53279,56 @@ }, "description": "LoRA adapter configuration for parameter-efficient fine tuning." }, - "TrainingRewardConfiguration": { + "TrainingModelRewardConfiguration": { "type": "object", + "required": [ + "kind", + "model" + ], "properties": { - "model": { + "kind": { "type": "string", - "description": "Reward model asset reference." - }, - "function": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingEntryPointReference" - } + "enum": [ + "model" ], - "description": "Python callable used to compute reward scores." + "description": "Reward or judge signal kind, always 'model'." }, - "inline_function": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingInlineFunctionConfiguration" - } - ], - "description": "Inline Python function used to compute reward scores." + "model": { + "type": "string", + "description": "Reward model asset reference used to compute scores." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Learned reward model used as a judge." + }, + "TrainingRewardConfiguration": { + "type": "object", + "required": [ + "kind" + ], + "properties": { + "kind": { + "type": "string", + "description": "Reward or judge signal kind." } }, - "description": "Reward signal configuration for reinforcement or reward model training." + "discriminator": { + "propertyName": "kind", + "mapping": { + "model": "#/components/schemas/TrainingModelRewardConfiguration", + "function": "#/components/schemas/TrainingFunctionRewardConfiguration", + "inline_function": "#/components/schemas/TrainingInlineFunctionRewardConfiguration", + "builtin": "#/components/schemas/TrainingBuiltinRewardConfiguration", + "evaluator": "#/components/schemas/TrainingEvaluatorRewardConfiguration", + "deployment": "#/components/schemas/TrainingDeploymentRewardConfiguration", + "composite": "#/components/schemas/TrainingCompositeRewardConfiguration" + } + }, + "description": "Reward or judge signal configuration for reinforcement or reward model training." }, "TrainingRolloutConfiguration": { "type": "object", @@ -50294,6 +53344,48 @@ ], "description": "Rollout inference engine." }, + "numGenerations": { + "type": "integer", + "format": "int32", + "description": "Number of completions to generate for each prompt." + }, + "maxPromptLength": { + "type": "integer", + "format": "int32", + "description": "Maximum prompt length in tokens." + }, + "maxCompletionLength": { + "type": "integer", + "format": "int32", + "description": "Maximum completion length in tokens." + }, + "temperature": { + "type": "number", + "format": "double", + "description": "Sampling temperature for rollout generation." + }, + "topP": { + "type": "number", + "format": "double", + "description": "Nucleus sampling probability for rollout generation." + }, + "stop": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Stop sequences for rollout generation." + }, + "batchSize": { + "type": "integer", + "format": "int32", + "description": "Rollout batch size." + }, + "seed": { + "type": "integer", + "format": "int32", + "description": "Random seed for rollout generation." + }, "tensorParallelSize": { "type": "integer", "format": "int32", @@ -50316,15 +53408,38 @@ { "type": "string", "enum": [ - "Vllm", - "Sglang", - "Hf", - "MegatronInference" + "vllm", + "sglang", + "hf", + "megatron_inference" ] } ], "description": "Inference engine used for rollout generation during online reinforcement learning." }, + "TrainingWeightedRewardConfiguration": { + "type": "object", + "required": [ + "reward" + ], + "properties": { + "reward": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardConfiguration" + } + ], + "description": "Reward signal." + }, + "weight": { + "type": "number", + "format": "double", + "description": "Weight applied to this reward signal.", + "default": 1 + } + }, + "description": "Weighted reward signal used in a composite judge." + }, "TreatmentEffectType": { "anyOf": [ { diff --git a/specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp new file mode 100644 index 000000000000..9693c70a3eca --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp @@ -0,0 +1,21 @@ +import "../common/models.tsp"; + +namespace Azure.AI.Projects; + +@doc("Request body for creating an interactive Ray command job on a compute cluster.") +model InteractiveRayJobCreate { + @doc("Optional job name. If omitted, the service uses the Operation-Id header or generates one.") + name?: string; + + @doc("Optional display name for the generated Ray job.") + displayName?: string; + + @doc("Optional description for the generated Ray job.") + description?: string; + + @doc("Optional tags to attach to the generated Ray job.") + tags?: Record; + + @doc("Number of compute nodes to reserve for the interactive Ray session.") + instanceCount: int32; +} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/src/clusters/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/clusters/routes.tsp new file mode 100644 index 000000000000..e9a79fff50ee --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/src/clusters/routes.tsp @@ -0,0 +1,32 @@ +import "./models.tsp"; +import "../common/models.tsp"; +import "../jobs/models.tsp"; + +using TypeSpec.Http; + +namespace Azure.AI.Projects; + +@tag("Clusters") +interface Clusters { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Interactive Ray is a cluster action that creates an underlying command job." + @doc("Create an interactive Ray command job on a compute cluster.") + @post + @route("/clusters/{clusterName}:create_interactive_ray_job") + createInteractiveRayJob is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The compute cluster name.") + @path + clusterName: string; + + @doc("Idempotency key used to safely retry interactive Ray job creation.") + @header("Operation-Id") + operationId?: string; + + @doc("Interactive Ray job creation request.") + @bodyRoot + request: InteractiveRayJobCreate; + }, + ResourceCreatedResponse + >; +} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp index 9362b15b255d..440aeb0c53f6 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp @@ -8,7 +8,7 @@ using TypeSpec.Http; namespace Azure.AI.Projects; #suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "Use an extensible union instead of a plain string" -@doc("Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null.") +@doc("Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, Ray, or null.") @discriminator("distributionType") model DistributionConfiguration { @doc("Specifies the type of distribution framework.") @@ -45,6 +45,30 @@ model TensorFlowDistribution extends DistributionConfiguration { parameterServerCount?: int32; } +@doc("Ray distribution configuration.") +model RayDistribution extends DistributionConfiguration { + @doc("Specifies the type of distribution framework.") + distributionType: "Ray"; + + @doc("The port of the head Ray process.") + port?: int32; + + @doc("The address of the Ray head node.") + address?: string; + + @doc("Whether to start the Ray dashboard GUI.") + includeDashboard?: boolean; + + @doc("The port to bind the dashboard server to.") + dashboardPort?: int32; + + @doc("Additional arguments passed to ray start on the head node.") + headNodeAdditionalArgs?: string; + + @doc("Additional arguments passed to ray start on worker nodes.") + workerNodeAdditionalArgs?: string; +} + @doc("Enum to determine the input/output data delivery mode.") union InputOutputModes { string, @@ -202,37 +226,37 @@ union TrainingAlgorithm { string, @doc("Supervised fine tuning.") - Sft: "Sft", + Sft: "sft", @doc("Direct preference optimization.") - Dpo: "Dpo", + Dpo: "dpo", @doc("Kahneman-Tversky optimization.") - Kto: "Kto", + Kto: "kto", @doc("Odds ratio preference optimization.") - Orpo: "Orpo", + Orpo: "orpo", @doc("Contrastive preference optimization.") - Cpo: "Cpo", + Cpo: "cpo", @doc("Simple preference optimization.") - SimPo: "SimPo", + SimPo: "simpo", @doc("Group relative policy optimization.") - Grpo: "Grpo", + Grpo: "grpo", @doc("Proximal policy optimization.") - Ppo: "Ppo", + Ppo: "ppo", @doc("REINFORCE leave-one-out.") - Rloo: "Rloo", + Rloo: "rloo", @doc("REINFORCE++.") - ReinforcePp: "ReinforcePp", + ReinforcePp: "reinforce_pp", @doc("Reward model training.") - RewardModel: "RewardModel", + RewardModel: "reward_model", } @doc("Training framework used to lower a declarative training job into an execution command.") @@ -240,22 +264,22 @@ union TrainingFramework { string, @doc("TRL framework.") - Trl: "Trl", + Trl: "trl", @doc("VERL framework.") - Verl: "Verl", + Verl: "verl", @doc("OpenRLHF framework.") - OpenRlhf: "OpenRlhf", + OpenRlhf: "open_rlhf", @doc("NeMo RL framework.") - NemoRl: "NemoRl", + NemoRl: "nemo_rl", @doc("Slime framework.") - Slime: "Slime", + Slime: "slime", @doc("TorchForge framework.") - TorchForge: "TorchForge", + TorchForge: "torch_forge", } @doc("Chat template used to format conversational training data.") @@ -263,16 +287,16 @@ union ChatTemplate { string, @doc("ChatML template.") - Chatml: "Chatml", + Chatml: "chatml", @doc("Llama 3 chat template.") Llama3: "llama-3", @doc("Zephyr chat template.") - Zephyr: "Zephyr", + Zephyr: "zephyr", @doc("Gemma chat template.") - Gemma: "Gemma", + Gemma: "gemma", @doc("Phi 3 chat template.") Phi3: "phi-3", @@ -341,17 +365,113 @@ model TrainingInlineFunctionConfiguration { runtime?: TrainingInlineFunctionRuntime; } -@doc("Reward signal configuration for reinforcement or reward model training.") +#suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "Use an extensible union for forward-compatible reward and judge kinds." +@doc("Reward or judge signal configuration for reinforcement or reward model training.") +@discriminator("kind") model TrainingRewardConfiguration { - @doc("Reward model asset reference.") - `model`?: string; + @doc("Reward or judge signal kind.") + kind: string; +} + +@doc("Learned reward model used as a judge.") +model TrainingModelRewardConfiguration extends TrainingRewardConfiguration { + @doc("Reward or judge signal kind, always 'model'.") + kind: "model"; + + @doc("Reward model asset reference used to compute scores.") + `model`: string; +} + +@doc("Python callable used as a judge.") +model TrainingFunctionRewardConfiguration extends TrainingRewardConfiguration { + @doc("Reward or judge signal kind, always 'function'.") + kind: "function"; @doc("Python callable used to compute reward scores.") - function?: TrainingEntryPointReference; + function: TrainingEntryPointReference; +} + +@doc("Inline Python function used as a judge.") +model TrainingInlineFunctionRewardConfiguration + extends TrainingRewardConfiguration { + @doc("Reward or judge signal kind, always 'inline_function'.") + kind: "inline_function"; @doc("Inline Python function used to compute reward scores.") @encodedName("application/json", "inline_function") - inlineFunction?: TrainingInlineFunctionConfiguration; + inlineFunction: TrainingInlineFunctionConfiguration; +} + +@doc("Built-in reward or verifier type.") +union TrainingBuiltinRewardType { + string, + + @doc("Exact string match verifier.") + exact_match: "exact_match", + + @doc("Regular expression verifier.") + regex: "regex", + + @doc("Math equivalence verifier.") + math_equivalence: "math_equivalence", + + @doc("Unit test verifier for code generation tasks.") + unit_tests: "unit_tests", +} + +@doc("Built-in reward or verifier used as a judge.") +model TrainingBuiltinRewardConfiguration extends TrainingRewardConfiguration { + @doc("Reward or judge signal kind, always 'builtin'.") + kind: "builtin"; + + @doc("Built-in reward or verifier type.") + type: TrainingBuiltinRewardType; + + @doc("Optional verifier configuration.") + configuration?: Record; +} + +@doc("Foundry evaluator used as a judge.") +model TrainingEvaluatorRewardConfiguration extends TrainingRewardConfiguration { + @doc("Reward or judge signal kind, always 'evaluator'.") + kind: "evaluator"; + + @doc("Evaluator asset reference.") + evaluator: string; + + @doc("Optional evaluator input mapping.") + inputMapping?: Record; +} + +@doc("Model deployment used as an LLM judge.") +model TrainingDeploymentRewardConfiguration + extends TrainingRewardConfiguration { + @doc("Reward or judge signal kind, always 'deployment'.") + kind: "deployment"; + + @doc("Model deployment name or resource reference used as the judge.") + deployment: string; + + @doc("Rubric or scoring instruction for the judge deployment.") + rubric?: string; +} + +@doc("Weighted reward signal used in a composite judge.") +model TrainingWeightedRewardConfiguration { + @doc("Reward signal.") + reward: TrainingRewardConfiguration; + + @doc("Weight applied to this reward signal.") + weight?: float64 = 1.0; +} + +@doc("Composite reward or judge made from multiple weighted reward signals.") +model TrainingCompositeRewardConfiguration extends TrainingRewardConfiguration { + @doc("Reward or judge signal kind, always 'composite'.") + kind: "composite"; + + @doc("Weighted reward signals to combine.") + rewards: TrainingWeightedRewardConfiguration[]; } @doc("LoRA adapter configuration for parameter-efficient fine tuning.") @@ -377,16 +497,16 @@ union TrainingRolloutEngine { string, @doc("vLLM inference engine.") - Vllm: "Vllm", + Vllm: "vllm", @doc("SGLang inference engine.") - Sglang: "Sglang", + Sglang: "sglang", @doc("Hugging Face generate-based inference.") - Hf: "Hf", + Hf: "hf", @doc("Megatron-Core native inference.") - MegatronInference: "MegatronInference", + MegatronInference: "megatron_inference", } @doc("Rollout generation configuration for online reinforcement learning.") @@ -394,6 +514,30 @@ model TrainingRolloutConfiguration { @doc("Rollout inference engine.") engine: TrainingRolloutEngine; + @doc("Number of completions to generate for each prompt.") + numGenerations?: int32; + + @doc("Maximum prompt length in tokens.") + maxPromptLength?: int32; + + @doc("Maximum completion length in tokens.") + maxCompletionLength?: int32; + + @doc("Sampling temperature for rollout generation.") + temperature?: float64; + + @doc("Nucleus sampling probability for rollout generation.") + topP?: float64; + + @doc("Stop sequences for rollout generation.") + stop?: string[]; + + @doc("Rollout batch size.") + batchSize?: int32; + + @doc("Random seed for rollout generation.") + seed?: int32; + @doc("Tensor parallel size used by the rollout engine.") tensorParallelSize?: int32 = 1; @@ -406,22 +550,22 @@ union TrainingEvalBenchmark { string, @doc("Grade School Math 8K benchmark.") - Gsm8k: "Gsm8k", + Gsm8k: "gsm8k", @doc("Massive Multitask Language Understanding benchmark.") - Mmlu: "Mmlu", + Mmlu: "mmlu", @doc("Human-written code generation benchmark.") - Humaneval: "Humaneval", + Humaneval: "humaneval", @doc("Mostly Basic Python Programs benchmark.") - Mbpp: "Mbpp", + Mbpp: "mbpp", @doc("AI2 Reasoning Challenge benchmark.") - Arc: "Arc", + Arc: "arc", @doc("HellaSwag commonsense inference benchmark.") - Hellaswag: "Hellaswag", + Hellaswag: "hellaswag", } @doc("Evaluation configuration for a declarative training job.") @@ -436,22 +580,167 @@ model TrainingEvalConfiguration { everyNSteps?: int32; } +#suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "Use an extensible union for forward-compatible training algorithms." @doc("Declarative training recipe. When specified, command must be omitted and environmentImageReference is optional.") +@discriminator("algorithm") model TrainingConfiguration { @doc("Training algorithm.") algorithm: TrainingAlgorithm; - @doc("Training framework. If omitted, the service selects a compatible framework.") + @doc("Training framework implementation. If omitted, the service selects a compatible framework for the algorithm and records the resolved framework on the job.") framework?: TrainingFramework; + @doc("Training framework resolved by the service.") + @visibility(Lifecycle.Read) + resolvedFramework?: TrainingFramework; + + @doc("Version of the resolved training framework used by the service.") + @visibility(Lifecycle.Read) + frameworkVersion?: string; + @doc("Base model asset reference.") `model`: string; @doc("Training and optional evaluation datasets.") dataset: TrainingDatasetConfiguration; + @doc("Algorithm-specific hyperparameters. Strongly typed SDK helpers may project common hyperparameters into richer language-specific types.") + hyperparameters?: Record; +} + +@doc("Supervised fine-tuning recipe.") +model SftTrainingConfiguration extends TrainingConfiguration { + @doc("Training algorithm, always 'sft'.") + algorithm: "sft"; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; +} + +@doc("Direct preference optimization training recipe.") +model DpoTrainingConfiguration extends TrainingConfiguration { + @doc("Training algorithm, always 'dpo'.") + algorithm: "dpo"; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; +} + +@doc("Kahneman-Tversky optimization training recipe.") +model KtoTrainingConfiguration extends TrainingConfiguration { + @doc("Training algorithm, always 'kto'.") + algorithm: "kto"; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; +} + +@doc("Odds ratio preference optimization training recipe.") +model OrpoTrainingConfiguration extends TrainingConfiguration { + @doc("Training algorithm, always 'orpo'.") + algorithm: "orpo"; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; +} + +@doc("Contrastive preference optimization training recipe.") +model CpoTrainingConfiguration extends TrainingConfiguration { + @doc("Training algorithm, always 'cpo'.") + algorithm: "cpo"; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; +} + +@doc("Simple preference optimization training recipe.") +model SimPoTrainingConfiguration extends TrainingConfiguration { + @doc("Training algorithm, always 'simpo'.") + algorithm: "simpo"; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; +} + +@doc("Group relative policy optimization training recipe.") +model GrpoTrainingConfiguration extends TrainingConfiguration { + @doc("Training algorithm, always 'grpo'.") + algorithm: "grpo"; + + @doc("Reward signal configuration.") + reward: TrainingRewardConfiguration; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Rollout generation configuration.") + rollout?: TrainingRolloutConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; +} + +@doc("Proximal policy optimization training recipe.") +model PpoTrainingConfiguration extends TrainingConfiguration { + @doc("Training algorithm, always 'ppo'.") + algorithm: "ppo"; + + @doc("Reward signal configuration.") + reward: TrainingRewardConfiguration; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Rollout generation configuration.") + rollout?: TrainingRolloutConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; +} + +@doc("REINFORCE leave-one-out training recipe.") +model RlooTrainingConfiguration extends TrainingConfiguration { + @doc("Training algorithm, always 'rloo'.") + algorithm: "rloo"; + + @doc("Reward signal configuration.") + reward: TrainingRewardConfiguration; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Rollout generation configuration.") + rollout?: TrainingRolloutConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; +} + +@doc("REINFORCE++ training recipe.") +model ReinforcePpTrainingConfiguration extends TrainingConfiguration { + @doc("Training algorithm, always 'reinforce_pp'.") + algorithm: "reinforce_pp"; + @doc("Reward signal configuration.") - reward?: TrainingRewardConfiguration; + reward: TrainingRewardConfiguration; @doc("LoRA adapter configuration.") lora?: TrainingLoraConfiguration; @@ -463,6 +752,18 @@ model TrainingConfiguration { eval?: TrainingEvalConfiguration; } +@doc("Reward model training recipe.") +model RewardModelTrainingConfiguration extends TrainingConfiguration { + @doc("Training algorithm, always 'reward_model'.") + algorithm: "reward_model"; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; +} + @doc("Metadata pertaining to creation and last modification of the resource.") model SystemData { @doc("The identity that created the resource.") diff --git a/specification/ai-foundry/data-plane/Foundry/src/models/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/models/models.tsp new file mode 100644 index 000000000000..b16b95d0cbd2 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/src/models/models.tsp @@ -0,0 +1,717 @@ +import "../common/models.tsp"; +import "../jobs/models.tsp"; + +using TypeSpec.Rest; + +namespace Azure.AI.Projects; + +@doc("Compute placement for a managed model training job.") +model ModelTrainingComputeConfiguration { + @doc("Compute resource ID used to run the managed training job.") + id: string; + + @doc("Compute resource configuration for the managed training job.") + resources?: JobResourceConfiguration; + + @doc("Number of GPUs requested by the managed training job.") + gpuCount?: int32; + + @doc("Distribution configuration for the managed training job.") + distribution?: DistributionConfiguration; + + @doc("Queue settings for the managed training job.") + queueSettings?: QueueSettings; + + @doc("ARM resource ID of a user-assigned managed identity attached to the Foundry project.") + userAssignedIdentityId?: string; +} + +#suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" +@doc("Model asset produced by managed model training.") +@Rest.resource("models") +model Model { + @doc("Asset ID, a unique identifier for the model asset.") + @visibility(Lifecycle.Read) + id?: string; + + @doc("The name of the model asset.") + @visibility(Lifecycle.Read) + @key + name: string; + + @doc("The version of the model asset.") + @visibility(Lifecycle.Read) + version: string; + + @doc("The model asset description text.") + @visibility(Lifecycle.Read) + description?: string; + + @doc("Tags associated with the model asset.") + @visibility(Lifecycle.Read) + tags?: Record; + + @doc("URI of the registered model artifact.") + @visibility(Lifecycle.Read) + uri?: string; + + @doc("Base model used to create this model, when the model was produced by managed training.") + @visibility(Lifecycle.Read) + baseModel?: string; + + @doc("Backing training job that produced this model, when available.") + @visibility(Lifecycle.Read) + trainingJob?: string; +} + +@doc("Status of a managed model training operation.") +union ModelTrainingOperationStatus { + queued: "queued", + in_progress: "in_progress", + + @Azure.Core.lroSucceeded + succeeded: "succeeded", + + @Azure.Core.lroFailed + failed: "failed", + + @Azure.Core.lroCanceled + canceled: "canceled", +} + +@doc("Status resource for a managed model training operation.") +model ModelTrainingOperation { + @doc("Operation identifier for the managed model training request.") + operationId: string; + + @doc("Managed model training operation status.") + @Azure.Core.lroStatus + status: ModelTrainingOperationStatus; + + @doc("The model produced by managed training when the operation succeeds.") + @Azure.Core.lroResult + result?: Model; + + @doc("Error object that describes the failure when status is 'failed'.") + @Azure.Core.lroErrorResult + error?: ApiError; +} + +@doc("Column mapping for managed SFT datasets. The training dataset must contain chat messages for each training example.") +model SftTrainingColumnMapping { + @doc("Column containing chat messages used for supervised fine tuning.") + messages: string; +} + +@doc("Dataset configuration for managed supervised fine tuning.") +model SftTrainingDatasetConfiguration { + @doc("Training dataset asset reference.") + train: string; + + @doc("Optional evaluation dataset asset reference.") + eval?: string; + + @doc("Mapping from SFT training fields to dataset columns.") + columns: SftTrainingColumnMapping; + + @doc("Conversational data formatting options.") + dataFormat?: TrainingDataFormatConfiguration; +} + +@doc("Column mapping for managed GRPO datasets. The training dataset must contain prompts; reference answers or reward context can be passed to the judge.") +model GrpoTrainingColumnMapping { + @doc("Column containing prompts for rollout generation.") + prompt: string; + + @doc("Column containing reference answers or reward context passed to the judge.") + reference?: string; +} + +@doc("Dataset configuration for managed GRPO training.") +model GrpoTrainingDatasetConfiguration { + @doc("Training dataset asset reference.") + train: string; + + @doc("Optional evaluation dataset asset reference.") + eval?: string; + + @doc("Mapping from GRPO training fields to dataset columns.") + columns: GrpoTrainingColumnMapping; + + @doc("Conversational data formatting options.") + dataFormat?: TrainingDataFormatConfiguration; +} + +@doc("Preference optimization algorithm used by managed pairwise preference training.") +union PreferenceTrainingAlgorithm { + @doc("Direct preference optimization.") + dpo: "dpo", + + @doc("Odds ratio preference optimization.") + orpo: "orpo", + + @doc("Contrastive preference optimization.") + cpo: "cpo", + + @doc("Simple preference optimization.") + simpo: "simpo", +} + +@doc("Policy-gradient algorithm used by managed online reinforcement training.") +union PolicyGradientTrainingAlgorithm { + @doc("REINFORCE leave-one-out.") + rloo: "rloo", + + @doc("REINFORCE++.") + reinforce_pp: "reinforce_pp", +} + +@doc("Column mapping for pairwise preference datasets.") +model PairwisePreferenceColumnMapping { + @doc("Column containing prompts.") + prompt: string; + + @doc("Column containing the preferred response.") + chosen: string; + + @doc("Column containing the rejected response.") + rejected: string; +} + +@doc("Dataset configuration for managed pairwise preference training.") +model PairwisePreferenceDatasetConfiguration { + @doc("Training dataset asset reference.") + train: string; + + @doc("Optional evaluation dataset asset reference.") + eval?: string; + + @doc("Mapping from pairwise preference fields to dataset columns.") + columns: PairwisePreferenceColumnMapping; + + @doc("Conversational data formatting options.") + dataFormat?: TrainingDataFormatConfiguration; +} + +@doc("Column mapping for KTO feedback datasets.") +model KtoFeedbackColumnMapping { + @doc("Column containing prompts.") + prompt: string; + + @doc("Column containing responses.") + response: string; + + @doc("Column containing the binary desirability label.") + label: string; +} + +@doc("Dataset configuration for managed KTO training.") +model KtoTrainingDatasetConfiguration { + @doc("Training dataset asset reference.") + train: string; + + @doc("Optional evaluation dataset asset reference.") + eval?: string; + + @doc("Mapping from KTO fields to dataset columns.") + columns: KtoFeedbackColumnMapping; + + @doc("Conversational data formatting options.") + dataFormat?: TrainingDataFormatConfiguration; +} + +@doc("Column mapping for scored reward-model datasets.") +model ScoredRewardModelColumnMapping { + @doc("Column containing prompts.") + prompt: string; + + @doc("Column containing responses.") + response: string; + + @doc("Column containing numeric reward scores.") + score: string; +} + +#suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "Use an extensible union for forward-compatible reward-model dataset shapes." +@doc("Dataset configuration for managed reward-model training.") +@discriminator("kind") +model RewardModelTrainingDatasetConfiguration { + @doc("Reward-model dataset kind.") + kind: string; +} + +@doc("Pairwise preference dataset for managed reward-model training.") +model PairwiseRewardModelTrainingDatasetConfiguration + extends RewardModelTrainingDatasetConfiguration { + @doc("Reward-model dataset kind, always 'pairwise'.") + kind: "pairwise"; + + @doc("Training dataset asset reference.") + train: string; + + @doc("Optional evaluation dataset asset reference.") + eval?: string; + + @doc("Mapping from pairwise preference fields to dataset columns.") + columns: PairwisePreferenceColumnMapping; + + @doc("Conversational data formatting options.") + dataFormat?: TrainingDataFormatConfiguration; +} + +@doc("Scored response dataset for managed reward-model training.") +model ScoredRewardModelTrainingDatasetConfiguration + extends RewardModelTrainingDatasetConfiguration { + @doc("Reward-model dataset kind, always 'scored'.") + kind: "scored"; + + @doc("Training dataset asset reference.") + train: string; + + @doc("Optional evaluation dataset asset reference.") + eval?: string; + + @doc("Mapping from scored response fields to dataset columns.") + columns: ScoredRewardModelColumnMapping; + + @doc("Conversational data formatting options.") + dataFormat?: TrainingDataFormatConfiguration; +} + +#suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "Use an extensible union for forward-compatible reference policy kinds." +@doc("Reference policy used for preference optimization or online reinforcement training.") +@discriminator("kind") +model ModelTrainingReferenceConfiguration { + @doc("Reference policy kind.") + kind: string; +} + +@doc("Use the submitted base model as the reference policy.") +model BaseModelReferenceConfiguration + extends ModelTrainingReferenceConfiguration { + @doc("Reference policy kind, always 'base_model'.") + kind: "base_model"; +} + +@doc("Use an explicit model as the reference policy.") +model ExplicitModelReferenceConfiguration + extends ModelTrainingReferenceConfiguration { + @doc("Reference policy kind, always 'model'.") + kind: "model"; + + @doc("Reference model asset URI.") + `model`: string; +} + +@doc("Disable reference policy or KL anchoring.") +model NoReferenceConfiguration extends ModelTrainingReferenceConfiguration { + @doc("Reference policy kind, always 'none'.") + kind: "none"; +} + +@doc("Output packaging for a managed model training job.") +union ModelTrainingPackagingMode { + @doc("Register a merged full model.") + merged_model: "merged_model", + + @doc("Register only the adapter weights.") + adapter: "adapter", + + @doc("Register both merged model and adapter weights.") + model_and_adapter: "model_and_adapter", +} + +@doc("Model artifact packaging options.") +model ModelTrainingPackagingConfiguration { + @doc("How the trained model artifact should be packaged.") + mode?: ModelTrainingPackagingMode = ModelTrainingPackagingMode.merged_model; +} + +@doc("Loss function used for reward-model training.") +union RewardModelTrainingLoss { + string, + + @doc("Bradley-Terry pairwise ranking loss.") + bradley_terry: "bradley_terry", + + @doc("Regression loss over numeric scores.") + regression: "regression", +} + +@doc("Critic or value model configuration for managed PPO training.") +model PpoCriticConfiguration { + @doc("Optional critic model asset reference. If omitted, the service initializes the critic from the policy model.") + `model`?: string; + + @doc("Value loss coefficient.") + valueLossCoefficient?: float64; + + @doc("GAE discount factor.") + gamma?: float64; + + @doc("GAE lambda.") + lambda?: float64; +} + +@doc("Runtime options for managed supervised fine tuning.") +model SftTrainingRuntimeConfiguration { + @doc("Training framework implementation. If omitted, the service selects a compatible framework.") + framework?: TrainingFramework; + + @doc("Algorithm-specific hyperparameters passed through to the selected framework.") + hyperparameters?: Record; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; + + @doc("Model artifact packaging options.") + packaging?: ModelTrainingPackagingConfiguration; +} + +@doc("Runtime options for managed pairwise preference training.") +model PreferenceTrainingRuntimeConfiguration { + @doc("Training framework implementation. If omitted, the service selects a compatible framework.") + framework?: TrainingFramework; + + @doc("Algorithm-specific hyperparameters passed through to the selected framework.") + hyperparameters?: Record; + + @doc("Reference policy used by algorithms that require KL anchoring or a reference model.") + reference?: ModelTrainingReferenceConfiguration; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; + + @doc("Model artifact packaging options.") + packaging?: ModelTrainingPackagingConfiguration; +} + +@doc("Runtime options for managed KTO training.") +model KtoTrainingRuntimeConfiguration { + @doc("Training framework implementation. If omitted, the service selects a compatible framework.") + framework?: TrainingFramework; + + @doc("Algorithm-specific hyperparameters passed through to the selected framework.") + hyperparameters?: Record; + + @doc("Weight applied to desirable examples.") + desirableWeight?: float64; + + @doc("Weight applied to undesirable examples.") + undesirableWeight?: float64; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; + + @doc("Model artifact packaging options.") + packaging?: ModelTrainingPackagingConfiguration; +} + +@doc("Runtime options for managed reward-model training.") +model RewardModelTrainingRuntimeConfiguration { + @doc("Training framework implementation. If omitted, the service selects a compatible framework.") + framework?: TrainingFramework; + + @doc("Algorithm-specific hyperparameters passed through to the selected framework.") + hyperparameters?: Record; + + @doc("Loss function used for reward-model training.") + loss?: RewardModelTrainingLoss; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; + + @doc("Model artifact packaging options.") + packaging?: ModelTrainingPackagingConfiguration; +} + +@doc("Runtime options for managed GRPO training.") +model GrpoTrainingRuntimeConfiguration { + @doc("Training framework implementation. If omitted, the service selects a compatible framework.") + framework?: TrainingFramework; + + @doc("Algorithm-specific hyperparameters passed through to the selected framework.") + hyperparameters?: Record; + + @doc("Judge used to score generated completions during GRPO training.") + judge: TrainingRewardConfiguration; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Rollout generation configuration.") + rollout?: TrainingRolloutConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; + + @doc("Reference policy used for KL anchoring.") + reference?: ModelTrainingReferenceConfiguration; + + @doc("Model artifact packaging options.") + packaging?: ModelTrainingPackagingConfiguration; +} + +@doc("Runtime options for managed online policy-gradient training.") +model PolicyGradientTrainingRuntimeConfiguration { + @doc("Training framework implementation. If omitted, the service selects a compatible framework.") + framework?: TrainingFramework; + + @doc("Algorithm-specific hyperparameters passed through to the selected framework.") + hyperparameters?: Record; + + @doc("Judge used to score generated completions during online training.") + judge: TrainingRewardConfiguration; + + @doc("Reference policy used for KL anchoring.") + reference?: ModelTrainingReferenceConfiguration; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Rollout generation configuration.") + rollout: TrainingRolloutConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; + + @doc("Model artifact packaging options.") + packaging?: ModelTrainingPackagingConfiguration; +} + +@doc("Runtime options for managed PPO training.") +model PpoTrainingRuntimeConfiguration { + @doc("Training framework implementation. If omitted, the service selects a compatible framework.") + framework?: TrainingFramework; + + @doc("Algorithm-specific hyperparameters passed through to the selected framework.") + hyperparameters?: Record; + + @doc("Judge used to score generated completions during PPO training.") + judge: TrainingRewardConfiguration; + + @doc("Reference policy used for KL anchoring.") + reference?: ModelTrainingReferenceConfiguration; + + @doc("Critic or value model configuration.") + critic?: PpoCriticConfiguration; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Rollout generation configuration.") + rollout: TrainingRolloutConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; + + @doc("Model artifact packaging options.") + packaging?: ModelTrainingPackagingConfiguration; +} + +@doc("Request body for creating a managed SFT training job from a base model.") +model SftModelTrainingJobCreate { + @doc("Optional name of the model to create. If omitted, the service generates one.") + name?: string; + + @doc("Optional version of the model to create. If omitted, the service generates one.") + version?: string; + + @doc("Optional description for the model to create.") + description?: string; + + @doc("Optional tags for the model to create.") + tags?: Record; + + @doc("Base model asset reference.") + `model`: string; + + @doc("Training and optional evaluation datasets.") + dataset: SftTrainingDatasetConfiguration; + + @doc("Runtime options for managed SFT.") + runtime?: SftTrainingRuntimeConfiguration; + + @doc("Compute placement for the managed training job.") + compute: ModelTrainingComputeConfiguration; +} + +@doc("Request body for creating a managed pairwise preference training job from a base model.") +model PreferenceModelTrainingJobCreate { + @doc("Preference optimization algorithm to run.") + algorithm: PreferenceTrainingAlgorithm; + + @doc("Optional name of the model to create. If omitted, the service generates one.") + name?: string; + + @doc("Optional version of the model to create. If omitted, the service generates one.") + version?: string; + + @doc("Optional description for the model to create.") + description?: string; + + @doc("Optional tags for the model to create.") + tags?: Record; + + @doc("Base model asset reference.") + `model`: string; + + @doc("Training and optional evaluation datasets.") + dataset: PairwisePreferenceDatasetConfiguration; + + @doc("Runtime options for managed pairwise preference training.") + runtime?: PreferenceTrainingRuntimeConfiguration; + + @doc("Compute placement for the managed training job.") + compute: ModelTrainingComputeConfiguration; +} + +@doc("Request body for creating a managed KTO training job from a base model.") +model KtoModelTrainingJobCreate { + @doc("Optional name of the model to create. If omitted, the service generates one.") + name?: string; + + @doc("Optional version of the model to create. If omitted, the service generates one.") + version?: string; + + @doc("Optional description for the model to create.") + description?: string; + + @doc("Optional tags for the model to create.") + tags?: Record; + + @doc("Base model asset reference.") + `model`: string; + + @doc("Training and optional evaluation datasets.") + dataset: KtoTrainingDatasetConfiguration; + + @doc("Runtime options for managed KTO.") + runtime?: KtoTrainingRuntimeConfiguration; + + @doc("Compute placement for the managed training job.") + compute: ModelTrainingComputeConfiguration; +} + +@doc("Request body for creating a managed reward-model training job from a base model.") +model RewardModelTrainingJobCreate { + @doc("Optional name of the reward model to create. If omitted, the service generates one.") + name?: string; + + @doc("Optional version of the reward model to create. If omitted, the service generates one.") + version?: string; + + @doc("Optional description for the reward model to create.") + description?: string; + + @doc("Optional tags for the reward model to create.") + tags?: Record; + + @doc("Base model asset reference.") + `model`: string; + + @doc("Training and optional evaluation datasets.") + dataset: RewardModelTrainingDatasetConfiguration; + + @doc("Runtime options for managed reward-model training.") + runtime?: RewardModelTrainingRuntimeConfiguration; + + @doc("Compute placement for the managed training job.") + compute: ModelTrainingComputeConfiguration; +} + +@doc("Request body for creating a managed GRPO training job from a base model.") +model GrpoModelTrainingJobCreate { + @doc("Optional name of the model to create. If omitted, the service generates one.") + name?: string; + + @doc("Optional version of the model to create. If omitted, the service generates one.") + version?: string; + + @doc("Optional description for the model to create.") + description?: string; + + @doc("Optional tags for the model to create.") + tags?: Record; + + @doc("Base model asset reference.") + `model`: string; + + @doc("Training and optional evaluation datasets.") + dataset: GrpoTrainingDatasetConfiguration; + + @doc("Runtime options for managed GRPO.") + runtime: GrpoTrainingRuntimeConfiguration; + + @doc("Compute placement for the managed training job.") + compute: ModelTrainingComputeConfiguration; +} + +@doc("Request body for creating a managed online policy-gradient training job from a base model.") +model PolicyGradientModelTrainingJobCreate { + @doc("Policy-gradient algorithm to run.") + algorithm: PolicyGradientTrainingAlgorithm; + + @doc("Optional name of the model to create. If omitted, the service generates one.") + name?: string; + + @doc("Optional version of the model to create. If omitted, the service generates one.") + version?: string; + + @doc("Optional description for the model to create.") + description?: string; + + @doc("Optional tags for the model to create.") + tags?: Record; + + @doc("Base model asset reference.") + `model`: string; + + @doc("Training and optional evaluation datasets.") + dataset: GrpoTrainingDatasetConfiguration; + + @doc("Runtime options for managed online policy-gradient training.") + runtime: PolicyGradientTrainingRuntimeConfiguration; + + @doc("Compute placement for the managed training job.") + compute: ModelTrainingComputeConfiguration; +} + +@doc("Request body for creating a managed PPO training job from a base model.") +model PpoModelTrainingJobCreate { + @doc("Optional name of the model to create. If omitted, the service generates one.") + name?: string; + + @doc("Optional version of the model to create. If omitted, the service generates one.") + version?: string; + + @doc("Optional description for the model to create.") + description?: string; + + @doc("Optional tags for the model to create.") + tags?: Record; + + @doc("Base model asset reference.") + `model`: string; + + @doc("Training and optional evaluation datasets.") + dataset: GrpoTrainingDatasetConfiguration; + + @doc("Runtime options for managed PPO.") + runtime: PpoTrainingRuntimeConfiguration; + + @doc("Compute placement for the managed training job.") + compute: ModelTrainingComputeConfiguration; +} diff --git a/specification/ai-foundry/data-plane/Foundry/src/models/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/models/routes.tsp new file mode 100644 index 000000000000..4fe14453aa1e --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/src/models/routes.tsp @@ -0,0 +1,162 @@ +import "./models.tsp"; +import "../common/models.tsp"; +import "../jobs/models.tsp"; + +using TypeSpec.Http; +using Azure.Core; + +namespace Azure.AI.Projects; + +alias ModelTrainingAcceptedResponse = Foundations.AcceptedResponse & + ModelTrainingOperation & + Foundations.LongRunningStatusLocation; + +@tag("Models") +interface Models { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Managed model training is a product action that creates an underlying training job resource." + @doc("Create a model by running managed supervised fine-tuning.") + @post + @route("/models:create_sft_training_job") + @pollingOperation(Models.getTrainingOperationResult) + createSftTrainingJob is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("Idempotency key used to safely retry managed model training.") + @header("Operation-Id") + operationId?: string; + + @doc("The managed SFT model training request.") + @bodyRoot + request: SftModelTrainingJobCreate; + }, + ModelTrainingAcceptedResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Managed model training is a product action that creates an underlying training job resource." + @doc("Create a model by running managed pairwise preference training.") + @post + @route("/models:create_preference_training_job") + @pollingOperation(Models.getTrainingOperationResult) + createPreferenceTrainingJob is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("Idempotency key used to safely retry managed model training.") + @header("Operation-Id") + operationId?: string; + + @doc("The managed pairwise preference model training request.") + @bodyRoot + request: PreferenceModelTrainingJobCreate; + }, + ModelTrainingAcceptedResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Managed model training is a product action that creates an underlying training job resource." + @doc("Create a model by running managed KTO training.") + @post + @route("/models:create_kto_training_job") + @pollingOperation(Models.getTrainingOperationResult) + createKtoTrainingJob is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("Idempotency key used to safely retry managed model training.") + @header("Operation-Id") + operationId?: string; + + @doc("The managed KTO model training request.") + @bodyRoot + request: KtoModelTrainingJobCreate; + }, + ModelTrainingAcceptedResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Managed model training is a product action that creates an underlying training job resource." + @doc("Create a reward model by running managed reward-model training.") + @post + @route("/models:create_reward_model_training_job") + @pollingOperation(Models.getTrainingOperationResult) + createRewardModelTrainingJob is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("Idempotency key used to safely retry managed model training.") + @header("Operation-Id") + operationId?: string; + + @doc("The managed reward-model training request.") + @bodyRoot + request: RewardModelTrainingJobCreate; + }, + ModelTrainingAcceptedResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Managed model training is a product action that creates an underlying training job resource." + @doc("Create a model by running managed GRPO training.") + @post + @route("/models:create_grpo_training_job") + @pollingOperation(Models.getTrainingOperationResult) + createGrpoTrainingJob is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("Idempotency key used to safely retry managed model training.") + @header("Operation-Id") + operationId?: string; + + @doc("The managed GRPO model training request.") + @bodyRoot + request: GrpoModelTrainingJobCreate; + }, + ModelTrainingAcceptedResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Managed model training is a product action that creates an underlying training job resource." + @doc("Create a model by running managed online policy-gradient training.") + @post + @route("/models:create_policy_gradient_training_job") + @pollingOperation(Models.getTrainingOperationResult) + createPolicyGradientTrainingJob is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("Idempotency key used to safely retry managed model training.") + @header("Operation-Id") + operationId?: string; + + @doc("The managed online policy-gradient model training request.") + @bodyRoot + request: PolicyGradientModelTrainingJobCreate; + }, + ModelTrainingAcceptedResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Managed model training is a product action that creates an underlying training job resource." + @doc("Create a model by running managed PPO training.") + @post + @route("/models:create_ppo_training_job") + @pollingOperation(Models.getTrainingOperationResult) + createPpoTrainingJob is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("Idempotency key used to safely retry managed model training.") + @header("Operation-Id") + operationId?: string; + + @doc("The managed PPO model training request.") + @bodyRoot + request: PpoModelTrainingJobCreate; + }, + ModelTrainingAcceptedResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Foundry model training operations are exposed as product-action polling routes under models." + @doc("Poll the result of a managed model training operation.") + @get + @route("/models/operations/{operationId}/result") + getTrainingOperationResult is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The managed model training operation identifier.") + @path + operationId: string; + }, + ModelTrainingOperation + >; +} From 35a0f1828c9868385a22bc05125125746ec06204 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Tue, 5 May 2026 18:20:56 -0700 Subject: [PATCH 15/37] feat(foundry): expose ray client remote access Add Ray client remote-access fields to the interactive Ray request and Ray distribution contracts. Regenerate Foundry OpenAPI output and update the interactive Ray example. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- ...CreateInteractiveRayJob_MaximumSet_Gen.json | 8 ++++++-- .../v1/microsoft-foundry-openapi3.json | 18 ++++++++++++++++++ .../microsoft-foundry-openapi3.json | 18 ++++++++++++++++++ .../data-plane/Foundry/src/clusters/models.tsp | 6 ++++++ .../data-plane/Foundry/src/jobs/models.tsp | 6 ++++++ 5 files changed, 54 insertions(+), 2 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_CreateInteractiveRayJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_CreateInteractiveRayJob_MaximumSet_Gen.json index cbd14d4d1615..9f5bed025f16 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_CreateInteractiveRayJob_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_CreateInteractiveRayJob_MaximumSet_Gen.json @@ -13,7 +13,9 @@ "tags": { "scenario": "interactive-ray" }, - "instanceCount": 4 + "instanceCount": 4, + "enableRemoteAccessClientServer": true, + "clientServerPort": 10001 } }, "responses": { @@ -34,7 +36,9 @@ "distributionType": "Ray", "port": 6379, "includeDashboard": true, - "dashboardPort": 8265 + "dashboardPort": 8265, + "enableRemoteAccessClientServer": true, + "clientServerPort": 10001 }, "resources": { "instanceCount": 4 diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 5cf337b2aa48..e030aeb435ff 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -22290,6 +22290,15 @@ "type": "integer", "format": "int32", "description": "Number of compute nodes to reserve for the interactive Ray session." + }, + "enableRemoteAccessClientServer": { + "type": "boolean", + "description": "Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally." + }, + "clientServerPort": { + "type": "integer", + "format": "int32", + "description": "The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true." } }, "description": "Request body for creating an interactive Ray command job on a compute cluster." @@ -45632,6 +45641,15 @@ "workerNodeAdditionalArgs": { "type": "string", "description": "Additional arguments passed to ray start on worker nodes." + }, + "enableRemoteAccessClientServer": { + "type": "boolean", + "description": "Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally." + }, + "clientServerPort": { + "type": "integer", + "format": "int32", + "description": "The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true." } }, "allOf": [ diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 7ba8708d6308..fe455c726359 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -26672,6 +26672,15 @@ "type": "integer", "format": "int32", "description": "Number of compute nodes to reserve for the interactive Ray session." + }, + "enableRemoteAccessClientServer": { + "type": "boolean", + "description": "Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally." + }, + "clientServerPort": { + "type": "integer", + "format": "int32", + "description": "The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true." } }, "description": "Request body for creating an interactive Ray command job on a compute cluster." @@ -50320,6 +50329,15 @@ "workerNodeAdditionalArgs": { "type": "string", "description": "Additional arguments passed to ray start on worker nodes." + }, + "enableRemoteAccessClientServer": { + "type": "boolean", + "description": "Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally." + }, + "clientServerPort": { + "type": "integer", + "format": "int32", + "description": "The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true." } }, "allOf": [ diff --git a/specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp index 9693c70a3eca..f6f8737856ff 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp @@ -18,4 +18,10 @@ model InteractiveRayJobCreate { @doc("Number of compute nodes to reserve for the interactive Ray session.") instanceCount: int32; + + @doc("Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally.") + enableRemoteAccessClientServer?: boolean; + + @doc("The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true.") + clientServerPort?: int32; } \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp index 440aeb0c53f6..535f5829eb68 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp @@ -67,6 +67,12 @@ model RayDistribution extends DistributionConfiguration { @doc("Additional arguments passed to ray start on worker nodes.") workerNodeAdditionalArgs?: string; + + @doc("Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally.") + enableRemoteAccessClientServer?: boolean; + + @doc("The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true.") + clientServerPort?: int32; } @doc("Enum to determine the input/output data delivery mode.") From 61007a9d6c03b3566c65979be5ffa9c118bc3814 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Tue, 5 May 2026 18:41:17 -0700 Subject: [PATCH 16/37] docs(foundry): clarify managed training columns Improve SDK/OpenAPI documentation for algorithm-specific dataset column mappings and required runtime fields. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../v1/microsoft-foundry-openapi3.json | 56 +++++++++---------- .../microsoft-foundry-openapi3.json | 56 +++++++++---------- .../data-plane/Foundry/src/models/models.tsp | 56 +++++++++---------- 3 files changed, 84 insertions(+), 84 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index e030aeb435ff..b41a8f06ed69 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -21506,14 +21506,14 @@ "properties": { "prompt": { "type": "string", - "description": "Column containing prompts for rollout generation." + "description": "Actual dataset column name containing prompts for rollout generation, for example 'prompt', 'question', or 'problem'." }, "reference": { "type": "string", - "description": "Column containing reference answers or reward context passed to the judge." + "description": "Actual dataset column name containing reference answers or reward context passed to the judge, for example 'answer' or 'reference'." } }, - "description": "Column mapping for managed GRPO datasets. The training dataset must contain prompts; reference answers or reward context can be passed to the judge." + "description": "Column mapping for managed online RL prompt datasets. Keys are logical fields expected by GRPO, RLOO, REINFORCE++, and PPO; values are the exact column names in the referenced dataset asset. The training dataset must contain prompts; reference answers or reward context can be passed to the judge." }, "GrpoTrainingConfiguration": { "type": "object", @@ -21590,7 +21590,7 @@ "$ref": "#/components/schemas/GrpoTrainingColumnMapping" } ], - "description": "Mapping from GRPO training fields to dataset columns." + "description": "Mapping from online RL logical fields to actual dataset column names. GRPO, policy-gradient, and PPO require the 'prompt' logical field and can optionally map 'reference'." }, "dataFormat": { "allOf": [ @@ -21628,7 +21628,7 @@ "$ref": "#/components/schemas/TrainingRewardConfiguration" } ], - "description": "Judge used to score generated completions during GRPO training." + "description": "Judge used to score generated completions during GRPO training. Required for GRPO." }, "lora": { "allOf": [ @@ -23070,18 +23070,18 @@ "properties": { "prompt": { "type": "string", - "description": "Column containing prompts." + "description": "Actual dataset column name containing prompts, for example 'prompt' or 'question'." }, "response": { "type": "string", - "description": "Column containing responses." + "description": "Actual dataset column name containing responses, for example 'response', 'completion', or 'answer'." }, "label": { "type": "string", - "description": "Column containing the binary desirability label." + "description": "Actual dataset column name containing the binary desirability label, for example 'label' or 'is_desirable'." } }, - "description": "Column mapping for KTO feedback datasets." + "description": "Column mapping for KTO feedback datasets. Keys are logical fields expected by KTO; values are the exact column names in the referenced dataset asset." }, "KtoModelTrainingJobCreate": { "type": "object", @@ -23199,7 +23199,7 @@ "$ref": "#/components/schemas/KtoFeedbackColumnMapping" } ], - "description": "Mapping from KTO fields to dataset columns." + "description": "Mapping from KTO logical fields to actual dataset column names. KTO requires 'prompt', 'response', and 'label'." }, "dataFormat": { "allOf": [ @@ -44764,18 +44764,18 @@ "properties": { "prompt": { "type": "string", - "description": "Column containing prompts." + "description": "Actual dataset column name containing prompts, for example 'prompt' or 'question'." }, "chosen": { "type": "string", - "description": "Column containing the preferred response." + "description": "Actual dataset column name containing the preferred response, for example 'chosen', 'accepted_answer', or 'good_response'." }, "rejected": { "type": "string", - "description": "Column containing the rejected response." + "description": "Actual dataset column name containing the rejected response, for example 'rejected', 'rejected_answer', or 'bad_response'." } }, - "description": "Column mapping for pairwise preference datasets." + "description": "Column mapping for pairwise preference datasets. Keys are logical fields expected by preference training; values are the exact column names in the referenced dataset asset." }, "PairwisePreferenceDatasetConfiguration": { "type": "object", @@ -44798,7 +44798,7 @@ "$ref": "#/components/schemas/PairwisePreferenceColumnMapping" } ], - "description": "Mapping from pairwise preference fields to dataset columns." + "description": "Mapping from pairwise preference logical fields to actual dataset column names. DPO, ORPO, CPO, and SimPO require 'prompt', 'chosen', and 'rejected'." }, "dataFormat": { "allOf": [ @@ -44840,7 +44840,7 @@ "$ref": "#/components/schemas/PairwisePreferenceColumnMapping" } ], - "description": "Mapping from pairwise preference fields to dataset columns." + "description": "Mapping from pairwise reward-model logical fields to actual dataset column names. Pairwise reward-model training requires 'prompt', 'chosen', and 'rejected'." }, "dataFormat": { "allOf": [ @@ -45018,7 +45018,7 @@ "$ref": "#/components/schemas/TrainingRewardConfiguration" } ], - "description": "Judge used to score generated completions during online training." + "description": "Judge used to score generated completions during online policy-gradient training. Required for RLOO and REINFORCE++." }, "reference": { "allOf": [ @@ -45042,7 +45042,7 @@ "$ref": "#/components/schemas/TrainingRolloutConfiguration" } ], - "description": "Rollout generation configuration." + "description": "Rollout generation configuration. Required for RLOO and REINFORCE++." }, "eval": { "allOf": [ @@ -45227,7 +45227,7 @@ "$ref": "#/components/schemas/TrainingRewardConfiguration" } ], - "description": "Judge used to score generated completions during PPO training." + "description": "Judge used to score generated completions during PPO training. Required for PPO." }, "reference": { "allOf": [ @@ -45259,7 +45259,7 @@ "$ref": "#/components/schemas/TrainingRolloutConfiguration" } ], - "description": "Rollout generation configuration." + "description": "Rollout generation configuration. Required for PPO." }, "eval": { "allOf": [ @@ -46605,18 +46605,18 @@ "properties": { "prompt": { "type": "string", - "description": "Column containing prompts." + "description": "Actual dataset column name containing prompts, for example 'prompt' or 'question'." }, "response": { "type": "string", - "description": "Column containing responses." + "description": "Actual dataset column name containing responses, for example 'response' or 'completion'." }, "score": { "type": "string", - "description": "Column containing numeric reward scores." + "description": "Actual dataset column name containing numeric reward scores, for example 'score' or 'reward'." } }, - "description": "Column mapping for scored reward-model datasets." + "description": "Column mapping for scored reward-model datasets. Keys are logical fields expected by scored reward-model training; values are the exact column names in the referenced dataset asset." }, "ScoredRewardModelTrainingDatasetConfiguration": { "type": "object", @@ -46647,7 +46647,7 @@ "$ref": "#/components/schemas/ScoredRewardModelColumnMapping" } ], - "description": "Mapping from scored response fields to dataset columns." + "description": "Mapping from scored reward-model logical fields to actual dataset column names. Scored reward-model training requires 'prompt', 'response', and 'score'." }, "dataFormat": { "allOf": [ @@ -46731,10 +46731,10 @@ "properties": { "messages": { "type": "string", - "description": "Column containing chat messages used for supervised fine tuning." + "description": "Actual dataset column name containing chat messages used for supervised fine tuning, for example 'messages' or 'conversation_json'." } }, - "description": "Column mapping for managed SFT datasets. The training dataset must contain chat messages for each training example." + "description": "Column mapping for managed SFT datasets. Keys are logical fields expected by SFT; values are the exact column names in the referenced dataset asset. The training dataset must contain chat messages for each training example." }, "SftTrainingConfiguration": { "type": "object", @@ -46794,7 +46794,7 @@ "$ref": "#/components/schemas/SftTrainingColumnMapping" } ], - "description": "Mapping from SFT training fields to dataset columns." + "description": "Mapping from SFT logical fields to actual dataset column names. SFT requires the 'messages' logical field." }, "dataFormat": { "allOf": [ diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index fe455c726359..c6e00ddc00d6 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -25729,14 +25729,14 @@ "properties": { "prompt": { "type": "string", - "description": "Column containing prompts for rollout generation." + "description": "Actual dataset column name containing prompts for rollout generation, for example 'prompt', 'question', or 'problem'." }, "reference": { "type": "string", - "description": "Column containing reference answers or reward context passed to the judge." + "description": "Actual dataset column name containing reference answers or reward context passed to the judge, for example 'answer' or 'reference'." } }, - "description": "Column mapping for managed GRPO datasets. The training dataset must contain prompts; reference answers or reward context can be passed to the judge." + "description": "Column mapping for managed online RL prompt datasets. Keys are logical fields expected by GRPO, RLOO, REINFORCE++, and PPO; values are the exact column names in the referenced dataset asset. The training dataset must contain prompts; reference answers or reward context can be passed to the judge." }, "GrpoTrainingConfiguration": { "type": "object", @@ -25813,7 +25813,7 @@ "$ref": "#/components/schemas/GrpoTrainingColumnMapping" } ], - "description": "Mapping from GRPO training fields to dataset columns." + "description": "Mapping from online RL logical fields to actual dataset column names. GRPO, policy-gradient, and PPO require the 'prompt' logical field and can optionally map 'reference'." }, "dataFormat": { "allOf": [ @@ -25851,7 +25851,7 @@ "$ref": "#/components/schemas/TrainingRewardConfiguration" } ], - "description": "Judge used to score generated completions during GRPO training." + "description": "Judge used to score generated completions during GRPO training. Required for GRPO." }, "lora": { "allOf": [ @@ -27494,18 +27494,18 @@ "properties": { "prompt": { "type": "string", - "description": "Column containing prompts." + "description": "Actual dataset column name containing prompts, for example 'prompt' or 'question'." }, "response": { "type": "string", - "description": "Column containing responses." + "description": "Actual dataset column name containing responses, for example 'response', 'completion', or 'answer'." }, "label": { "type": "string", - "description": "Column containing the binary desirability label." + "description": "Actual dataset column name containing the binary desirability label, for example 'label' or 'is_desirable'." } }, - "description": "Column mapping for KTO feedback datasets." + "description": "Column mapping for KTO feedback datasets. Keys are logical fields expected by KTO; values are the exact column names in the referenced dataset asset." }, "KtoModelTrainingJobCreate": { "type": "object", @@ -27623,7 +27623,7 @@ "$ref": "#/components/schemas/KtoFeedbackColumnMapping" } ], - "description": "Mapping from KTO fields to dataset columns." + "description": "Mapping from KTO logical fields to actual dataset column names. KTO requires 'prompt', 'response', and 'label'." }, "dataFormat": { "allOf": [ @@ -49426,18 +49426,18 @@ "properties": { "prompt": { "type": "string", - "description": "Column containing prompts." + "description": "Actual dataset column name containing prompts, for example 'prompt' or 'question'." }, "chosen": { "type": "string", - "description": "Column containing the preferred response." + "description": "Actual dataset column name containing the preferred response, for example 'chosen', 'accepted_answer', or 'good_response'." }, "rejected": { "type": "string", - "description": "Column containing the rejected response." + "description": "Actual dataset column name containing the rejected response, for example 'rejected', 'rejected_answer', or 'bad_response'." } }, - "description": "Column mapping for pairwise preference datasets." + "description": "Column mapping for pairwise preference datasets. Keys are logical fields expected by preference training; values are the exact column names in the referenced dataset asset." }, "PairwisePreferenceDatasetConfiguration": { "type": "object", @@ -49460,7 +49460,7 @@ "$ref": "#/components/schemas/PairwisePreferenceColumnMapping" } ], - "description": "Mapping from pairwise preference fields to dataset columns." + "description": "Mapping from pairwise preference logical fields to actual dataset column names. DPO, ORPO, CPO, and SimPO require 'prompt', 'chosen', and 'rejected'." }, "dataFormat": { "allOf": [ @@ -49502,7 +49502,7 @@ "$ref": "#/components/schemas/PairwisePreferenceColumnMapping" } ], - "description": "Mapping from pairwise preference fields to dataset columns." + "description": "Mapping from pairwise reward-model logical fields to actual dataset column names. Pairwise reward-model training requires 'prompt', 'chosen', and 'rejected'." }, "dataFormat": { "allOf": [ @@ -49706,7 +49706,7 @@ "$ref": "#/components/schemas/TrainingRewardConfiguration" } ], - "description": "Judge used to score generated completions during online training." + "description": "Judge used to score generated completions during online policy-gradient training. Required for RLOO and REINFORCE++." }, "reference": { "allOf": [ @@ -49730,7 +49730,7 @@ "$ref": "#/components/schemas/TrainingRolloutConfiguration" } ], - "description": "Rollout generation configuration." + "description": "Rollout generation configuration. Required for RLOO and REINFORCE++." }, "eval": { "allOf": [ @@ -49915,7 +49915,7 @@ "$ref": "#/components/schemas/TrainingRewardConfiguration" } ], - "description": "Judge used to score generated completions during PPO training." + "description": "Judge used to score generated completions during PPO training. Required for PPO." }, "reference": { "allOf": [ @@ -49947,7 +49947,7 @@ "$ref": "#/components/schemas/TrainingRolloutConfiguration" } ], - "description": "Rollout generation configuration." + "description": "Rollout generation configuration. Required for PPO." }, "eval": { "allOf": [ @@ -51293,18 +51293,18 @@ "properties": { "prompt": { "type": "string", - "description": "Column containing prompts." + "description": "Actual dataset column name containing prompts, for example 'prompt' or 'question'." }, "response": { "type": "string", - "description": "Column containing responses." + "description": "Actual dataset column name containing responses, for example 'response' or 'completion'." }, "score": { "type": "string", - "description": "Column containing numeric reward scores." + "description": "Actual dataset column name containing numeric reward scores, for example 'score' or 'reward'." } }, - "description": "Column mapping for scored reward-model datasets." + "description": "Column mapping for scored reward-model datasets. Keys are logical fields expected by scored reward-model training; values are the exact column names in the referenced dataset asset." }, "ScoredRewardModelTrainingDatasetConfiguration": { "type": "object", @@ -51335,7 +51335,7 @@ "$ref": "#/components/schemas/ScoredRewardModelColumnMapping" } ], - "description": "Mapping from scored response fields to dataset columns." + "description": "Mapping from scored reward-model logical fields to actual dataset column names. Scored reward-model training requires 'prompt', 'response', and 'score'." }, "dataFormat": { "allOf": [ @@ -51515,10 +51515,10 @@ "properties": { "messages": { "type": "string", - "description": "Column containing chat messages used for supervised fine tuning." + "description": "Actual dataset column name containing chat messages used for supervised fine tuning, for example 'messages' or 'conversation_json'." } }, - "description": "Column mapping for managed SFT datasets. The training dataset must contain chat messages for each training example." + "description": "Column mapping for managed SFT datasets. Keys are logical fields expected by SFT; values are the exact column names in the referenced dataset asset. The training dataset must contain chat messages for each training example." }, "SftTrainingConfiguration": { "type": "object", @@ -51578,7 +51578,7 @@ "$ref": "#/components/schemas/SftTrainingColumnMapping" } ], - "description": "Mapping from SFT training fields to dataset columns." + "description": "Mapping from SFT logical fields to actual dataset column names. SFT requires the 'messages' logical field." }, "dataFormat": { "allOf": [ diff --git a/specification/ai-foundry/data-plane/Foundry/src/models/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/models/models.tsp index b16b95d0cbd2..b14a2c92461e 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/models/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/models/models.tsp @@ -97,9 +97,9 @@ model ModelTrainingOperation { error?: ApiError; } -@doc("Column mapping for managed SFT datasets. The training dataset must contain chat messages for each training example.") +@doc("Column mapping for managed SFT datasets. Keys are logical fields expected by SFT; values are the exact column names in the referenced dataset asset. The training dataset must contain chat messages for each training example.") model SftTrainingColumnMapping { - @doc("Column containing chat messages used for supervised fine tuning.") + @doc("Actual dataset column name containing chat messages used for supervised fine tuning, for example 'messages' or 'conversation_json'.") messages: string; } @@ -111,19 +111,19 @@ model SftTrainingDatasetConfiguration { @doc("Optional evaluation dataset asset reference.") eval?: string; - @doc("Mapping from SFT training fields to dataset columns.") + @doc("Mapping from SFT logical fields to actual dataset column names. SFT requires the 'messages' logical field.") columns: SftTrainingColumnMapping; @doc("Conversational data formatting options.") dataFormat?: TrainingDataFormatConfiguration; } -@doc("Column mapping for managed GRPO datasets. The training dataset must contain prompts; reference answers or reward context can be passed to the judge.") +@doc("Column mapping for managed online RL prompt datasets. Keys are logical fields expected by GRPO, RLOO, REINFORCE++, and PPO; values are the exact column names in the referenced dataset asset. The training dataset must contain prompts; reference answers or reward context can be passed to the judge.") model GrpoTrainingColumnMapping { - @doc("Column containing prompts for rollout generation.") + @doc("Actual dataset column name containing prompts for rollout generation, for example 'prompt', 'question', or 'problem'.") prompt: string; - @doc("Column containing reference answers or reward context passed to the judge.") + @doc("Actual dataset column name containing reference answers or reward context passed to the judge, for example 'answer' or 'reference'.") reference?: string; } @@ -135,7 +135,7 @@ model GrpoTrainingDatasetConfiguration { @doc("Optional evaluation dataset asset reference.") eval?: string; - @doc("Mapping from GRPO training fields to dataset columns.") + @doc("Mapping from online RL logical fields to actual dataset column names. GRPO, policy-gradient, and PPO require the 'prompt' logical field and can optionally map 'reference'.") columns: GrpoTrainingColumnMapping; @doc("Conversational data formatting options.") @@ -166,15 +166,15 @@ union PolicyGradientTrainingAlgorithm { reinforce_pp: "reinforce_pp", } -@doc("Column mapping for pairwise preference datasets.") +@doc("Column mapping for pairwise preference datasets. Keys are logical fields expected by preference training; values are the exact column names in the referenced dataset asset.") model PairwisePreferenceColumnMapping { - @doc("Column containing prompts.") + @doc("Actual dataset column name containing prompts, for example 'prompt' or 'question'.") prompt: string; - @doc("Column containing the preferred response.") + @doc("Actual dataset column name containing the preferred response, for example 'chosen', 'accepted_answer', or 'good_response'.") chosen: string; - @doc("Column containing the rejected response.") + @doc("Actual dataset column name containing the rejected response, for example 'rejected', 'rejected_answer', or 'bad_response'.") rejected: string; } @@ -186,22 +186,22 @@ model PairwisePreferenceDatasetConfiguration { @doc("Optional evaluation dataset asset reference.") eval?: string; - @doc("Mapping from pairwise preference fields to dataset columns.") + @doc("Mapping from pairwise preference logical fields to actual dataset column names. DPO, ORPO, CPO, and SimPO require 'prompt', 'chosen', and 'rejected'.") columns: PairwisePreferenceColumnMapping; @doc("Conversational data formatting options.") dataFormat?: TrainingDataFormatConfiguration; } -@doc("Column mapping for KTO feedback datasets.") +@doc("Column mapping for KTO feedback datasets. Keys are logical fields expected by KTO; values are the exact column names in the referenced dataset asset.") model KtoFeedbackColumnMapping { - @doc("Column containing prompts.") + @doc("Actual dataset column name containing prompts, for example 'prompt' or 'question'.") prompt: string; - @doc("Column containing responses.") + @doc("Actual dataset column name containing responses, for example 'response', 'completion', or 'answer'.") response: string; - @doc("Column containing the binary desirability label.") + @doc("Actual dataset column name containing the binary desirability label, for example 'label' or 'is_desirable'.") label: string; } @@ -213,22 +213,22 @@ model KtoTrainingDatasetConfiguration { @doc("Optional evaluation dataset asset reference.") eval?: string; - @doc("Mapping from KTO fields to dataset columns.") + @doc("Mapping from KTO logical fields to actual dataset column names. KTO requires 'prompt', 'response', and 'label'.") columns: KtoFeedbackColumnMapping; @doc("Conversational data formatting options.") dataFormat?: TrainingDataFormatConfiguration; } -@doc("Column mapping for scored reward-model datasets.") +@doc("Column mapping for scored reward-model datasets. Keys are logical fields expected by scored reward-model training; values are the exact column names in the referenced dataset asset.") model ScoredRewardModelColumnMapping { - @doc("Column containing prompts.") + @doc("Actual dataset column name containing prompts, for example 'prompt' or 'question'.") prompt: string; - @doc("Column containing responses.") + @doc("Actual dataset column name containing responses, for example 'response' or 'completion'.") response: string; - @doc("Column containing numeric reward scores.") + @doc("Actual dataset column name containing numeric reward scores, for example 'score' or 'reward'.") score: string; } @@ -252,7 +252,7 @@ model PairwiseRewardModelTrainingDatasetConfiguration @doc("Optional evaluation dataset asset reference.") eval?: string; - @doc("Mapping from pairwise preference fields to dataset columns.") + @doc("Mapping from pairwise reward-model logical fields to actual dataset column names. Pairwise reward-model training requires 'prompt', 'chosen', and 'rejected'.") columns: PairwisePreferenceColumnMapping; @doc("Conversational data formatting options.") @@ -271,7 +271,7 @@ model ScoredRewardModelTrainingDatasetConfiguration @doc("Optional evaluation dataset asset reference.") eval?: string; - @doc("Mapping from scored response fields to dataset columns.") + @doc("Mapping from scored reward-model logical fields to actual dataset column names. Scored reward-model training requires 'prompt', 'response', and 'score'.") columns: ScoredRewardModelColumnMapping; @doc("Conversational data formatting options.") @@ -445,7 +445,7 @@ model GrpoTrainingRuntimeConfiguration { @doc("Algorithm-specific hyperparameters passed through to the selected framework.") hyperparameters?: Record; - @doc("Judge used to score generated completions during GRPO training.") + @doc("Judge used to score generated completions during GRPO training. Required for GRPO.") judge: TrainingRewardConfiguration; @doc("LoRA adapter configuration.") @@ -472,7 +472,7 @@ model PolicyGradientTrainingRuntimeConfiguration { @doc("Algorithm-specific hyperparameters passed through to the selected framework.") hyperparameters?: Record; - @doc("Judge used to score generated completions during online training.") + @doc("Judge used to score generated completions during online policy-gradient training. Required for RLOO and REINFORCE++.") judge: TrainingRewardConfiguration; @doc("Reference policy used for KL anchoring.") @@ -481,7 +481,7 @@ model PolicyGradientTrainingRuntimeConfiguration { @doc("LoRA adapter configuration.") lora?: TrainingLoraConfiguration; - @doc("Rollout generation configuration.") + @doc("Rollout generation configuration. Required for RLOO and REINFORCE++.") rollout: TrainingRolloutConfiguration; @doc("Evaluation configuration.") @@ -499,7 +499,7 @@ model PpoTrainingRuntimeConfiguration { @doc("Algorithm-specific hyperparameters passed through to the selected framework.") hyperparameters?: Record; - @doc("Judge used to score generated completions during PPO training.") + @doc("Judge used to score generated completions during PPO training. Required for PPO.") judge: TrainingRewardConfiguration; @doc("Reference policy used for KL anchoring.") @@ -511,7 +511,7 @@ model PpoTrainingRuntimeConfiguration { @doc("LoRA adapter configuration.") lora?: TrainingLoraConfiguration; - @doc("Rollout generation configuration.") + @doc("Rollout generation configuration. Required for PPO.") rollout: TrainingRolloutConfiguration; @doc("Evaluation configuration.") From 99b34e1cc34c4b15893a08ea204af5d43ec758ea Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Tue, 5 May 2026 19:08:32 -0700 Subject: [PATCH 17/37] feat(foundry): add ray session cluster APIs Rename the interactive Ray cluster action to start_ray_session, add stop_ray_session, refresh OpenAPI/examples, and expose missing low-level training column mappings for response, label, and score. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ai-foundry/data-plane/Foundry/client.tsp | 16 +- ...sters_StartRaySession_MaximumSet_Gen.json} | 14 +- ...lusters_StopRaySession_MaximumSet_Gen.json | 19 ++ .../TrainingJobs_Create_MaximumSet_Gen.json | 10 +- .../v1/microsoft-foundry-openapi3.json | 201 +++++++++++++----- .../microsoft-foundry-openapi3.json | 201 +++++++++++++----- .../Foundry/src/clusters/models.tsp | 12 +- .../Foundry/src/clusters/routes.tsp | 33 ++- .../data-plane/Foundry/src/jobs/models.tsp | 9 + 9 files changed, 393 insertions(+), 122 deletions(-) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Clusters_CreateInteractiveRayJob_MaximumSet_Gen.json => Clusters_StartRaySession_MaximumSet_Gen.json} (81%) create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_StopRaySession_MaximumSet_Gen.json diff --git a/specification/ai-foundry/data-plane/Foundry/client.tsp b/specification/ai-foundry/data-plane/Foundry/client.tsp index eb232900e0cb..4f337a4b3e79 100644 --- a/specification/ai-foundry/data-plane/Foundry/client.tsp +++ b/specification/ai-foundry/data-plane/Foundry/client.tsp @@ -221,12 +221,20 @@ using Azure.AI.Projects; // Clusters sub-client // -------------------------------------------------------------------------------- -@@clientName(Clusters.createInteractiveRayJob, - "create_interactive_ray_job", +@@clientName(Clusters.startRaySession, + "start_ray_session", "python" ); -@@clientName(Clusters.createInteractiveRayJob, - "createInteractiveRayJob", +@@clientName(Clusters.stopRaySession, + "stop_ray_session", + "python" +); +@@clientName(Clusters.startRaySession, + "startRaySession", + "javascript" +); +@@clientName(Clusters.stopRaySession, + "stopRaySession", "javascript" ); diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_CreateInteractiveRayJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_StartRaySession_MaximumSet_Gen.json similarity index 81% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_CreateInteractiveRayJob_MaximumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_StartRaySession_MaximumSet_Gen.json index 9f5bed025f16..fc58121e56a9 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_CreateInteractiveRayJob_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_StartRaySession_MaximumSet_Gen.json @@ -1,15 +1,15 @@ { - "title": "Clusters_CreateInteractiveRayJob_MaximumSet", - "operationId": "Clusters_createInteractiveRayJob", + "title": "Clusters_StartRaySession_MaximumSet", + "operationId": "Clusters_startRaySession", "parameters": { "api-version": "v1", "Foundry-Features": "Jobs=V1Preview", "clusterName": "my-cluster", - "Operation-Id": "create-ray-job-01", + "Operation-Id": "start-ray-session-01", "request": { - "name": "ray-job-01", + "name": "ray-session-01", "displayName": "ray-4node", - "description": "Interactive Ray job (4 nodes)", + "description": "Interactive Ray session (4 nodes)", "tags": { "scenario": "interactive-ray" }, @@ -21,11 +21,11 @@ "responses": { "201": { "body": { - "name": "ray-job-01", + "name": "ray-session-01", "properties": { "jobType": "Command", "displayName": "ray-4node", - "description": "Interactive Ray job (4 nodes)", + "description": "Interactive Ray session (4 nodes)", "tags": { "scenario": "interactive-ray" }, diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_StopRaySession_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_StopRaySession_MaximumSet_Gen.json new file mode 100644 index 000000000000..6aa8c19e8dff --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_StopRaySession_MaximumSet_Gen.json @@ -0,0 +1,19 @@ +{ + "title": "Clusters_StopRaySession_MaximumSet", + "operationId": "Clusters_stopRaySession", + "parameters": { + "api-version": "v1", + "Foundry-Features": "Jobs=V1Preview", + "clusterName": "my-cluster", + "sessionName": "ray-session-01" + }, + "responses": { + "202": { + "headers": { + "Location": "https://contoso.services.ai.azure.com/api/projects/my-project/training_jobs/operations/jc:workspace-id:ray-session-01/result?api-version=v1", + "Operation-Location": "https://contoso.services.ai.azure.com/api/projects/my-project/training_jobs/operations/jc:workspace-id:ray-session-01/status?api-version=v1", + "Retry-After": 5 + } + } + } +} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json index fffd6ca3c5fd..fcfa9ff289b1 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json @@ -31,7 +31,10 @@ "chosen": "chosen", "rejected": "rejected", "reference": "reference", - "messages": "messages" + "messages": "messages", + "response": "response", + "label": "label", + "score": "score" }, "dataFormat": { "chatTemplate": "chatml" @@ -146,7 +149,10 @@ "chosen": "chosen", "rejected": "rejected", "reference": "reference", - "messages": "messages" + "messages": "messages", + "response": "response", + "label": "label", + "score": "score" }, "dataFormat": { "chatTemplate": "chatml" diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index b41a8f06ed69..d29ad293598d 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -962,10 +962,103 @@ } } }, - "/clusters/{clusterName}:create_interactive_ray_job": { + "/clusters/{clusterName}/ray_sessions/{sessionName}:stop": { "post": { - "operationId": "Clusters_createInteractiveRayJob", - "description": "Create an interactive Ray command job on a compute cluster.", + "operationId": "Clusters_stopRaySession", + "description": "Stop an interactive Ray session on a compute cluster.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "clusterName", + "in": "path", + "required": true, + "description": "The compute cluster name.", + "schema": { + "type": "string" + } + }, + { + "name": "sessionName", + "in": "path", + "required": true, + "description": "The Ray session name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded." + }, + "202": { + "description": "Response returned when a job cancel operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the final result of the cancel operation.", + "schema": { + "type": "string" + } + }, + "Operation-Location": { + "required": false, + "description": "URL to poll for the status of the cancel operation.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Clusters" + ] + } + }, + "/clusters/{clusterName}:start_ray_session": { + "post": { + "operationId": "Clusters_startRaySession", + "description": "Start an interactive Ray session on a compute cluster.", "parameters": [ { "name": "Foundry-Features", @@ -992,7 +1085,7 @@ "name": "Operation-Id", "in": "header", "required": false, - "description": "Idempotency key used to safely retry interactive Ray job creation.", + "description": "Idempotency key used to safely retry Ray session startup.", "schema": { "type": "string" } @@ -1038,11 +1131,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InteractiveRayJobCreate" + "$ref": "#/components/schemas/RaySessionStart" } } }, - "description": "Interactive Ray job creation request." + "description": "Ray session start request." } } }, @@ -22261,48 +22354,6 @@ }, "description": "Metadata about the insights." }, - "InteractiveRayJobCreate": { - "type": "object", - "required": [ - "instanceCount" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional job name. If omitted, the service uses the Operation-Id header or generates one." - }, - "displayName": { - "type": "string", - "description": "Optional display name for the generated Ray job." - }, - "description": { - "type": "string", - "description": "Optional description for the generated Ray job." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags to attach to the generated Ray job." - }, - "instanceCount": { - "type": "integer", - "format": "int32", - "description": "Number of compute nodes to reserve for the interactive Ray session." - }, - "enableRemoteAccessClientServer": { - "type": "boolean", - "description": "Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally." - }, - "clientServerPort": { - "type": "integer", - "format": "int32", - "description": "The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true." - } - }, - "description": "Request body for creating an interactive Ray command job on a compute cluster." - }, "ItemGenerationParams": { "type": "object", "required": [ @@ -45659,6 +45710,48 @@ ], "description": "Ray distribution configuration." }, + "RaySessionStart": { + "type": "object", + "required": [ + "instanceCount" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional session name. If omitted, the service uses the Operation-Id header or generates one." + }, + "displayName": { + "type": "string", + "description": "Optional display name for the generated Ray session job." + }, + "description": { + "type": "string", + "description": "Optional description for the generated Ray session job." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags to attach to the generated Ray session job." + }, + "instanceCount": { + "type": "integer", + "format": "int32", + "description": "Number of compute nodes to reserve for the interactive Ray session." + }, + "enableRemoteAccessClientServer": { + "type": "boolean", + "description": "Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally." + }, + "clientServerPort": { + "type": "integer", + "format": "int32", + "description": "The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true." + } + }, + "description": "Request body for starting an interactive Ray session on a compute cluster." + }, "RecurrenceSchedule": { "type": "object", "required": [ @@ -47826,6 +47919,18 @@ "messages": { "type": "string", "description": "Column containing chat messages." + }, + "response": { + "type": "string", + "description": "Column containing responses for KTO or scored reward-model training." + }, + "label": { + "type": "string", + "description": "Column containing binary desirability labels for KTO training." + }, + "score": { + "type": "string", + "description": "Column containing numeric reward scores for scored reward-model training." } }, "description": "Mapping from logical training fields to columns in the dataset." diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index c6e00ddc00d6..d5b539679881 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -3049,10 +3049,103 @@ } } }, - "/clusters/{clusterName}:create_interactive_ray_job": { + "/clusters/{clusterName}/ray_sessions/{sessionName}:stop": { "post": { - "operationId": "Clusters_createInteractiveRayJob", - "description": "Create an interactive Ray command job on a compute cluster.", + "operationId": "Clusters_stopRaySession", + "description": "Stop an interactive Ray session on a compute cluster.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "clusterName", + "in": "path", + "required": true, + "description": "The compute cluster name.", + "schema": { + "type": "string" + } + }, + { + "name": "sessionName", + "in": "path", + "required": true, + "description": "The Ray session name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded." + }, + "202": { + "description": "Response returned when a job cancel operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the final result of the cancel operation.", + "schema": { + "type": "string" + } + }, + "Operation-Location": { + "required": false, + "description": "URL to poll for the status of the cancel operation.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "Clusters" + ] + } + }, + "/clusters/{clusterName}:start_ray_session": { + "post": { + "operationId": "Clusters_startRaySession", + "description": "Start an interactive Ray session on a compute cluster.", "parameters": [ { "name": "Foundry-Features", @@ -3079,7 +3172,7 @@ "name": "Operation-Id", "in": "header", "required": false, - "description": "Idempotency key used to safely retry interactive Ray job creation.", + "description": "Idempotency key used to safely retry Ray session startup.", "schema": { "type": "string" } @@ -3125,11 +3218,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/InteractiveRayJobCreate" + "$ref": "#/components/schemas/RaySessionStart" } } }, - "description": "Interactive Ray job creation request." + "description": "Ray session start request." } } }, @@ -26643,48 +26736,6 @@ }, "description": "Metadata about the insights." }, - "InteractiveRayJobCreate": { - "type": "object", - "required": [ - "instanceCount" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional job name. If omitted, the service uses the Operation-Id header or generates one." - }, - "displayName": { - "type": "string", - "description": "Optional display name for the generated Ray job." - }, - "description": { - "type": "string", - "description": "Optional description for the generated Ray job." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags to attach to the generated Ray job." - }, - "instanceCount": { - "type": "integer", - "format": "int32", - "description": "Number of compute nodes to reserve for the interactive Ray session." - }, - "enableRemoteAccessClientServer": { - "type": "boolean", - "description": "Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally." - }, - "clientServerPort": { - "type": "integer", - "format": "int32", - "description": "The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true." - } - }, - "description": "Request body for creating an interactive Ray command job on a compute cluster." - }, "IsolationKeySource": { "type": "object", "required": [ @@ -50347,6 +50398,48 @@ ], "description": "Ray distribution configuration." }, + "RaySessionStart": { + "type": "object", + "required": [ + "instanceCount" + ], + "properties": { + "name": { + "type": "string", + "description": "Optional session name. If omitted, the service uses the Operation-Id header or generates one." + }, + "displayName": { + "type": "string", + "description": "Optional display name for the generated Ray session job." + }, + "description": { + "type": "string", + "description": "Optional description for the generated Ray session job." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags to attach to the generated Ray session job." + }, + "instanceCount": { + "type": "integer", + "format": "int32", + "description": "Number of compute nodes to reserve for the interactive Ray session." + }, + "enableRemoteAccessClientServer": { + "type": "boolean", + "description": "Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally." + }, + "clientServerPort": { + "type": "integer", + "format": "int32", + "description": "The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true." + } + }, + "description": "Request body for starting an interactive Ray session on a compute cluster." + }, "RecurrenceSchedule": { "type": "object", "required": [ @@ -52815,6 +52908,18 @@ "messages": { "type": "string", "description": "Column containing chat messages." + }, + "response": { + "type": "string", + "description": "Column containing responses for KTO or scored reward-model training." + }, + "label": { + "type": "string", + "description": "Column containing binary desirability labels for KTO training." + }, + "score": { + "type": "string", + "description": "Column containing numeric reward scores for scored reward-model training." } }, "description": "Mapping from logical training fields to columns in the dataset." diff --git a/specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp index f6f8737856ff..fa245d4375bc 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp @@ -2,18 +2,18 @@ import "../common/models.tsp"; namespace Azure.AI.Projects; -@doc("Request body for creating an interactive Ray command job on a compute cluster.") -model InteractiveRayJobCreate { - @doc("Optional job name. If omitted, the service uses the Operation-Id header or generates one.") +@doc("Request body for starting an interactive Ray session on a compute cluster.") +model RaySessionStart { + @doc("Optional session name. If omitted, the service uses the Operation-Id header or generates one.") name?: string; - @doc("Optional display name for the generated Ray job.") + @doc("Optional display name for the generated Ray session job.") displayName?: string; - @doc("Optional description for the generated Ray job.") + @doc("Optional description for the generated Ray session job.") description?: string; - @doc("Optional tags to attach to the generated Ray job.") + @doc("Optional tags to attach to the generated Ray session job.") tags?: Record; @doc("Number of compute nodes to reserve for the interactive Ray session.") diff --git a/specification/ai-foundry/data-plane/Foundry/src/clusters/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/clusters/routes.tsp index e9a79fff50ee..bf6c4f41c6df 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/clusters/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/clusters/routes.tsp @@ -8,25 +8,44 @@ namespace Azure.AI.Projects; @tag("Clusters") interface Clusters { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Interactive Ray is a cluster action that creates an underlying command job." - @doc("Create an interactive Ray command job on a compute cluster.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Ray sessions are cluster actions backed by underlying command jobs." + @doc("Start an interactive Ray session on a compute cluster.") @post - @route("/clusters/{clusterName}:create_interactive_ray_job") - createInteractiveRayJob is FoundryDataPlaneRequiredPreviewOperation< + @route("/clusters/{clusterName}:start_ray_session") + startRaySession is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The compute cluster name.") @path clusterName: string; - @doc("Idempotency key used to safely retry interactive Ray job creation.") + @doc("Idempotency key used to safely retry Ray session startup.") @header("Operation-Id") operationId?: string; - @doc("Interactive Ray job creation request.") + @doc("Ray session start request.") @bodyRoot - request: InteractiveRayJobCreate; + request: RaySessionStart; }, ResourceCreatedResponse >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Ray session stop is a cluster action backed by training job cancellation." + #suppress "@azure-tools/typespec-azure-core/no-response-body" "Ray session stop returns 200 synchronously or 202 with polling headers when cancellation is asynchronous." + @doc("Stop an interactive Ray session on a compute cluster.") + @post + @route("/clusters/{clusterName}/ray_sessions/{sessionName}:stop") + stopRaySession is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("The compute cluster name.") + @path + clusterName: string; + + @doc("The Ray session name.") + @path + sessionName: string; + }, + Http.OkResponse | JobCancelAcceptedResponse + >; } \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp index 535f5829eb68..6807980a8f09 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp @@ -324,6 +324,15 @@ model TrainingColumnMapping { @doc("Column containing chat messages.") messages?: string; + + @doc("Column containing responses for KTO or scored reward-model training.") + response?: string; + + @doc("Column containing binary desirability labels for KTO training.") + label?: string; + + @doc("Column containing numeric reward scores for scored reward-model training.") + score?: string; } @doc("Formatting options for conversational training data.") From ca831aacfb26345cf87dcfb066aa5ef52cd86710 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Wed, 6 May 2026 00:12:28 -0700 Subject: [PATCH 18/37] fix(foundry): rename training job runs to attempts Rename the attempt-pinned training job child routes from runs to attempts so the public path and schema match the backing run attempt semantics. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../v1/microsoft-foundry-openapi3.json | 1344 ++++++++--------- .../microsoft-foundry-openapi3.json | 1282 ++++++++-------- .../data-plane/Foundry/src/jobs/models.tsp | 72 +- .../data-plane/Foundry/src/jobs/routes.tsp | 188 +-- 4 files changed, 1443 insertions(+), 1443 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index d29ad293598d..e017b3069364 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -13107,10 +13107,10 @@ ] } }, - "/training_jobs/{jobName}/metrics": { + "/training_jobs/{jobName}/attempts": { "get": { - "operationId": "TrainingJobMetrics_listMetrics", - "description": "List metrics emitted by the current view of a training job.", + "operationId": "TrainingJobAttempts_listAttempts", + "description": "List attempts for a training job.", "parameters": [ { "name": "Foundry-Features", @@ -13133,17 +13133,6 @@ "type": "string" } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, { "name": "skipToken", "in": "query", @@ -13171,7 +13160,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetric" + "$ref": "#/components/schemas/PagedJobAttempt" } } } @@ -13192,10 +13181,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}": { + "/training_jobs/{jobName}/attempts/{attemptId}": { "get": { - "operationId": "TrainingJobMetrics_getMetric", - "description": "Get the full history for a training job metric.", + "operationId": "TrainingJobAttempts_getAttempt", + "description": "Get one attempt for a training job.", "parameters": [ { "name": "Foundry-Features", @@ -13219,69 +13208,14 @@ } }, { - "name": "metricName", + "name": "attemptId", "in": "path", "required": true, - "description": "The metric name.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -13299,7 +13233,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" + "$ref": "#/components/schemas/JobAttempt" } } } @@ -13320,10 +13254,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}:aggregates": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts": { "get": { - "operationId": "TrainingJobMetrics_getMetricAggregates", - "description": "Get aggregate values for a training job metric.", + "operationId": "TrainingJobAttemptArtifacts_listAttemptArtifacts", + "description": "List artifacts for a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -13347,66 +13281,42 @@ } }, { - "name": "metricName", + "name": "attemptId", "in": "path", "required": true, - "description": "The metric name.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", + "name": "limit", "in": "query", "required": false, - "description": "Minimum metric step to include.", + "description": "Maximum number of items to return.", "schema": { "type": "integer", - "format": "int64" + "format": "int32" }, "explode": false }, { - "name": "maxStep", + "name": "skipToken", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "Continuation token returned by a previous list request.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "pathPrefix", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "Artifact path prefix to list.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -13427,7 +13337,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" + "$ref": "#/components/schemas/PagedJobArtifact" } } } @@ -13448,10 +13358,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}:sample": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:content": { "get": { - "operationId": "TrainingJobMetrics_getMetricSample", - "description": "Get one sampled value or window for a training job metric.", + "operationId": "TrainingJobAttemptArtifacts_downloadAttemptArtifact", + "description": "Download artifact content from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -13475,66 +13385,21 @@ } }, { - "name": "metricName", + "name": "attemptId", "in": "path", "required": true, - "description": "The metric name.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", + "name": "path", "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", + "required": true, + "description": "The artifact path.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -13553,9 +13418,10 @@ "200": { "description": "The request has succeeded.", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "type": "string", + "format": "binary" } } } @@ -13576,10 +13442,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}:samples": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfo": { "get": { - "operationId": "TrainingJobMetrics_getMetricSamples", - "description": "Get sampled values for a training job metric.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfo", + "description": "Get download information for an artifact from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -13603,66 +13469,21 @@ } }, { - "name": "metricName", + "name": "attemptId", "in": "path", "required": true, - "description": "The metric name.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", + "name": "path", "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", + "required": true, + "description": "The artifact path.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -13683,7 +13504,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/JobArtifactContentInfo" } } } @@ -13704,10 +13525,10 @@ ] } }, - "/training_jobs/{jobName}/metrics:lastValues": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfoByPrefix": { "get": { - "operationId": "TrainingJobMetrics_getMetricLastValues", - "description": "Get the latest values for metrics emitted by the current view of a training job.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfoByPrefix", + "description": "List download information for artifacts under a path prefix from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -13731,13 +13552,42 @@ } }, { - "name": "api-version", - "in": "query", + "name": "attemptId", + "in": "path", "required": true, - "description": "The API version to use for this operation.", + "description": "The attempt identifier.", "schema": { "type": "string" - }, + } + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, "explode": false } ], @@ -13747,7 +13597,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" + "$ref": "#/components/schemas/PagedJobArtifactContentInfo" } } } @@ -13768,10 +13618,10 @@ ] } }, - "/training_jobs/{jobName}/outputs": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:metadata": { "get": { - "operationId": "TrainingJobOutputs_listOutputs", - "description": "List outputs produced by a training job.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactMetadata", + "description": "Get metadata for an artifact from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -13794,6 +13644,25 @@ "type": "string" } }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -13811,7 +13680,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" + "$ref": "#/components/schemas/JobArtifact" } } } @@ -13832,10 +13701,10 @@ ] } }, - "/training_jobs/{jobName}/outputs/{outputName}": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics": { "get": { - "operationId": "TrainingJobOutputs_getOutput", - "description": "Get one output produced by a training job.", + "operationId": "TrainingJobAttemptMetrics_listAttemptMetrics", + "description": "List metrics emitted by a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -13859,14 +13728,35 @@ } }, { - "name": "outputName", + "name": "attemptId", "in": "path", "required": true, - "description": "The output name.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -13884,7 +13774,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/PagedJobMetric" } } } @@ -13905,10 +13795,10 @@ ] } }, - "/training_jobs/{jobName}/runs": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}": { "get": { - "operationId": "TrainingJobRuns_listRuns", - "description": "List runs for a training job.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetric", + "description": "Get the full history for a metric from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -13932,12 +13822,75 @@ } }, { - "name": "skipToken", + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "Start of the metric time range.", "schema": { - "type": "string" + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" }, "explode": false }, @@ -13958,7 +13911,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobRun" + "$ref": "#/components/schemas/PagedJobMetricPoint" } } } @@ -13979,10 +13932,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates": { "get": { - "operationId": "TrainingJobRuns_getRun", - "description": "Get one run for a training job.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricAggregates", + "description": "Get aggregate metric values from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14006,14 +13959,78 @@ } }, { - "name": "runId", + "name": "attemptId", "in": "path", "required": true, - "description": "The run identifier.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -14031,7 +14048,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobRun" + "$ref": "#/components/schemas/PagedJobMetricAggregate" } } } @@ -14052,10 +14069,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/artifacts": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample": { "get": { - "operationId": "TrainingJobRunArtifacts_listRunArtifacts", - "description": "List artifacts for a specific training job run.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSample", + "description": "Get one sampled value or window from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14079,42 +14096,75 @@ } }, { - "name": "runId", + "name": "attemptId", "in": "path", "required": true, - "description": "The run identifier.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, { - "name": "limit", + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", "schema": { "type": "integer", - "format": "int32" + "format": "int64" }, "explode": false }, { - "name": "skipToken", + "name": "maxStep", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "Maximum metric step to include.", "schema": { - "type": "string" + "type": "integer", + "format": "int64" }, "explode": false }, { - "name": "pathPrefix", + "name": "limit", "in": "query", "required": false, - "description": "Artifact path prefix to list.", + "description": "Maximum number of metric points to return.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" }, "explode": false }, @@ -14135,7 +14185,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -14156,10 +14206,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/artifacts:content": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples": { "get": { - "operationId": "TrainingJobRunArtifacts_downloadRunArtifact", - "description": "Download artifact content from a specific training job run.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSamples", + "description": "Get sampled metric values from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14183,21 +14233,75 @@ } }, { - "name": "runId", + "name": "attemptId", "in": "path", "required": true, - "description": "The run identifier.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, { - "name": "path", - "in": "query", + "name": "metricName", + "in": "path", "required": true, - "description": "The artifact path.", + "description": "The metric name.", "schema": { "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" }, "explode": false }, @@ -14216,10 +14320,9 @@ "200": { "description": "The request has succeeded.", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -14240,10 +14343,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/artifacts:contentInfo": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics:lastValues": { "get": { - "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfo", - "description": "Get download information for an artifact from a specific training job run.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricLastValues", + "description": "Get latest metric values for a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14267,24 +14370,14 @@ } }, { - "name": "runId", + "name": "attemptId", "in": "path", "required": true, - "description": "The run identifier.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -14302,7 +14395,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifactContentInfo" + "$ref": "#/components/schemas/PagedJobMetricLastValue" } } } @@ -14323,10 +14416,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/artifacts:contentInfoByPrefix": { + "/training_jobs/{jobName}/attempts/{attemptId}/outputs": { "get": { - "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfoByPrefix", - "description": "List download information for artifacts under a path prefix from a specific training job run.", + "operationId": "TrainingJobAttemptOutputs_listAttemptOutputs", + "description": "List outputs produced by a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14350,34 +14443,14 @@ } }, { - "name": "runId", + "name": "attemptId", "in": "path", "required": true, - "description": "The run identifier.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, - { - "name": "pathPrefix", - "in": "query", - "required": false, - "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -14395,7 +14468,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifactContentInfo" + "$ref": "#/components/schemas/PagedJobOutputReference" } } } @@ -14416,10 +14489,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/artifacts:metadata": { + "/training_jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}": { "get": { - "operationId": "TrainingJobRunArtifacts_getRunArtifactMetadata", - "description": "Get metadata for an artifact from a specific training job run.", + "operationId": "TrainingJobAttemptOutputs_getAttemptOutput", + "description": "Get one output produced by a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14443,23 +14516,22 @@ } }, { - "name": "runId", + "name": "attemptId", "in": "path", "required": true, - "description": "The run identifier.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, { - "name": "path", - "in": "query", + "name": "outputName", + "in": "path", "required": true, - "description": "The artifact path.", + "description": "The output name.", "schema": { "type": "string" - }, - "explode": false + } }, { "name": "api-version", @@ -14478,7 +14550,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifact" + "$ref": "#/components/schemas/JobOutputReference" } } } @@ -14499,10 +14571,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/metrics": { + "/training_jobs/{jobName}/metrics": { "get": { - "operationId": "TrainingJobRunMetrics_listRunMetrics", - "description": "List metrics emitted by a specific training job run.", + "operationId": "TrainingJobMetrics_listMetrics", + "description": "List metrics emitted by the current view of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -14525,15 +14597,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "limit", "in": "query", @@ -14593,10 +14656,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}": { + "/training_jobs/{jobName}/metrics/{metricName}": { "get": { - "operationId": "TrainingJobRunMetrics_getRunMetric", - "description": "Get the full history for a metric from a specific training job run.", + "operationId": "TrainingJobMetrics_getMetric", + "description": "Get the full history for a training job metric.", "parameters": [ { "name": "Foundry-Features", @@ -14619,15 +14682,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "metricName", "in": "path", @@ -14730,10 +14784,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:aggregates": { + "/training_jobs/{jobName}/metrics/{metricName}:aggregates": { "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricAggregates", - "description": "Get aggregate metric values from a specific training job run.", + "operationId": "TrainingJobMetrics_getMetricAggregates", + "description": "Get aggregate values for a training job metric.", "parameters": [ { "name": "Foundry-Features", @@ -14756,15 +14810,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "metricName", "in": "path", @@ -14867,10 +14912,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:sample": { + "/training_jobs/{jobName}/metrics/{metricName}:sample": { "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricSample", - "description": "Get one sampled value or window from a specific training job run.", + "operationId": "TrainingJobMetrics_getMetricSample", + "description": "Get one sampled value or window for a training job metric.", "parameters": [ { "name": "Foundry-Features", @@ -14893,15 +14938,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "metricName", "in": "path", @@ -15004,10 +15040,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:samples": { + "/training_jobs/{jobName}/metrics/{metricName}:samples": { "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricSamples", - "description": "Get sampled metric values from a specific training job run.", + "operationId": "TrainingJobMetrics_getMetricSamples", + "description": "Get sampled values for a training job metric.", "parameters": [ { "name": "Foundry-Features", @@ -15030,15 +15066,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "metricName", "in": "path", @@ -15141,10 +15168,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/metrics:lastValues": { + "/training_jobs/{jobName}/metrics:lastValues": { "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricLastValues", - "description": "Get latest metric values for a specific training job run.", + "operationId": "TrainingJobMetrics_getMetricLastValues", + "description": "Get the latest values for metrics emitted by the current view of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -15167,15 +15194,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -15214,10 +15232,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/outputs": { + "/training_jobs/{jobName}/outputs": { "get": { - "operationId": "TrainingJobRunOutputs_listRunOutputs", - "description": "List outputs produced by a specific training job run.", + "operationId": "TrainingJobOutputs_listOutputs", + "description": "List outputs produced by a training job.", "parameters": [ { "name": "Foundry-Features", @@ -15240,15 +15258,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -15287,10 +15296,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/outputs/{outputName}": { + "/training_jobs/{jobName}/outputs/{outputName}": { "get": { - "operationId": "TrainingJobRunOutputs_getRunOutput", - "description": "Get one output produced by a specific training job run.", + "operationId": "TrainingJobOutputs_getOutput", + "description": "Get one output produced by a training job.", "parameters": [ { "name": "Foundry-Features", @@ -15313,15 +15322,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "outputName", "in": "path", @@ -22479,40 +22479,210 @@ "readOnly": true } }, - "description": "Metadata for an artifact produced by or attached to a job." + "description": "Metadata for an artifact produced by or attached to a job." + }, + "JobArtifactContentInfo": { + "type": "object", + "required": [ + "path" + ], + "properties": { + "path": { + "type": "string", + "description": "Artifact path relative to the job artifact root.", + "readOnly": true + }, + "contentUri": { + "type": "string", + "format": "uri", + "description": "Download URI for the artifact content.", + "readOnly": true + }, + "contentType": { + "type": "string", + "description": "MIME type of the content.", + "readOnly": true + }, + "expiresAtUtc": { + "type": "string", + "format": "date-time", + "description": "Time the content URI expires.", + "readOnly": true + } + }, + "description": "Content access information for a job artifact." + }, + "JobArtifactType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "File", + "Directory" + ] + } + ], + "description": "Type of a job artifact." + }, + "JobAttempt": { + "type": "object", + "required": [ + "id", + "jobName" + ], + "properties": { + "id": { + "type": "string", + "description": "The attempt identifier.", + "readOnly": true + }, + "jobName": { + "type": "string", + "description": "The job name this attempt belongs to.", + "readOnly": true + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/JobAttemptStatus" + } + ], + "description": "The attempt status.", + "readOnly": true + }, + "statusReason": { + "type": "string", + "description": "Additional status reason.", + "readOnly": true + }, + "startTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the attempt started.", + "readOnly": true + }, + "endTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the attempt ended.", + "readOnly": true + }, + "lastStartTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Most recent time the attempt started running.", + "readOnly": true + }, + "computeDuration": { + "type": "string", + "format": "duration", + "description": "Total compute duration consumed by the attempt.", + "readOnly": true + }, + "queueingInfo": { + "type": "object", + "additionalProperties": {}, + "description": "Queueing details associated with the attempt.", + "readOnly": true + }, + "computeDetails": { + "allOf": [ + { + "$ref": "#/components/schemas/JobAttemptComputeDetails" + } + ], + "description": "Compute details associated with the attempt.", + "readOnly": true + }, + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/JobAttemptError" + } + ], + "description": "Terminal error for the attempt, if any.", + "readOnly": true + }, + "warnings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobAttemptWarning" + }, + "description": "Warnings emitted for the attempt.", + "readOnly": true + }, + "isCurrent": { + "type": "boolean", + "description": "Whether this attempt is the current attempt for the job.", + "readOnly": true + } + }, + "description": "One execution attempt of a training job." + }, + "JobAttemptComputeDetails": { + "type": "object", + "properties": { + "vmSize": { + "type": "string", + "description": "Virtual machine size used for this attempt.", + "readOnly": true + }, + "instanceType": { + "type": "string", + "description": "Instance type used for this attempt.", + "readOnly": true + }, + "instanceCount": { + "type": "integer", + "format": "int32", + "description": "Number of instances allocated to this attempt.", + "readOnly": true + }, + "gpuCount": { + "type": "integer", + "format": "int32", + "description": "Number of GPUs allocated to this attempt.", + "readOnly": true + }, + "region": { + "type": "string", + "description": "Region where this attempt was placed.", + "readOnly": true + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional backend-specific compute placement properties.", + "readOnly": true + } + }, + "description": "Compute placement details for a job attempt." }, - "JobArtifactContentInfo": { + "JobAttemptError": { "type": "object", - "required": [ - "path" - ], "properties": { - "path": { - "type": "string", - "description": "Artifact path relative to the job artifact root.", - "readOnly": true - }, - "contentUri": { + "code": { "type": "string", - "format": "uri", - "description": "Download URI for the artifact content.", - "readOnly": true + "description": "Machine-readable error code." }, - "contentType": { + "message": { "type": "string", - "description": "MIME type of the content.", - "readOnly": true + "description": "Human-readable error message." }, - "expiresAtUtc": { - "type": "string", - "format": "date-time", - "description": "Time the content URI expires.", - "readOnly": true + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional error details." } }, - "description": "Content access information for a job artifact." + "description": "Error emitted during a job attempt." }, - "JobArtifactType": { + "JobAttemptStatus": { "anyOf": [ { "type": "string" @@ -22520,12 +22690,34 @@ { "type": "string", "enum": [ - "File", - "Directory" + "Queued", + "Running", + "Completed", + "Failed", + "Canceled" ] } ], - "description": "Type of a job artifact." + "description": "Status of a job execution attempt." + }, + "JobAttemptWarning": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable warning code." + }, + "message": { + "type": "string", + "description": "Human-readable warning message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional warning details." + } + }, + "description": "Warning emitted during a job attempt." }, "JobCreate": { "type": "object", @@ -22905,198 +23097,6 @@ }, "description": "Compute Resource configuration for the job." }, - "JobRun": { - "type": "object", - "required": [ - "id", - "jobName" - ], - "properties": { - "id": { - "type": "string", - "description": "The run identifier.", - "readOnly": true - }, - "jobName": { - "type": "string", - "description": "The job name this run belongs to.", - "readOnly": true - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/JobRunStatus" - } - ], - "description": "The run status.", - "readOnly": true - }, - "statusReason": { - "type": "string", - "description": "Additional status reason.", - "readOnly": true - }, - "startTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Time the run started.", - "readOnly": true - }, - "endTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Time the run ended.", - "readOnly": true - }, - "lastStartTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Most recent time the run started running.", - "readOnly": true - }, - "computeDuration": { - "type": "string", - "format": "duration", - "description": "Total compute duration consumed by the run.", - "readOnly": true - }, - "queueingInfo": { - "type": "object", - "additionalProperties": {}, - "description": "Queueing details associated with the run.", - "readOnly": true - }, - "computeDetails": { - "allOf": [ - { - "$ref": "#/components/schemas/JobRunComputeDetails" - } - ], - "description": "Compute details associated with the run.", - "readOnly": true - }, - "error": { - "allOf": [ - { - "$ref": "#/components/schemas/JobRunError" - } - ], - "description": "Terminal error for the run, if any.", - "readOnly": true - }, - "warnings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobRunWarning" - }, - "description": "Warnings emitted for the run.", - "readOnly": true - }, - "isCurrent": { - "type": "boolean", - "description": "Whether this run is the current run for the job.", - "readOnly": true - } - }, - "description": "One execution run of a training job." - }, - "JobRunComputeDetails": { - "type": "object", - "properties": { - "vmSize": { - "type": "string", - "description": "Virtual machine size used for this run attempt.", - "readOnly": true - }, - "instanceType": { - "type": "string", - "description": "Instance type used for this run attempt.", - "readOnly": true - }, - "instanceCount": { - "type": "integer", - "format": "int32", - "description": "Number of instances allocated to this run attempt.", - "readOnly": true - }, - "gpuCount": { - "type": "integer", - "format": "int32", - "description": "Number of GPUs allocated to this run attempt.", - "readOnly": true - }, - "region": { - "type": "string", - "description": "Region where this run attempt was placed.", - "readOnly": true - }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional backend-specific compute placement properties.", - "readOnly": true - } - }, - "description": "Compute placement details for a job run attempt." - }, - "JobRunError": { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "Machine-readable error code." - }, - "message": { - "type": "string", - "description": "Human-readable error message." - }, - "details": { - "type": "object", - "additionalProperties": {}, - "description": "Additional error details." - } - }, - "description": "Error emitted during a job run." - }, - "JobRunStatus": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "Queued", - "Running", - "Completed", - "Failed", - "Canceled" - ] - } - ], - "description": "Status of a job execution run." - }, - "JobRunWarning": { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "Machine-readable warning code." - }, - "message": { - "type": "string", - "description": "Human-readable warning message." - }, - "details": { - "type": "object", - "additionalProperties": {}, - "description": "Additional warning details." - } - }, - "description": "Warning emitted during a job run." - }, "JobType": { "anyOf": [ { @@ -44616,6 +44616,27 @@ }, "description": "Paged collection of JobArtifactContentInfo items" }, + "PagedJobAttempt": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobAttempt" + }, + "description": "The JobAttempt items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobAttempt items" + }, "PagedJobMetric": { "type": "object", "required": [ @@ -44721,27 +44742,6 @@ }, "description": "Paged collection of JobOutputReference items" }, - "PagedJobRun": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobRun" - }, - "description": "The JobRun items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobRun items" - }, "PagedRedTeam": { "type": "object", "required": [ diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index d5b539679881..5f03040f7e52 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -15825,10 +15825,10 @@ ] } }, - "/training_jobs/{jobName}/metrics": { + "/training_jobs/{jobName}/attempts": { "get": { - "operationId": "TrainingJobMetrics_listMetrics", - "description": "List metrics emitted by the current view of a training job.", + "operationId": "TrainingJobAttempts_listAttempts", + "description": "List attempts for a training job.", "parameters": [ { "name": "Foundry-Features", @@ -15851,17 +15851,6 @@ "type": "string" } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, { "name": "skipToken", "in": "query", @@ -15889,7 +15878,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetric" + "$ref": "#/components/schemas/PagedJobAttempt" } } } @@ -15910,10 +15899,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}": { + "/training_jobs/{jobName}/attempts/{attemptId}": { "get": { - "operationId": "TrainingJobMetrics_getMetric", - "description": "Get the full history for a training job metric.", + "operationId": "TrainingJobAttempts_getAttempt", + "description": "Get one attempt for a training job.", "parameters": [ { "name": "Foundry-Features", @@ -15937,69 +15926,14 @@ } }, { - "name": "metricName", + "name": "attemptId", "in": "path", "required": true, - "description": "The metric name.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -16017,7 +15951,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" + "$ref": "#/components/schemas/JobAttempt" } } } @@ -16038,10 +15972,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}:aggregates": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts": { "get": { - "operationId": "TrainingJobMetrics_getMetricAggregates", - "description": "Get aggregate values for a training job metric.", + "operationId": "TrainingJobAttemptArtifacts_listAttemptArtifacts", + "description": "List artifacts for a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16065,66 +15999,42 @@ } }, { - "name": "metricName", + "name": "attemptId", "in": "path", "required": true, - "description": "The metric name.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", + "name": "limit", "in": "query", "required": false, - "description": "Minimum metric step to include.", + "description": "Maximum number of items to return.", "schema": { "type": "integer", - "format": "int64" + "format": "int32" }, "explode": false }, { - "name": "maxStep", + "name": "skipToken", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "Continuation token returned by a previous list request.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "pathPrefix", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "Artifact path prefix to list.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -16145,7 +16055,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" + "$ref": "#/components/schemas/PagedJobArtifact" } } } @@ -16166,10 +16076,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}:sample": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:content": { "get": { - "operationId": "TrainingJobMetrics_getMetricSample", - "description": "Get one sampled value or window for a training job metric.", + "operationId": "TrainingJobAttemptArtifacts_downloadAttemptArtifact", + "description": "Download artifact content from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16193,66 +16103,21 @@ } }, { - "name": "metricName", + "name": "attemptId", "in": "path", "required": true, - "description": "The metric name.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", + "name": "path", "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", + "required": true, + "description": "The artifact path.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -16271,9 +16136,10 @@ "200": { "description": "The request has succeeded.", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "type": "string", + "format": "binary" } } } @@ -16294,10 +16160,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}:samples": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfo": { "get": { - "operationId": "TrainingJobMetrics_getMetricSamples", - "description": "Get sampled values for a training job metric.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfo", + "description": "Get download information for an artifact from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16321,66 +16187,21 @@ } }, { - "name": "metricName", + "name": "attemptId", "in": "path", "required": true, - "description": "The metric name.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", + "name": "path", "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", + "required": true, + "description": "The artifact path.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -16401,7 +16222,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/JobArtifactContentInfo" } } } @@ -16422,10 +16243,10 @@ ] } }, - "/training_jobs/{jobName}/metrics:lastValues": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfoByPrefix": { "get": { - "operationId": "TrainingJobMetrics_getMetricLastValues", - "description": "Get the latest values for metrics emitted by the current view of a training job.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfoByPrefix", + "description": "List download information for artifacts under a path prefix from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16448,6 +16269,35 @@ "type": "string" } }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "pathPrefix", + "in": "query", + "required": false, + "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -16465,7 +16315,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" + "$ref": "#/components/schemas/PagedJobArtifactContentInfo" } } } @@ -16486,10 +16336,10 @@ ] } }, - "/training_jobs/{jobName}/outputs": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:metadata": { "get": { - "operationId": "TrainingJobOutputs_listOutputs", - "description": "List outputs produced by a training job.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactMetadata", + "description": "Get metadata for an artifact from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16512,6 +16362,25 @@ "type": "string" } }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "path", + "in": "query", + "required": true, + "description": "The artifact path.", + "schema": { + "type": "string" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -16529,7 +16398,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" + "$ref": "#/components/schemas/JobArtifact" } } } @@ -16550,10 +16419,10 @@ ] } }, - "/training_jobs/{jobName}/outputs/{outputName}": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics": { "get": { - "operationId": "TrainingJobOutputs_getOutput", - "description": "Get one output produced by a training job.", + "operationId": "TrainingJobAttemptMetrics_listAttemptMetrics", + "description": "List metrics emitted by a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16577,14 +16446,35 @@ } }, { - "name": "outputName", + "name": "attemptId", "in": "path", "required": true, - "description": "The output name.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -16602,7 +16492,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/PagedJobMetric" } } } @@ -16623,10 +16513,10 @@ ] } }, - "/training_jobs/{jobName}/runs": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}": { "get": { - "operationId": "TrainingJobRuns_listRuns", - "description": "List runs for a training job.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetric", + "description": "Get the full history for a metric from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16650,12 +16540,75 @@ } }, { - "name": "skipToken", + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "Start of the metric time range.", "schema": { - "type": "string" + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" }, "explode": false }, @@ -16676,7 +16629,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobRun" + "$ref": "#/components/schemas/PagedJobMetricPoint" } } } @@ -16697,10 +16650,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates": { "get": { - "operationId": "TrainingJobRuns_getRun", - "description": "Get one run for a training job.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricAggregates", + "description": "Get aggregate metric values from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16724,14 +16677,78 @@ } }, { - "name": "runId", + "name": "attemptId", "in": "path", "required": true, - "description": "The run identifier.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, + { + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -16749,7 +16766,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobRun" + "$ref": "#/components/schemas/PagedJobMetricAggregate" } } } @@ -16770,10 +16787,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/artifacts": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample": { "get": { - "operationId": "TrainingJobRunArtifacts_listRunArtifacts", - "description": "List artifacts for a specific training job run.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSample", + "description": "Get one sampled value or window from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16797,42 +16814,75 @@ } }, { - "name": "runId", + "name": "attemptId", "in": "path", "required": true, - "description": "The run identifier.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, { - "name": "limit", + "name": "metricName", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "startTimeUtc", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", "schema": { "type": "integer", - "format": "int32" + "format": "int64" }, "explode": false }, { - "name": "skipToken", + "name": "maxStep", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "Maximum metric step to include.", "schema": { - "type": "string" + "type": "integer", + "format": "int64" }, "explode": false }, { - "name": "pathPrefix", + "name": "limit", "in": "query", "required": false, - "description": "Artifact path prefix to list.", + "description": "Maximum number of metric points to return.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" }, "explode": false }, @@ -16853,7 +16903,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -16874,10 +16924,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/artifacts:content": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples": { "get": { - "operationId": "TrainingJobRunArtifacts_downloadRunArtifact", - "description": "Download artifact content from a specific training job run.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSamples", + "description": "Get sampled metric values from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16901,21 +16951,75 @@ } }, { - "name": "runId", + "name": "attemptId", "in": "path", "required": true, - "description": "The run identifier.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, { - "name": "path", - "in": "query", + "name": "metricName", + "in": "path", "required": true, - "description": "The artifact path.", + "description": "The metric name.", "schema": { "type": "string" + } + }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" }, "explode": false }, @@ -16934,10 +17038,9 @@ "200": { "description": "The request has succeeded.", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -16958,10 +17061,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/artifacts:contentInfo": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics:lastValues": { "get": { - "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfo", - "description": "Get download information for an artifact from a specific training job run.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricLastValues", + "description": "Get latest metric values for a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16985,24 +17088,14 @@ } }, { - "name": "runId", + "name": "attemptId", "in": "path", "required": true, - "description": "The run identifier.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -17020,7 +17113,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifactContentInfo" + "$ref": "#/components/schemas/PagedJobMetricLastValue" } } } @@ -17041,10 +17134,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/artifacts:contentInfoByPrefix": { + "/training_jobs/{jobName}/attempts/{attemptId}/outputs": { "get": { - "operationId": "TrainingJobRunArtifacts_getRunArtifactContentInfoByPrefix", - "description": "List download information for artifacts under a path prefix from a specific training job run.", + "operationId": "TrainingJobAttemptOutputs_listAttemptOutputs", + "description": "List outputs produced by a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -17068,34 +17161,14 @@ } }, { - "name": "runId", + "name": "attemptId", "in": "path", "required": true, - "description": "The run identifier.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, - { - "name": "pathPrefix", - "in": "query", - "required": false, - "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -17113,7 +17186,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifactContentInfo" + "$ref": "#/components/schemas/PagedJobOutputReference" } } } @@ -17134,10 +17207,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/artifacts:metadata": { + "/training_jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}": { "get": { - "operationId": "TrainingJobRunArtifacts_getRunArtifactMetadata", - "description": "Get metadata for an artifact from a specific training job run.", + "operationId": "TrainingJobAttemptOutputs_getAttemptOutput", + "description": "Get one output produced by a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -17161,23 +17234,22 @@ } }, { - "name": "runId", + "name": "attemptId", "in": "path", "required": true, - "description": "The run identifier.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, { - "name": "path", - "in": "query", + "name": "outputName", + "in": "path", "required": true, - "description": "The artifact path.", + "description": "The output name.", "schema": { "type": "string" - }, - "explode": false + } }, { "name": "api-version", @@ -17196,7 +17268,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifact" + "$ref": "#/components/schemas/JobOutputReference" } } } @@ -17217,10 +17289,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/metrics": { + "/training_jobs/{jobName}/metrics": { "get": { - "operationId": "TrainingJobRunMetrics_listRunMetrics", - "description": "List metrics emitted by a specific training job run.", + "operationId": "TrainingJobMetrics_listMetrics", + "description": "List metrics emitted by the current view of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -17243,15 +17315,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "limit", "in": "query", @@ -17311,10 +17374,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}": { + "/training_jobs/{jobName}/metrics/{metricName}": { "get": { - "operationId": "TrainingJobRunMetrics_getRunMetric", - "description": "Get the full history for a metric from a specific training job run.", + "operationId": "TrainingJobMetrics_getMetric", + "description": "Get the full history for a training job metric.", "parameters": [ { "name": "Foundry-Features", @@ -17337,15 +17400,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "metricName", "in": "path", @@ -17448,10 +17502,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:aggregates": { + "/training_jobs/{jobName}/metrics/{metricName}:aggregates": { "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricAggregates", - "description": "Get aggregate metric values from a specific training job run.", + "operationId": "TrainingJobMetrics_getMetricAggregates", + "description": "Get aggregate values for a training job metric.", "parameters": [ { "name": "Foundry-Features", @@ -17474,15 +17528,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "metricName", "in": "path", @@ -17585,10 +17630,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:sample": { + "/training_jobs/{jobName}/metrics/{metricName}:sample": { "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricSample", - "description": "Get one sampled value or window from a specific training job run.", + "operationId": "TrainingJobMetrics_getMetricSample", + "description": "Get one sampled value or window for a training job metric.", "parameters": [ { "name": "Foundry-Features", @@ -17611,15 +17656,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "metricName", "in": "path", @@ -17722,10 +17758,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:samples": { + "/training_jobs/{jobName}/metrics/{metricName}:samples": { "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricSamples", - "description": "Get sampled metric values from a specific training job run.", + "operationId": "TrainingJobMetrics_getMetricSamples", + "description": "Get sampled values for a training job metric.", "parameters": [ { "name": "Foundry-Features", @@ -17748,15 +17784,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "metricName", "in": "path", @@ -17859,10 +17886,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/metrics:lastValues": { + "/training_jobs/{jobName}/metrics:lastValues": { "get": { - "operationId": "TrainingJobRunMetrics_getRunMetricLastValues", - "description": "Get latest metric values for a specific training job run.", + "operationId": "TrainingJobMetrics_getMetricLastValues", + "description": "Get the latest values for metrics emitted by the current view of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -17885,15 +17912,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -17932,10 +17950,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/outputs": { + "/training_jobs/{jobName}/outputs": { "get": { - "operationId": "TrainingJobRunOutputs_listRunOutputs", - "description": "List outputs produced by a specific training job run.", + "operationId": "TrainingJobOutputs_listOutputs", + "description": "List outputs produced by a training job.", "parameters": [ { "name": "Foundry-Features", @@ -17958,15 +17976,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "api-version", "in": "query", @@ -18005,10 +18014,10 @@ ] } }, - "/training_jobs/{jobName}/runs/{runId}/outputs/{outputName}": { + "/training_jobs/{jobName}/outputs/{outputName}": { "get": { - "operationId": "TrainingJobRunOutputs_getRunOutput", - "description": "Get one output produced by a specific training job run.", + "operationId": "TrainingJobOutputs_getOutput", + "description": "Get one output produced by a training job.", "parameters": [ { "name": "Foundry-Features", @@ -18031,15 +18040,6 @@ "type": "string" } }, - { - "name": "runId", - "in": "path", - "required": true, - "description": "The run identifier.", - "schema": { - "type": "string" - } - }, { "name": "outputName", "in": "path", @@ -26951,6 +26951,198 @@ ], "description": "Type of a job artifact." }, + "JobAttempt": { + "type": "object", + "required": [ + "id", + "jobName" + ], + "properties": { + "id": { + "type": "string", + "description": "The attempt identifier.", + "readOnly": true + }, + "jobName": { + "type": "string", + "description": "The job name this attempt belongs to.", + "readOnly": true + }, + "status": { + "allOf": [ + { + "$ref": "#/components/schemas/JobAttemptStatus" + } + ], + "description": "The attempt status.", + "readOnly": true + }, + "statusReason": { + "type": "string", + "description": "Additional status reason.", + "readOnly": true + }, + "startTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the attempt started.", + "readOnly": true + }, + "endTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Time the attempt ended.", + "readOnly": true + }, + "lastStartTimeUtc": { + "type": "string", + "format": "date-time", + "description": "Most recent time the attempt started running.", + "readOnly": true + }, + "computeDuration": { + "type": "string", + "format": "duration", + "description": "Total compute duration consumed by the attempt.", + "readOnly": true + }, + "queueingInfo": { + "type": "object", + "additionalProperties": {}, + "description": "Queueing details associated with the attempt.", + "readOnly": true + }, + "computeDetails": { + "allOf": [ + { + "$ref": "#/components/schemas/JobAttemptComputeDetails" + } + ], + "description": "Compute details associated with the attempt.", + "readOnly": true + }, + "error": { + "allOf": [ + { + "$ref": "#/components/schemas/JobAttemptError" + } + ], + "description": "Terminal error for the attempt, if any.", + "readOnly": true + }, + "warnings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobAttemptWarning" + }, + "description": "Warnings emitted for the attempt.", + "readOnly": true + }, + "isCurrent": { + "type": "boolean", + "description": "Whether this attempt is the current attempt for the job.", + "readOnly": true + } + }, + "description": "One execution attempt of a training job." + }, + "JobAttemptComputeDetails": { + "type": "object", + "properties": { + "vmSize": { + "type": "string", + "description": "Virtual machine size used for this attempt.", + "readOnly": true + }, + "instanceType": { + "type": "string", + "description": "Instance type used for this attempt.", + "readOnly": true + }, + "instanceCount": { + "type": "integer", + "format": "int32", + "description": "Number of instances allocated to this attempt.", + "readOnly": true + }, + "gpuCount": { + "type": "integer", + "format": "int32", + "description": "Number of GPUs allocated to this attempt.", + "readOnly": true + }, + "region": { + "type": "string", + "description": "Region where this attempt was placed.", + "readOnly": true + }, + "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional backend-specific compute placement properties.", + "readOnly": true + } + }, + "description": "Compute placement details for a job attempt." + }, + "JobAttemptError": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable error code." + }, + "message": { + "type": "string", + "description": "Human-readable error message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional error details." + } + }, + "description": "Error emitted during a job attempt." + }, + "JobAttemptStatus": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "Queued", + "Running", + "Completed", + "Failed", + "Canceled" + ] + } + ], + "description": "Status of a job execution attempt." + }, + "JobAttemptWarning": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Machine-readable warning code." + }, + "message": { + "type": "string", + "description": "Human-readable warning message." + }, + "details": { + "type": "object", + "additionalProperties": {}, + "description": "Additional warning details." + } + }, + "description": "Warning emitted during a job attempt." + }, "JobCreate": { "type": "object", "required": [ @@ -27329,198 +27521,6 @@ }, "description": "Compute Resource configuration for the job." }, - "JobRun": { - "type": "object", - "required": [ - "id", - "jobName" - ], - "properties": { - "id": { - "type": "string", - "description": "The run identifier.", - "readOnly": true - }, - "jobName": { - "type": "string", - "description": "The job name this run belongs to.", - "readOnly": true - }, - "status": { - "allOf": [ - { - "$ref": "#/components/schemas/JobRunStatus" - } - ], - "description": "The run status.", - "readOnly": true - }, - "statusReason": { - "type": "string", - "description": "Additional status reason.", - "readOnly": true - }, - "startTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Time the run started.", - "readOnly": true - }, - "endTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Time the run ended.", - "readOnly": true - }, - "lastStartTimeUtc": { - "type": "string", - "format": "date-time", - "description": "Most recent time the run started running.", - "readOnly": true - }, - "computeDuration": { - "type": "string", - "format": "duration", - "description": "Total compute duration consumed by the run.", - "readOnly": true - }, - "queueingInfo": { - "type": "object", - "additionalProperties": {}, - "description": "Queueing details associated with the run.", - "readOnly": true - }, - "computeDetails": { - "allOf": [ - { - "$ref": "#/components/schemas/JobRunComputeDetails" - } - ], - "description": "Compute details associated with the run.", - "readOnly": true - }, - "error": { - "allOf": [ - { - "$ref": "#/components/schemas/JobRunError" - } - ], - "description": "Terminal error for the run, if any.", - "readOnly": true - }, - "warnings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobRunWarning" - }, - "description": "Warnings emitted for the run.", - "readOnly": true - }, - "isCurrent": { - "type": "boolean", - "description": "Whether this run is the current run for the job.", - "readOnly": true - } - }, - "description": "One execution run of a training job." - }, - "JobRunComputeDetails": { - "type": "object", - "properties": { - "vmSize": { - "type": "string", - "description": "Virtual machine size used for this run attempt.", - "readOnly": true - }, - "instanceType": { - "type": "string", - "description": "Instance type used for this run attempt.", - "readOnly": true - }, - "instanceCount": { - "type": "integer", - "format": "int32", - "description": "Number of instances allocated to this run attempt.", - "readOnly": true - }, - "gpuCount": { - "type": "integer", - "format": "int32", - "description": "Number of GPUs allocated to this run attempt.", - "readOnly": true - }, - "region": { - "type": "string", - "description": "Region where this run attempt was placed.", - "readOnly": true - }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Additional backend-specific compute placement properties.", - "readOnly": true - } - }, - "description": "Compute placement details for a job run attempt." - }, - "JobRunError": { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "Machine-readable error code." - }, - "message": { - "type": "string", - "description": "Human-readable error message." - }, - "details": { - "type": "object", - "additionalProperties": {}, - "description": "Additional error details." - } - }, - "description": "Error emitted during a job run." - }, - "JobRunStatus": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "string", - "enum": [ - "Queued", - "Running", - "Completed", - "Failed", - "Canceled" - ] - } - ], - "description": "Status of a job execution run." - }, - "JobRunWarning": { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "Machine-readable warning code." - }, - "message": { - "type": "string", - "description": "Human-readable warning message." - }, - "details": { - "type": "object", - "additionalProperties": {}, - "description": "Additional warning details." - } - }, - "description": "Warning emitted during a job run." - }, "JobType": { "anyOf": [ { @@ -49257,6 +49257,27 @@ }, "description": "Paged collection of JobArtifactContentInfo items" }, + "PagedJobAttempt": { + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobAttempt" + }, + "description": "The JobAttempt items on this page" + }, + "nextLink": { + "type": "string", + "format": "uri", + "description": "The link to the next page of items" + } + }, + "description": "Paged collection of JobAttempt items" + }, "PagedJobMetric": { "type": "object", "required": [ @@ -49362,27 +49383,6 @@ }, "description": "Paged collection of JobOutputReference items" }, - "PagedJobRun": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobRun" - }, - "description": "The JobRun items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobRun items" - }, "PagedManagedAgentIdentityBlueprint": { "type": "object", "required": [ diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp index 6807980a8f09..1936add3c9e7 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp @@ -1049,28 +1049,28 @@ union ListViewType { All: "All", } -@doc("Status of a job execution run.") -union JobRunStatus { +@doc("Status of a job execution attempt.") +union JobAttemptStatus { string, - @doc("The run is queued.") + @doc("The attempt is queued.") Queued: "Queued", - @doc("The run is running.") + @doc("The attempt is running.") Running: "Running", - @doc("The run completed successfully.") + @doc("The attempt completed successfully.") Completed: "Completed", - @doc("The run failed.") + @doc("The attempt failed.") Failed: "Failed", - @doc("The run was canceled.") + @doc("The attempt was canceled.") Canceled: "Canceled", } -@doc("Warning emitted during a job run.") -model JobRunWarning { +@doc("Warning emitted during a job attempt.") +model JobAttemptWarning { @doc("Machine-readable warning code.") code?: string; @@ -1081,8 +1081,8 @@ model JobRunWarning { details?: Record; } -@doc("Error emitted during a job run.") -model JobRunError { +@doc("Error emitted during a job attempt.") +model JobAttemptError { @doc("Machine-readable error code.") code?: string; @@ -1127,25 +1127,25 @@ model TrainingJobServiceCollection { services: Record; } -@doc("Compute placement details for a job run attempt.") -model JobRunComputeDetails { - @doc("Virtual machine size used for this run attempt.") +@doc("Compute placement details for a job attempt.") +model JobAttemptComputeDetails { + @doc("Virtual machine size used for this attempt.") @visibility(Lifecycle.Read) vmSize?: string; - @doc("Instance type used for this run attempt.") + @doc("Instance type used for this attempt.") @visibility(Lifecycle.Read) instanceType?: string; - @doc("Number of instances allocated to this run attempt.") + @doc("Number of instances allocated to this attempt.") @visibility(Lifecycle.Read) instanceCount?: int32; - @doc("Number of GPUs allocated to this run attempt.") + @doc("Number of GPUs allocated to this attempt.") @visibility(Lifecycle.Read) gpuCount?: int32; - @doc("Region where this run attempt was placed.") + @doc("Region where this attempt was placed.") @visibility(Lifecycle.Read) region?: string; @@ -1154,57 +1154,57 @@ model JobRunComputeDetails { properties?: Record; } -@doc("One execution run of a training job.") -model JobRun { - @doc("The run identifier.") +@doc("One execution attempt of a training job.") +model JobAttempt { + @doc("The attempt identifier.") @visibility(Lifecycle.Read) id: string; - @doc("The job name this run belongs to.") + @doc("The job name this attempt belongs to.") @visibility(Lifecycle.Read) jobName: string; - @doc("The run status.") + @doc("The attempt status.") @visibility(Lifecycle.Read) - status?: JobRunStatus; + status?: JobAttemptStatus; @doc("Additional status reason.") @visibility(Lifecycle.Read) statusReason?: string; - @doc("Time the run started.") + @doc("Time the attempt started.") @visibility(Lifecycle.Read) startTimeUtc?: utcDateTime; - @doc("Time the run ended.") + @doc("Time the attempt ended.") @visibility(Lifecycle.Read) endTimeUtc?: utcDateTime; - @doc("Most recent time the run started running.") + @doc("Most recent time the attempt started running.") @visibility(Lifecycle.Read) lastStartTimeUtc?: utcDateTime; - @doc("Total compute duration consumed by the run.") + @doc("Total compute duration consumed by the attempt.") @visibility(Lifecycle.Read) computeDuration?: duration; - @doc("Queueing details associated with the run.") + @doc("Queueing details associated with the attempt.") @visibility(Lifecycle.Read) queueingInfo?: Record; - @doc("Compute details associated with the run.") + @doc("Compute details associated with the attempt.") @visibility(Lifecycle.Read) - computeDetails?: JobRunComputeDetails; + computeDetails?: JobAttemptComputeDetails; - @doc("Terminal error for the run, if any.") + @doc("Terminal error for the attempt, if any.") @visibility(Lifecycle.Read) - error?: JobRunError; + error?: JobAttemptError; - @doc("Warnings emitted for the run.") + @doc("Warnings emitted for the attempt.") @visibility(Lifecycle.Read) - warnings?: JobRunWarning[]; + warnings?: JobAttemptWarning[]; - @doc("Whether this run is the current run for the job.") + @doc("Whether this attempt is the current attempt for the job.") @visibility(Lifecycle.Read) isCurrent?: boolean; } diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp index 3bea98ba0ffe..e8012cb8af38 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp @@ -144,12 +144,12 @@ interface TrainingJobOperations { } @tag("TrainingJobs") -interface TrainingJobRuns { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job runs are projected from job execution history." - @doc("List runs for a training job.") +interface TrainingJobAttempts { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job attempts are projected from job execution history." + @doc("List attempts for a training job.") @get - @route("/training_jobs/{jobName}/runs") - listRuns is FoundryDataPlaneRequiredPreviewOperation< + @route("/training_jobs/{jobName}/attempts") + listAttempts is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The training job name.") @@ -158,25 +158,25 @@ interface TrainingJobRuns { ...JobContinuationListQueryParameters; }, - Azure.Core.Page + Azure.Core.Page >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job runs are projected from job execution history." - @doc("Get one run for a training job.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job attempts are projected from job execution history." + @doc("Get one attempt for a training job.") @get - @route("/training_jobs/{jobName}/runs/{runId}") - getRun is FoundryDataPlaneRequiredPreviewOperation< + @route("/training_jobs/{jobName}/attempts/{attemptId}") + getAttempt is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The training job name.") @path jobName: string; - @doc("The run identifier.") + @doc("The attempt identifier.") @path - runId: string; + attemptId: string; }, - JobRun + JobAttempt >; } @@ -271,41 +271,41 @@ interface TrainingJobArtifacts { } @tag("TrainingJobs") -interface TrainingJobRunArtifacts { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run artifacts are projected from the run data container." - @doc("List artifacts for a specific training job run.") +interface TrainingJobAttemptArtifacts { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." + @doc("List artifacts for a specific training job attempt.") @get - @route("/training_jobs/{jobName}/runs/{runId}/artifacts") - listRunArtifacts is FoundryDataPlaneRequiredPreviewOperation< + @route("/training_jobs/{jobName}/attempts/{attemptId}/artifacts") + listAttemptArtifacts is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The training job name.") @path jobName: string; - @doc("The run identifier.") + @doc("The attempt identifier.") @path - runId: string; + attemptId: string; ...JobArtifactListQueryParameters; }, Azure.Core.Page >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run artifacts are projected from the run data container." - @doc("Get metadata for an artifact from a specific training job run.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." + @doc("Get metadata for an artifact from a specific training job attempt.") @get - @route("/training_jobs/{jobName}/runs/{runId}/artifacts:metadata") - getRunArtifactMetadata is FoundryDataPlaneRequiredPreviewOperation< + @route("/training_jobs/{jobName}/attempts/{attemptId}/artifacts:metadata") + getAttemptArtifactMetadata is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The training job name.") @path jobName: string; - @doc("The run identifier.") + @doc("The attempt identifier.") @path - runId: string; + attemptId: string; @doc("The artifact path.") @query @@ -314,20 +314,20 @@ interface TrainingJobRunArtifacts { JobArtifact >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run artifacts are projected from the run data container." - @doc("Get download information for an artifact from a specific training job run.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." + @doc("Get download information for an artifact from a specific training job attempt.") @get - @route("/training_jobs/{jobName}/runs/{runId}/artifacts:contentInfo") - getRunArtifactContentInfo is FoundryDataPlaneRequiredPreviewOperation< + @route("/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfo") + getAttemptArtifactContentInfo is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The training job name.") @path jobName: string; - @doc("The run identifier.") + @doc("The attempt identifier.") @path - runId: string; + attemptId: string; @doc("The artifact path.") @query @@ -336,41 +336,41 @@ interface TrainingJobRunArtifacts { JobArtifactContentInfo >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run artifacts are projected from the run data container." - @doc("List download information for artifacts under a path prefix from a specific training job run.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." + @doc("List download information for artifacts under a path prefix from a specific training job attempt.") @get - @route("/training_jobs/{jobName}/runs/{runId}/artifacts:contentInfoByPrefix") - getRunArtifactContentInfoByPrefix is FoundryDataPlaneRequiredPreviewOperation< + @route("/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfoByPrefix") + getAttemptArtifactContentInfoByPrefix is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The training job name.") @path jobName: string; - @doc("The run identifier.") + @doc("The attempt identifier.") @path - runId: string; + attemptId: string; ...JobArtifactContentInfoByPrefixQueryParameters; }, Azure.Core.Page >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run artifacts are projected from the run data container." + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." #suppress "@azure-tools/typespec-azure-core/byos" "Job artifact content is produced by the job and streamed back to the caller." - @doc("Download artifact content from a specific training job run.") + @doc("Download artifact content from a specific training job attempt.") @get - @route("/training_jobs/{jobName}/runs/{runId}/artifacts:content") - downloadRunArtifact is FoundryDataPlaneRequiredPreviewOperation< + @route("/training_jobs/{jobName}/attempts/{attemptId}/artifacts:content") + downloadAttemptArtifact is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The training job name.") @path jobName: string; - @doc("The run identifier.") + @doc("The attempt identifier.") @path - runId: string; + attemptId: string; @doc("The artifact path.") @query @@ -494,59 +494,59 @@ interface TrainingJobMetrics { } @tag("TrainingJobs") -interface TrainingJobRunMetrics { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." - @doc("List metrics emitted by a specific training job run.") +interface TrainingJobAttemptMetrics { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("List metrics emitted by a specific training job attempt.") @get - @route("/training_jobs/{jobName}/runs/{runId}/metrics") - listRunMetrics is FoundryDataPlaneRequiredPreviewOperation< + @route("/training_jobs/{jobName}/attempts/{attemptId}/metrics") + listAttemptMetrics is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The training job name.") @path jobName: string; - @doc("The run identifier.") + @doc("The attempt identifier.") @path - runId: string; + attemptId: string; ...JobMetricListQueryParameters; }, Azure.Core.Page >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." - @doc("Get latest metric values for a specific training job run.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("Get latest metric values for a specific training job attempt.") @get - @route("/training_jobs/{jobName}/runs/{runId}/metrics:lastValues") - getRunMetricLastValues is FoundryDataPlaneRequiredPreviewOperation< + @route("/training_jobs/{jobName}/attempts/{attemptId}/metrics:lastValues") + getAttemptMetricLastValues is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The training job name.") @path jobName: string; - @doc("The run identifier.") + @doc("The attempt identifier.") @path - runId: string; + attemptId: string; }, Azure.Core.Page >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." - @doc("Get the full history for a metric from a specific training job run.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("Get the full history for a metric from a specific training job attempt.") @get - @route("/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}") - getRunMetric is FoundryDataPlaneRequiredPreviewOperation< + @route("/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}") + getAttemptMetric is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The training job name.") @path jobName: string; - @doc("The run identifier.") + @doc("The attempt identifier.") @path - runId: string; + attemptId: string; @doc("The metric name.") @path @@ -557,20 +557,20 @@ interface TrainingJobRunMetrics { Azure.Core.Page >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." - @doc("Get aggregate metric values from a specific training job run.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("Get aggregate metric values from a specific training job attempt.") @get - @route("/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:aggregates") - getRunMetricAggregates is FoundryDataPlaneRequiredPreviewOperation< + @route("/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates") + getAttemptMetricAggregates is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The training job name.") @path jobName: string; - @doc("The run identifier.") + @doc("The attempt identifier.") @path - runId: string; + attemptId: string; @doc("The metric name.") @path @@ -581,20 +581,20 @@ interface TrainingJobRunMetrics { Azure.Core.Page >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." - @doc("Get sampled metric values from a specific training job run.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("Get sampled metric values from a specific training job attempt.") @get - @route("/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:samples") - getRunMetricSamples is FoundryDataPlaneRequiredPreviewOperation< + @route("/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples") + getAttemptMetricSamples is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The training job name.") @path jobName: string; - @doc("The run identifier.") + @doc("The attempt identifier.") @path - runId: string; + attemptId: string; @doc("The metric name.") @path @@ -605,20 +605,20 @@ interface TrainingJobRunMetrics { JobMetricSample >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run metrics are projected from the run data container." - @doc("Get one sampled value or window from a specific training job run.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("Get one sampled value or window from a specific training job attempt.") @get - @route("/training_jobs/{jobName}/runs/{runId}/metrics/{metricName}:sample") - getRunMetricSample is FoundryDataPlaneRequiredPreviewOperation< + @route("/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample") + getAttemptMetricSample is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The training job name.") @path jobName: string; - @doc("The run identifier.") + @doc("The attempt identifier.") @path - runId: string; + attemptId: string; @doc("The metric name.") @path @@ -667,40 +667,40 @@ interface TrainingJobOutputs { } @tag("TrainingJobs") -interface TrainingJobRunOutputs { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run outputs are projected from run output state and asset relationships." - @doc("List outputs produced by a specific training job run.") +interface TrainingJobAttemptOutputs { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt outputs are projected from attempt output state and asset relationships." + @doc("List outputs produced by a specific training job attempt.") @get - @route("/training_jobs/{jobName}/runs/{runId}/outputs") - listRunOutputs is FoundryDataPlaneRequiredPreviewOperation< + @route("/training_jobs/{jobName}/attempts/{attemptId}/outputs") + listAttemptOutputs is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The training job name.") @path jobName: string; - @doc("The run identifier.") + @doc("The attempt identifier.") @path - runId: string; + attemptId: string; }, Azure.Core.Page >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Run outputs are projected from run output state and asset relationships." - @doc("Get one output produced by a specific training job run.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt outputs are projected from attempt output state and asset relationships." + @doc("Get one output produced by a specific training job attempt.") @get - @route("/training_jobs/{jobName}/runs/{runId}/outputs/{outputName}") - getRunOutput is FoundryDataPlaneRequiredPreviewOperation< + @route("/training_jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}") + getAttemptOutput is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @doc("The training job name.") @path jobName: string; - @doc("The run identifier.") + @doc("The attempt identifier.") @path - runId: string; + attemptId: string; @doc("The output name.") @path From 82fdbe53733277e4564a04419b09a90d07bbca80 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Wed, 6 May 2026 02:55:30 -0700 Subject: [PATCH 19/37] fix(foundry): route latest training job attempts Move training job artifact and metric routes for the current attempt under attempts/latest so the public surface is explicit about attempt semantics. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../v1/microsoft-foundry-openapi3.json | 1134 ++++++++--------- .../microsoft-foundry-openapi3.json | 1134 ++++++++--------- .../data-plane/Foundry/src/jobs/routes.tsp | 44 +- 3 files changed, 1156 insertions(+), 1156 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index e017b3069364..4e1f4efc6911 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -12705,10 +12705,84 @@ ] } }, - "/training_jobs/{jobName}/artifacts": { + "/training_jobs/{jobName}/attempts": { + "get": { + "operationId": "TrainingJobAttempts_listAttempts", + "description": "List attempts for a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobAttempt" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/attempts/latest/artifacts": { "get": { "operationId": "TrainingJobArtifacts_listArtifacts", - "description": "List artifacts for the current view of a training job.", + "description": "List artifacts for the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -12800,10 +12874,10 @@ ] } }, - "/training_jobs/{jobName}/artifacts:content": { + "/training_jobs/{jobName}/attempts/latest/artifacts:content": { "get": { "operationId": "TrainingJobArtifacts_downloadArtifact", - "description": "Download training job artifact content.", + "description": "Download artifact content from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -12875,10 +12949,10 @@ ] } }, - "/training_jobs/{jobName}/artifacts:contentInfo": { + "/training_jobs/{jobName}/attempts/latest/artifacts:contentInfo": { "get": { "operationId": "TrainingJobArtifacts_getArtifactContentInfo", - "description": "Get download information for a training job artifact.", + "description": "Get download information for an artifact from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -12949,10 +13023,10 @@ ] } }, - "/training_jobs/{jobName}/artifacts:contentInfoByPrefix": { + "/training_jobs/{jobName}/attempts/latest/artifacts:contentInfoByPrefix": { "get": { "operationId": "TrainingJobArtifacts_getArtifactContentInfoByPrefix", - "description": "List download information for training job artifacts under a path prefix.", + "description": "List download information for artifacts under a path prefix from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -13033,10 +13107,10 @@ ] } }, - "/training_jobs/{jobName}/artifacts:metadata": { + "/training_jobs/{jobName}/attempts/latest/artifacts:metadata": { "get": { "operationId": "TrainingJobArtifacts_getArtifactMetadata", - "description": "Get metadata for a training job artifact.", + "description": "Get metadata for an artifact from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -13107,10 +13181,10 @@ ] } }, - "/training_jobs/{jobName}/attempts": { + "/training_jobs/{jobName}/attempts/latest/metrics": { "get": { - "operationId": "TrainingJobAttempts_listAttempts", - "description": "List attempts for a training job.", + "operationId": "TrainingJobMetrics_listMetrics", + "description": "List metrics emitted by the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -13133,6 +13207,17 @@ "type": "string" } }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, { "name": "skipToken", "in": "query", @@ -13160,7 +13245,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobAttempt" + "$ref": "#/components/schemas/PagedJobMetric" } } } @@ -13181,10 +13266,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}": { + "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}": { "get": { - "operationId": "TrainingJobAttempts_getAttempt", - "description": "Get one attempt for a training job.", + "operationId": "TrainingJobMetrics_getMetric", + "description": "Get the full history for a metric from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -13208,14 +13293,69 @@ } }, { - "name": "attemptId", + "name": "metricName", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The metric name.", "schema": { "type": "string" } }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -13233,7 +13373,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobAttempt" + "$ref": "#/components/schemas/PagedJobMetricPoint" } } } @@ -13254,10 +13394,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts": { + "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:aggregates": { "get": { - "operationId": "TrainingJobAttemptArtifacts_listAttemptArtifacts", - "description": "List artifacts for a specific training job attempt.", + "operationId": "TrainingJobMetrics_getMetricAggregates", + "description": "Get aggregate metric values from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -13281,42 +13421,66 @@ } }, { - "name": "attemptId", + "name": "metricName", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The metric name.", "schema": { "type": "string" } }, { - "name": "limit", + "name": "startTimeUtc", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", "schema": { "type": "integer", - "format": "int32" + "format": "int64" }, "explode": false }, { - "name": "skipToken", + "name": "maxStep", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "Maximum metric step to include.", "schema": { - "type": "string" + "type": "integer", + "format": "int64" }, "explode": false }, { - "name": "pathPrefix", + "name": "limit", "in": "query", "required": false, - "description": "Artifact path prefix to list.", + "description": "Maximum number of metric points to return.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" }, "explode": false }, @@ -13337,7 +13501,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" + "$ref": "#/components/schemas/PagedJobMetricAggregate" } } } @@ -13358,10 +13522,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:content": { + "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:sample": { "get": { - "operationId": "TrainingJobAttemptArtifacts_downloadAttemptArtifact", - "description": "Download artifact content from a specific training job attempt.", + "operationId": "TrainingJobMetrics_getMetricSample", + "description": "Get one sampled value or window from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -13385,105 +13549,66 @@ } }, { - "name": "attemptId", + "name": "metricName", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The metric name.", "schema": { "type": "string" } }, { - "name": "path", + "name": "startTimeUtc", "in": "query", - "required": true, - "description": "The artifact path.", + "required": false, + "description": "Start of the metric time range.", "schema": { - "type": "string" + "type": "string", + "format": "date-time" }, "explode": false }, { - "name": "api-version", + "name": "endTimeUtc", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "End of the metric time range.", "schema": { - "type": "string" + "type": "string", + "format": "date-time" }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/octet-stream": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfo": { - "get": { - "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfo", - "description": "Get download information for an artifact from a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } }, { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int64" + }, + "explode": false }, { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int64" + }, + "explode": false }, { - "name": "path", + "name": "limit", "in": "query", - "required": true, - "description": "The artifact path.", + "required": false, + "description": "Maximum number of metric points to return.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" }, "explode": false }, @@ -13504,7 +13629,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifactContentInfo" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -13525,10 +13650,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfoByPrefix": { + "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:samples": { "get": { - "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfoByPrefix", - "description": "List download information for artifacts under a path prefix from a specific training job attempt.", + "operationId": "TrainingJobMetrics_getMetricSamples", + "description": "Get sampled metric values from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -13552,31 +13677,66 @@ } }, { - "name": "attemptId", + "name": "metricName", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The metric name.", "schema": { "type": "string" } }, { - "name": "pathPrefix", + "name": "startTimeUtc", "in": "query", "required": false, - "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", + "description": "Start of the metric time range.", "schema": { - "type": "string" + "type": "string", + "format": "date-time" }, "explode": false }, { - "name": "skipToken", + "name": "endTimeUtc", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "End of the metric time range.", "schema": { - "type": "string" + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" }, "explode": false }, @@ -13597,7 +13757,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifactContentInfo" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -13618,10 +13778,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:metadata": { + "/training_jobs/{jobName}/attempts/latest/metrics:lastValues": { "get": { - "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactMetadata", - "description": "Get metadata for an artifact from a specific training job attempt.", + "operationId": "TrainingJobMetrics_getMetricLastValues", + "description": "Get the latest values for metrics emitted by the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -13644,25 +13804,6 @@ "type": "string" } }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -13680,7 +13821,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifact" + "$ref": "#/components/schemas/PagedJobMetricLastValue" } } } @@ -13701,10 +13842,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics": { + "/training_jobs/{jobName}/attempts/{attemptId}": { "get": { - "operationId": "TrainingJobAttemptMetrics_listAttemptMetrics", - "description": "List metrics emitted by a specific training job attempt.", + "operationId": "TrainingJobAttempts_getAttempt", + "description": "Get one attempt for a training job.", "parameters": [ { "name": "Foundry-Features", @@ -13736,27 +13877,6 @@ "type": "string" } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -13774,7 +13894,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetric" + "$ref": "#/components/schemas/JobAttempt" } } } @@ -13795,10 +13915,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts": { "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetric", - "description": "Get the full history for a metric from a specific training job attempt.", + "operationId": "TrainingJobAttemptArtifacts_listAttemptArtifacts", + "description": "List artifacts for a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -13831,66 +13951,33 @@ } }, { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", + "name": "limit", "in": "query", "required": false, - "description": "Minimum metric step to include.", + "description": "Maximum number of items to return.", "schema": { "type": "integer", - "format": "int64" + "format": "int32" }, "explode": false }, { - "name": "maxStep", + "name": "skipToken", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "Continuation token returned by a previous list request.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "pathPrefix", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "Artifact path prefix to list.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -13911,7 +13998,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" + "$ref": "#/components/schemas/PagedJobArtifact" } } } @@ -13932,10 +14019,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:content": { "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetricAggregates", - "description": "Get aggregate metric values from a specific training job attempt.", + "operationId": "TrainingJobAttemptArtifacts_downloadAttemptArtifact", + "description": "Download artifact content from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -13968,66 +14055,12 @@ } }, { - "name": "metricName", - "in": "path", + "name": "path", + "in": "query", "required": true, - "description": "The metric name.", + "description": "The artifact path.", "schema": { "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" }, "explode": false }, @@ -14046,9 +14079,10 @@ "200": { "description": "The request has succeeded.", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" + "type": "string", + "format": "binary" } } } @@ -14069,10 +14103,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfo": { "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSample", - "description": "Get one sampled value or window from a specific training job attempt.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfo", + "description": "Get download information for an artifact from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14105,66 +14139,12 @@ } }, { - "name": "metricName", - "in": "path", + "name": "path", + "in": "query", "required": true, - "description": "The metric name.", + "description": "The artifact path.", "schema": { "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" }, "explode": false }, @@ -14185,7 +14165,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/JobArtifactContentInfo" } } } @@ -14206,10 +14186,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfoByPrefix": { "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSamples", - "description": "Get sampled metric values from a specific training job attempt.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfoByPrefix", + "description": "List download information for artifacts under a path prefix from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14242,214 +14222,24 @@ } }, { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", + "name": "pathPrefix", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", "schema": { "type": "string" }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobMetricSample" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics:lastValues": { - "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetricLastValues", - "description": "Get latest metric values for a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } }, { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", + "name": "skipToken", "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/outputs": { - "get": { - "operationId": "TrainingJobAttemptOutputs_listAttemptOutputs", - "description": "List outputs produced by a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", + "required": false, + "description": "Continuation token returned by a previous list request.", "schema": { "type": "string" - } + }, + "explode": false }, { "name": "api-version", @@ -14468,7 +14258,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" + "$ref": "#/components/schemas/PagedJobArtifactContentInfo" } } } @@ -14489,10 +14279,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:metadata": { "get": { - "operationId": "TrainingJobAttemptOutputs_getAttemptOutput", - "description": "Get one output produced by a specific training job attempt.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactMetadata", + "description": "Get metadata for an artifact from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14525,13 +14315,14 @@ } }, { - "name": "outputName", - "in": "path", + "name": "path", + "in": "query", "required": true, - "description": "The output name.", + "description": "The artifact path.", "schema": { "type": "string" - } + }, + "explode": false }, { "name": "api-version", @@ -14550,7 +14341,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/JobArtifact" } } } @@ -14571,10 +14362,10 @@ ] } }, - "/training_jobs/{jobName}/metrics": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics": { "get": { - "operationId": "TrainingJobMetrics_listMetrics", - "description": "List metrics emitted by the current view of a training job.", + "operationId": "TrainingJobAttemptMetrics_listAttemptMetrics", + "description": "List metrics emitted by a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14597,6 +14388,15 @@ "type": "string" } }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, { "name": "limit", "in": "query", @@ -14656,10 +14456,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}": { "get": { - "operationId": "TrainingJobMetrics_getMetric", - "description": "Get the full history for a training job metric.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetric", + "description": "Get the full history for a metric from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14682,6 +14482,15 @@ "type": "string" } }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, { "name": "metricName", "in": "path", @@ -14784,10 +14593,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}:aggregates": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates": { "get": { - "operationId": "TrainingJobMetrics_getMetricAggregates", - "description": "Get aggregate values for a training job metric.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricAggregates", + "description": "Get aggregate metric values from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14810,6 +14619,15 @@ "type": "string" } }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, { "name": "metricName", "in": "path", @@ -14912,10 +14730,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}:sample": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample": { "get": { - "operationId": "TrainingJobMetrics_getMetricSample", - "description": "Get one sampled value or window for a training job metric.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSample", + "description": "Get one sampled value or window from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14938,6 +14756,15 @@ "type": "string" } }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, { "name": "metricName", "in": "path", @@ -15040,10 +14867,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}:samples": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples": { "get": { - "operationId": "TrainingJobMetrics_getMetricSamples", - "description": "Get sampled values for a training job metric.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSamples", + "description": "Get sampled metric values from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -15066,6 +14893,15 @@ "type": "string" } }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, { "name": "metricName", "in": "path", @@ -15168,10 +15004,10 @@ ] } }, - "/training_jobs/{jobName}/metrics:lastValues": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics:lastValues": { "get": { - "operationId": "TrainingJobMetrics_getMetricLastValues", - "description": "Get the latest values for metrics emitted by the current view of a training job.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricLastValues", + "description": "Get latest metric values for a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -15194,6 +15030,15 @@ "type": "string" } }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -15232,6 +15077,161 @@ ] } }, + "/training_jobs/{jobName}/attempts/{attemptId}/outputs": { + "get": { + "operationId": "TrainingJobAttemptOutputs_listAttemptOutputs", + "description": "List outputs produced by a specific training job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}": { + "get": { + "operationId": "TrainingJobAttemptOutputs_getAttemptOutput", + "description": "Get one output produced by a specific training job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "outputName", + "in": "path", + "required": true, + "description": "The output name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, "/training_jobs/{jobName}/outputs": { "get": { "operationId": "TrainingJobOutputs_listOutputs", diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 5f03040f7e52..daa91eb7fab2 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -15423,10 +15423,84 @@ ] } }, - "/training_jobs/{jobName}/artifacts": { + "/training_jobs/{jobName}/attempts": { + "get": { + "operationId": "TrainingJobAttempts_listAttempts", + "description": "List attempts for a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "skipToken", + "in": "query", + "required": false, + "description": "Continuation token returned by a previous list request.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobAttempt" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/attempts/latest/artifacts": { "get": { "operationId": "TrainingJobArtifacts_listArtifacts", - "description": "List artifacts for the current view of a training job.", + "description": "List artifacts for the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -15518,10 +15592,10 @@ ] } }, - "/training_jobs/{jobName}/artifacts:content": { + "/training_jobs/{jobName}/attempts/latest/artifacts:content": { "get": { "operationId": "TrainingJobArtifacts_downloadArtifact", - "description": "Download training job artifact content.", + "description": "Download artifact content from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -15593,10 +15667,10 @@ ] } }, - "/training_jobs/{jobName}/artifacts:contentInfo": { + "/training_jobs/{jobName}/attempts/latest/artifacts:contentInfo": { "get": { "operationId": "TrainingJobArtifacts_getArtifactContentInfo", - "description": "Get download information for a training job artifact.", + "description": "Get download information for an artifact from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -15667,10 +15741,10 @@ ] } }, - "/training_jobs/{jobName}/artifacts:contentInfoByPrefix": { + "/training_jobs/{jobName}/attempts/latest/artifacts:contentInfoByPrefix": { "get": { "operationId": "TrainingJobArtifacts_getArtifactContentInfoByPrefix", - "description": "List download information for training job artifacts under a path prefix.", + "description": "List download information for artifacts under a path prefix from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -15751,10 +15825,10 @@ ] } }, - "/training_jobs/{jobName}/artifacts:metadata": { + "/training_jobs/{jobName}/attempts/latest/artifacts:metadata": { "get": { "operationId": "TrainingJobArtifacts_getArtifactMetadata", - "description": "Get metadata for a training job artifact.", + "description": "Get metadata for an artifact from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -15825,10 +15899,10 @@ ] } }, - "/training_jobs/{jobName}/attempts": { + "/training_jobs/{jobName}/attempts/latest/metrics": { "get": { - "operationId": "TrainingJobAttempts_listAttempts", - "description": "List attempts for a training job.", + "operationId": "TrainingJobMetrics_listMetrics", + "description": "List metrics emitted by the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -15851,6 +15925,17 @@ "type": "string" } }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of items to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, { "name": "skipToken", "in": "query", @@ -15878,7 +15963,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobAttempt" + "$ref": "#/components/schemas/PagedJobMetric" } } } @@ -15899,10 +15984,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}": { + "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}": { "get": { - "operationId": "TrainingJobAttempts_getAttempt", - "description": "Get one attempt for a training job.", + "operationId": "TrainingJobMetrics_getMetric", + "description": "Get the full history for a metric from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -15926,14 +16011,69 @@ } }, { - "name": "attemptId", + "name": "metricName", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The metric name.", "schema": { "type": "string" } }, + { + "name": "startTimeUtc", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -15951,7 +16091,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobAttempt" + "$ref": "#/components/schemas/PagedJobMetricPoint" } } } @@ -15972,10 +16112,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts": { + "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:aggregates": { "get": { - "operationId": "TrainingJobAttemptArtifacts_listAttemptArtifacts", - "description": "List artifacts for a specific training job attempt.", + "operationId": "TrainingJobMetrics_getMetricAggregates", + "description": "Get aggregate metric values from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -15999,42 +16139,66 @@ } }, { - "name": "attemptId", + "name": "metricName", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The metric name.", "schema": { "type": "string" } }, { - "name": "limit", + "name": "startTimeUtc", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "Start of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "endTimeUtc", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", "schema": { "type": "integer", - "format": "int32" + "format": "int64" }, "explode": false }, { - "name": "skipToken", + "name": "maxStep", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "Maximum metric step to include.", "schema": { - "type": "string" + "type": "integer", + "format": "int64" }, "explode": false }, { - "name": "pathPrefix", + "name": "limit", "in": "query", "required": false, - "description": "Artifact path prefix to list.", + "description": "Maximum number of metric points to return.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" }, "explode": false }, @@ -16055,7 +16219,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" + "$ref": "#/components/schemas/PagedJobMetricAggregate" } } } @@ -16076,10 +16240,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:content": { + "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:sample": { "get": { - "operationId": "TrainingJobAttemptArtifacts_downloadAttemptArtifact", - "description": "Download artifact content from a specific training job attempt.", + "operationId": "TrainingJobMetrics_getMetricSample", + "description": "Get one sampled value or window from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -16103,105 +16267,66 @@ } }, { - "name": "attemptId", + "name": "metricName", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The metric name.", "schema": { "type": "string" } }, { - "name": "path", + "name": "startTimeUtc", "in": "query", - "required": true, - "description": "The artifact path.", + "required": false, + "description": "Start of the metric time range.", "schema": { - "type": "string" + "type": "string", + "format": "date-time" }, "explode": false }, { - "name": "api-version", + "name": "endTimeUtc", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "End of the metric time range.", "schema": { - "type": "string" + "type": "string", + "format": "date-time" }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/octet-stream": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfo": { - "get": { - "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfo", - "description": "Get download information for an artifact from a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } }, { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int64" + }, + "explode": false }, { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", "schema": { - "type": "string" - } + "type": "integer", + "format": "int64" + }, + "explode": false }, { - "name": "path", + "name": "limit", "in": "query", - "required": true, - "description": "The artifact path.", + "required": false, + "description": "Maximum number of metric points to return.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" }, "explode": false }, @@ -16222,7 +16347,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifactContentInfo" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -16243,10 +16368,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfoByPrefix": { + "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:samples": { "get": { - "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfoByPrefix", - "description": "List download information for artifacts under a path prefix from a specific training job attempt.", + "operationId": "TrainingJobMetrics_getMetricSamples", + "description": "Get sampled metric values from the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -16270,31 +16395,66 @@ } }, { - "name": "attemptId", + "name": "metricName", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The metric name.", "schema": { "type": "string" } }, { - "name": "pathPrefix", + "name": "startTimeUtc", "in": "query", "required": false, - "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", + "description": "Start of the metric time range.", "schema": { - "type": "string" + "type": "string", + "format": "date-time" }, "explode": false }, { - "name": "skipToken", + "name": "endTimeUtc", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "End of the metric time range.", "schema": { - "type": "string" + "type": "string", + "format": "date-time" + }, + "explode": false + }, + { + "name": "minStep", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "maxStep", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" }, "explode": false }, @@ -16315,7 +16475,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifactContentInfo" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -16336,10 +16496,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:metadata": { + "/training_jobs/{jobName}/attempts/latest/metrics:lastValues": { "get": { - "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactMetadata", - "description": "Get metadata for an artifact from a specific training job attempt.", + "operationId": "TrainingJobMetrics_getMetricLastValues", + "description": "Get the latest values for metrics emitted by the latest attempt of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -16362,25 +16522,6 @@ "type": "string" } }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -16398,7 +16539,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifact" + "$ref": "#/components/schemas/PagedJobMetricLastValue" } } } @@ -16419,10 +16560,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics": { + "/training_jobs/{jobName}/attempts/{attemptId}": { "get": { - "operationId": "TrainingJobAttemptMetrics_listAttemptMetrics", - "description": "List metrics emitted by a specific training job attempt.", + "operationId": "TrainingJobAttempts_getAttempt", + "description": "Get one attempt for a training job.", "parameters": [ { "name": "Foundry-Features", @@ -16454,27 +16595,6 @@ "type": "string" } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -16492,7 +16612,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetric" + "$ref": "#/components/schemas/JobAttempt" } } } @@ -16513,10 +16633,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts": { "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetric", - "description": "Get the full history for a metric from a specific training job attempt.", + "operationId": "TrainingJobAttemptArtifacts_listAttemptArtifacts", + "description": "List artifacts for a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16549,66 +16669,33 @@ } }, { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", + "name": "limit", "in": "query", "required": false, - "description": "Minimum metric step to include.", + "description": "Maximum number of items to return.", "schema": { "type": "integer", - "format": "int64" + "format": "int32" }, "explode": false }, { - "name": "maxStep", + "name": "skipToken", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "Continuation token returned by a previous list request.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "pathPrefix", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "Artifact path prefix to list.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -16629,7 +16716,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" + "$ref": "#/components/schemas/PagedJobArtifact" } } } @@ -16650,10 +16737,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:content": { "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetricAggregates", - "description": "Get aggregate metric values from a specific training job attempt.", + "operationId": "TrainingJobAttemptArtifacts_downloadAttemptArtifact", + "description": "Download artifact content from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16686,66 +16773,12 @@ } }, { - "name": "metricName", - "in": "path", + "name": "path", + "in": "query", "required": true, - "description": "The metric name.", + "description": "The artifact path.", "schema": { "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" }, "explode": false }, @@ -16764,9 +16797,10 @@ "200": { "description": "The request has succeeded.", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" + "type": "string", + "format": "binary" } } } @@ -16787,10 +16821,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfo": { "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSample", - "description": "Get one sampled value or window from a specific training job attempt.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfo", + "description": "Get download information for an artifact from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16823,66 +16857,12 @@ } }, { - "name": "metricName", - "in": "path", + "name": "path", + "in": "query", "required": true, - "description": "The metric name.", + "description": "The artifact path.", "schema": { "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" }, "explode": false }, @@ -16903,7 +16883,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "$ref": "#/components/schemas/JobArtifactContentInfo" } } } @@ -16924,10 +16904,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfoByPrefix": { "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSamples", - "description": "Get sampled metric values from a specific training job attempt.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfoByPrefix", + "description": "List download information for artifacts under a path prefix from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16960,214 +16940,24 @@ } }, { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", + "name": "pathPrefix", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", "schema": { "type": "string" }, "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobMetricSample" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics:lastValues": { - "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetricLastValues", - "description": "Get latest metric values for a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } }, { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", + "name": "skipToken", "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/outputs": { - "get": { - "operationId": "TrainingJobAttemptOutputs_listAttemptOutputs", - "description": "List outputs produced by a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", + "required": false, + "description": "Continuation token returned by a previous list request.", "schema": { "type": "string" - } + }, + "explode": false }, { "name": "api-version", @@ -17186,7 +16976,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" + "$ref": "#/components/schemas/PagedJobArtifactContentInfo" } } } @@ -17207,10 +16997,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}": { + "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:metadata": { "get": { - "operationId": "TrainingJobAttemptOutputs_getAttemptOutput", - "description": "Get one output produced by a specific training job attempt.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactMetadata", + "description": "Get metadata for an artifact from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -17243,13 +17033,14 @@ } }, { - "name": "outputName", - "in": "path", + "name": "path", + "in": "query", "required": true, - "description": "The output name.", + "description": "The artifact path.", "schema": { "type": "string" - } + }, + "explode": false }, { "name": "api-version", @@ -17268,7 +17059,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/JobArtifact" } } } @@ -17289,10 +17080,10 @@ ] } }, - "/training_jobs/{jobName}/metrics": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics": { "get": { - "operationId": "TrainingJobMetrics_listMetrics", - "description": "List metrics emitted by the current view of a training job.", + "operationId": "TrainingJobAttemptMetrics_listAttemptMetrics", + "description": "List metrics emitted by a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -17315,6 +17106,15 @@ "type": "string" } }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, { "name": "limit", "in": "query", @@ -17374,10 +17174,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}": { "get": { - "operationId": "TrainingJobMetrics_getMetric", - "description": "Get the full history for a training job metric.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetric", + "description": "Get the full history for a metric from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -17400,6 +17200,15 @@ "type": "string" } }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, { "name": "metricName", "in": "path", @@ -17502,10 +17311,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}:aggregates": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates": { "get": { - "operationId": "TrainingJobMetrics_getMetricAggregates", - "description": "Get aggregate values for a training job metric.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricAggregates", + "description": "Get aggregate metric values from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -17528,6 +17337,15 @@ "type": "string" } }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, { "name": "metricName", "in": "path", @@ -17630,10 +17448,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}:sample": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample": { "get": { - "operationId": "TrainingJobMetrics_getMetricSample", - "description": "Get one sampled value or window for a training job metric.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSample", + "description": "Get one sampled value or window from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -17656,6 +17474,15 @@ "type": "string" } }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, { "name": "metricName", "in": "path", @@ -17758,10 +17585,10 @@ ] } }, - "/training_jobs/{jobName}/metrics/{metricName}:samples": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples": { "get": { - "operationId": "TrainingJobMetrics_getMetricSamples", - "description": "Get sampled values for a training job metric.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSamples", + "description": "Get sampled metric values from a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -17784,6 +17611,15 @@ "type": "string" } }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, { "name": "metricName", "in": "path", @@ -17886,10 +17722,10 @@ ] } }, - "/training_jobs/{jobName}/metrics:lastValues": { + "/training_jobs/{jobName}/attempts/{attemptId}/metrics:lastValues": { "get": { - "operationId": "TrainingJobMetrics_getMetricLastValues", - "description": "Get the latest values for metrics emitted by the current view of a training job.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricLastValues", + "description": "Get latest metric values for a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -17912,6 +17748,15 @@ "type": "string" } }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, { "name": "api-version", "in": "query", @@ -17950,6 +17795,161 @@ ] } }, + "/training_jobs/{jobName}/attempts/{attemptId}/outputs": { + "get": { + "operationId": "TrainingJobAttemptOutputs_listAttemptOutputs", + "description": "List outputs produced by a specific training job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedJobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}": { + "get": { + "operationId": "TrainingJobAttemptOutputs_getAttemptOutput", + "description": "Get one output produced by a specific training job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "Jobs=V1Preview" + ] + } + }, + { + "name": "jobName", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attemptId", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "outputName", + "in": "path", + "required": true, + "description": "The output name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobOutputReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, "/training_jobs/{jobName}/outputs": { "get": { "operationId": "TrainingJobOutputs_listOutputs", diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp index e8012cb8af38..284935cc256c 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp @@ -183,9 +183,9 @@ interface TrainingJobAttempts { @tag("TrainingJobs") interface TrainingJobArtifacts { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." - @doc("List artifacts for the current view of a training job.") + @doc("List artifacts for the latest attempt of a training job.") @get - @route("/training_jobs/{jobName}/artifacts") + @route("/training_jobs/{jobName}/attempts/latest/artifacts") listArtifacts is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -199,9 +199,9 @@ interface TrainingJobArtifacts { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." - @doc("Get metadata for a training job artifact.") + @doc("Get metadata for an artifact from the latest attempt of a training job.") @get - @route("/training_jobs/{jobName}/artifacts:metadata") + @route("/training_jobs/{jobName}/attempts/latest/artifacts:metadata") getArtifactMetadata is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -217,9 +217,9 @@ interface TrainingJobArtifacts { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." - @doc("Get download information for a training job artifact.") + @doc("Get download information for an artifact from the latest attempt of a training job.") @get - @route("/training_jobs/{jobName}/artifacts:contentInfo") + @route("/training_jobs/{jobName}/attempts/latest/artifacts:contentInfo") getArtifactContentInfo is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -235,9 +235,9 @@ interface TrainingJobArtifacts { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." - @doc("List download information for training job artifacts under a path prefix.") + @doc("List download information for artifacts under a path prefix from the latest attempt of a training job.") @get - @route("/training_jobs/{jobName}/artifacts:contentInfoByPrefix") + @route("/training_jobs/{jobName}/attempts/latest/artifacts:contentInfoByPrefix") getArtifactContentInfoByPrefix is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -252,9 +252,9 @@ interface TrainingJobArtifacts { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." #suppress "@azure-tools/typespec-azure-core/byos" "Job artifact content is produced by the job and streamed back to the caller." - @doc("Download training job artifact content.") + @doc("Download artifact content from the latest attempt of a training job.") @get - @route("/training_jobs/{jobName}/artifacts:content") + @route("/training_jobs/{jobName}/attempts/latest/artifacts:content") downloadArtifact is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -383,9 +383,9 @@ interface TrainingJobAttemptArtifacts { @tag("TrainingJobs") interface TrainingJobMetrics { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("List metrics emitted by the current view of a training job.") + @doc("List metrics emitted by the latest attempt of a training job.") @get - @route("/training_jobs/{jobName}/metrics") + @route("/training_jobs/{jobName}/attempts/latest/metrics") listMetrics is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -399,9 +399,9 @@ interface TrainingJobMetrics { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("Get the latest values for metrics emitted by the current view of a training job.") + @doc("Get the latest values for metrics emitted by the latest attempt of a training job.") @get - @route("/training_jobs/{jobName}/metrics:lastValues") + @route("/training_jobs/{jobName}/attempts/latest/metrics:lastValues") getMetricLastValues is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -413,9 +413,9 @@ interface TrainingJobMetrics { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("Get the full history for a training job metric.") + @doc("Get the full history for a metric from the latest attempt of a training job.") @get - @route("/training_jobs/{jobName}/metrics/{metricName}") + @route("/training_jobs/{jobName}/attempts/latest/metrics/{metricName}") getMetric is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -433,9 +433,9 @@ interface TrainingJobMetrics { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("Get aggregate values for a training job metric.") + @doc("Get aggregate metric values from the latest attempt of a training job.") @get - @route("/training_jobs/{jobName}/metrics/{metricName}:aggregates") + @route("/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:aggregates") getMetricAggregates is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -453,9 +453,9 @@ interface TrainingJobMetrics { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("Get sampled values for a training job metric.") + @doc("Get sampled metric values from the latest attempt of a training job.") @get - @route("/training_jobs/{jobName}/metrics/{metricName}:samples") + @route("/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:samples") getMetricSamples is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { @@ -473,9 +473,9 @@ interface TrainingJobMetrics { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("Get one sampled value or window for a training job metric.") + @doc("Get one sampled value or window from the latest attempt of a training job.") @get - @route("/training_jobs/{jobName}/metrics/{metricName}:sample") + @route("/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:sample") getMetricSample is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, { From b173460a2ede365bcf5b114f03078d08d1bb0926 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Wed, 6 May 2026 04:38:51 -0700 Subject: [PATCH 20/37] fix(foundry): sync training job attempt routes Align training job attempt routes with the implementation contract. Use integer attempt IDs so latest remains an explicit reserved route segment. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../v1/microsoft-foundry-openapi3.json | 42 ++++++++++++------- .../microsoft-foundry-openapi3.json | 42 ++++++++++++------- .../data-plane/Foundry/src/jobs/routes.tsp | 28 ++++++------- 3 files changed, 70 insertions(+), 42 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 4e1f4efc6911..884f1f9794ce 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -13874,7 +13874,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -13947,7 +13948,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -14051,7 +14053,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -14135,7 +14138,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -14218,7 +14222,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -14311,7 +14316,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -14394,7 +14400,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -14488,7 +14495,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -14625,7 +14633,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -14762,7 +14771,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -14899,7 +14909,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -15036,7 +15047,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -15109,7 +15121,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -15182,7 +15195,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index daa91eb7fab2..fa0f04c47d81 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -16592,7 +16592,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -16665,7 +16666,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -16769,7 +16771,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -16853,7 +16856,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -16936,7 +16940,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -17029,7 +17034,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -17112,7 +17118,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -17206,7 +17213,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -17343,7 +17351,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -17480,7 +17489,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -17617,7 +17627,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -17754,7 +17765,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -17827,7 +17839,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { @@ -17900,7 +17913,8 @@ "required": true, "description": "The attempt identifier.", "schema": { - "type": "string" + "type": "integer", + "format": "int32" } }, { diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp index 284935cc256c..7a1acaccdafa 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp @@ -174,7 +174,7 @@ interface TrainingJobAttempts { @doc("The attempt identifier.") @path - attemptId: string; + attemptId: int32; }, JobAttempt >; @@ -285,7 +285,7 @@ interface TrainingJobAttemptArtifacts { @doc("The attempt identifier.") @path - attemptId: string; + attemptId: int32; ...JobArtifactListQueryParameters; }, @@ -305,7 +305,7 @@ interface TrainingJobAttemptArtifacts { @doc("The attempt identifier.") @path - attemptId: string; + attemptId: int32; @doc("The artifact path.") @query @@ -327,7 +327,7 @@ interface TrainingJobAttemptArtifacts { @doc("The attempt identifier.") @path - attemptId: string; + attemptId: int32; @doc("The artifact path.") @query @@ -349,7 +349,7 @@ interface TrainingJobAttemptArtifacts { @doc("The attempt identifier.") @path - attemptId: string; + attemptId: int32; ...JobArtifactContentInfoByPrefixQueryParameters; }, @@ -370,7 +370,7 @@ interface TrainingJobAttemptArtifacts { @doc("The attempt identifier.") @path - attemptId: string; + attemptId: int32; @doc("The artifact path.") @query @@ -508,7 +508,7 @@ interface TrainingJobAttemptMetrics { @doc("The attempt identifier.") @path - attemptId: string; + attemptId: int32; ...JobMetricListQueryParameters; }, @@ -528,7 +528,7 @@ interface TrainingJobAttemptMetrics { @doc("The attempt identifier.") @path - attemptId: string; + attemptId: int32; }, Azure.Core.Page >; @@ -546,7 +546,7 @@ interface TrainingJobAttemptMetrics { @doc("The attempt identifier.") @path - attemptId: string; + attemptId: int32; @doc("The metric name.") @path @@ -570,7 +570,7 @@ interface TrainingJobAttemptMetrics { @doc("The attempt identifier.") @path - attemptId: string; + attemptId: int32; @doc("The metric name.") @path @@ -594,7 +594,7 @@ interface TrainingJobAttemptMetrics { @doc("The attempt identifier.") @path - attemptId: string; + attemptId: int32; @doc("The metric name.") @path @@ -618,7 +618,7 @@ interface TrainingJobAttemptMetrics { @doc("The attempt identifier.") @path - attemptId: string; + attemptId: int32; @doc("The metric name.") @path @@ -681,7 +681,7 @@ interface TrainingJobAttemptOutputs { @doc("The attempt identifier.") @path - attemptId: string; + attemptId: int32; }, Azure.Core.Page @@ -700,7 +700,7 @@ interface TrainingJobAttemptOutputs { @doc("The attempt identifier.") @path - attemptId: string; + attemptId: int32; @doc("The output name.") @path From 27596a3b394e799a1d7cd460267e22f3a498b622 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Wed, 6 May 2026 05:50:09 -0700 Subject: [PATCH 21/37] fix(foundry): repair training job SDK projection Move beta relocation customizations to the renamed training-job attempt operation groups and add C# client projection names for clusters, models, and training jobs. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../data-plane/Foundry/client.csharp.tsp | 17 +++++++++++ .../Foundry/relocate-beta-operations.tsp | 30 ++++++++++--------- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/client.csharp.tsp b/specification/ai-foundry/data-plane/Foundry/client.csharp.tsp index 0ea42bc1d19f..023bd9f39f28 100644 --- a/specification/ai-foundry/data-plane/Foundry/client.csharp.tsp +++ b/specification/ai-foundry/data-plane/Foundry/client.csharp.tsp @@ -1,8 +1,11 @@ import "./src/common/service.tsp"; +import "./src/clusters/routes.tsp"; import "./src/connections/routes.tsp"; import "./src/datasets/routes.tsp"; import "./src/indexes/routes.tsp"; import "./src/deployments/routes.tsp"; +import "./src/jobs/routes.tsp"; +import "./src/models/routes.tsp"; import "./src/red-teams/routes.tsp"; import "./src/evaluation-rules/routes.tsp"; import "./src/evaluation-taxonomies/routes.tsp"; @@ -80,9 +83,12 @@ namespace Azure.AI.Projects; // Less generic names for C# subclients @@clientName(Connections, "AIProjectConnectionsOperations", "csharp"); +@@clientName(Clusters, "AIProjectClustersOperations", "csharp"); @@clientName(Datasets, "AIProjectDatasetsOperations", "csharp"); @@clientName(Deployments, "AIProjectDeploymentsOperations", "csharp"); @@clientName(Indexes, "AIProjectIndexesOperations", "csharp"); +@@clientName(Models, "AIProjectModelsOperations", "csharp"); +@@clientName(TrainingJobs, "AIProjectTrainingJobsOperations", "csharp"); // Need to explicitly make all get and list methods include the object name for C# @@clientName(Connections.get, "getConnection", "csharp"); @@ -99,6 +105,17 @@ namespace Azure.AI.Projects; @@clientName(Indexes.getVersion, "getIndex", "csharp"); @@clientName(Indexes.listLatest, "listIndexes", "csharp"); @@clientName(Indexes.listVersions, "listIndexVersions", "csharp"); +@@clientName(TrainingJobs.create, "createTrainingJob", "csharp"); +@@clientName(TrainingJobs.get, "getTrainingJob", "csharp"); +@@clientName(TrainingJobs.list, "listTrainingJobs", "csharp"); +@@clientName(TrainingJobs.beginDelete, + "beginDeleteTrainingJob", + "csharp" +); +@@clientName(TrainingJobs.beginCancel, + "beginCancelTrainingJob", + "csharp" +); // Make these two internal, since all SDKs hand-write a single public method with boolean "includeCredentials" // input parameter that calls either on these two. diff --git a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp index 22e80f6a7193..4a8e6f3c4cd0 100644 --- a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp +++ b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp @@ -90,10 +90,12 @@ namespace Model { Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobRuns.listRuns, +@@clientLocation(Azure.AI.Projects.TrainingJobAttempts.listAttempts, + Model.TrainingJobs +); +@@clientLocation(Azure.AI.Projects.TrainingJobAttempts.getAttempt, Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobRuns.getRun, Model.TrainingJobs); @@clientLocation(Azure.AI.Projects.TrainingJobArtifacts.listArtifacts, Model.TrainingJobs @@ -108,16 +110,16 @@ namespace Model { Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobRunArtifacts.listRunArtifacts, +@@clientLocation(Azure.AI.Projects.TrainingJobAttemptArtifacts.listAttemptArtifacts, Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobRunArtifacts.getRunArtifactMetadata, +@@clientLocation(Azure.AI.Projects.TrainingJobAttemptArtifacts.getAttemptArtifactMetadata, Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobRunArtifacts.getRunArtifactContentInfo, +@@clientLocation(Azure.AI.Projects.TrainingJobAttemptArtifacts.getAttemptArtifactContentInfo, Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobRunArtifacts.downloadRunArtifact, +@@clientLocation(Azure.AI.Projects.TrainingJobAttemptArtifacts.downloadAttemptArtifact, Model.TrainingJobs ); @@ -140,22 +142,22 @@ namespace Model { Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobRunMetrics.listRunMetrics, +@@clientLocation(Azure.AI.Projects.TrainingJobAttemptMetrics.listAttemptMetrics, Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobRunMetrics.getRunMetricLastValues, +@@clientLocation(Azure.AI.Projects.TrainingJobAttemptMetrics.getAttemptMetricLastValues, Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobRunMetrics.getRunMetric, +@@clientLocation(Azure.AI.Projects.TrainingJobAttemptMetrics.getAttemptMetric, Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobRunMetrics.getRunMetricAggregates, +@@clientLocation(Azure.AI.Projects.TrainingJobAttemptMetrics.getAttemptMetricAggregates, Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobRunMetrics.getRunMetricSamples, +@@clientLocation(Azure.AI.Projects.TrainingJobAttemptMetrics.getAttemptMetricSamples, Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobRunMetrics.getRunMetricSample, +@@clientLocation(Azure.AI.Projects.TrainingJobAttemptMetrics.getAttemptMetricSample, Model.TrainingJobs ); @@ -166,9 +168,9 @@ namespace Model { Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobRunOutputs.listRunOutputs, +@@clientLocation(Azure.AI.Projects.TrainingJobAttemptOutputs.listAttemptOutputs, Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobRunOutputs.getRunOutput, +@@clientLocation(Azure.AI.Projects.TrainingJobAttemptOutputs.getAttemptOutput, Model.TrainingJobs ); From de1540215640bb9a84717c75d0436dc48c0d79af Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Wed, 6 May 2026 16:08:50 -0700 Subject: [PATCH 22/37] feat(foundry): use typed training job create Collapse managed model training examples and OpenAPI to the typed create-training-job shape. Remove the cluster Ray action and document Ray through generic command training jobs. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../data-plane/Foundry/client.csharp.tsp | 1 - .../ai-foundry/data-plane/Foundry/client.tsp | 62 +- ...usters_StartRaySession_MaximumSet_Gen.json | 50 - ...lusters_StopRaySession_MaximumSet_Gen.json | 19 - ...CreateTrainingJobGrpo_MaximumSet_Gen.json} | 9 +- ..._CreateTrainingJobKto_MaximumSet_Gen.json} | 7 +- ...ningJobPolicyGradient_MaximumSet_Gen.json} | 7 +- ..._CreateTrainingJobPpo_MaximumSet_Gen.json} | 7 +- ...TrainingJobPreference_MaximumSet_Gen.json} | 7 +- ...rainingJobRewardModel_MaximumSet_Gen.json} | 7 +- ..._CreateTrainingJobSft_MaximumSet_Gen.json} | 9 +- ...bs_CreateRayCommandJob_MaximumSet_Gen.json | 64 + .../ai-foundry/data-plane/Foundry/main.tsp | 1 - .../v1/microsoft-foundry-openapi3.json | 1634 +++++------------ .../microsoft-foundry-openapi3.json | 1634 +++++------------ .../Foundry/src/clusters/models.tsp | 27 - .../Foundry/src/clusters/routes.tsp | 51 - .../data-plane/Foundry/src/models/models.tsp | 151 +- .../data-plane/Foundry/src/models/routes.tsp | 56 +- 19 files changed, 986 insertions(+), 2817 deletions(-) delete mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_StartRaySession_MaximumSet_Gen.json delete mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_StopRaySession_MaximumSet_Gen.json rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Models_CreateGrpoTrainingJob_MaximumSet_Gen.json => Models_CreateTrainingJobGrpo_MaximumSet_Gen.json} (94%) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Models_CreateKtoTrainingJob_MaximumSet_Gen.json => Models_CreateTrainingJobKto_MaximumSet_Gen.json} (94%) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Models_CreatePolicyGradientTrainingJob_MaximumSet_Gen.json => Models_CreateTrainingJobPolicyGradient_MaximumSet_Gen.json} (94%) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Models_CreatePpoTrainingJob_MaximumSet_Gen.json => Models_CreateTrainingJobPpo_MaximumSet_Gen.json} (95%) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Models_CreatePreferenceTrainingJob_MaximumSet_Gen.json => Models_CreateTrainingJobPreference_MaximumSet_Gen.json} (93%) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Models_CreateRewardModelTrainingJob_MaximumSet_Gen.json => Models_CreateTrainingJobRewardModel_MaximumSet_Gen.json} (93%) rename specification/ai-foundry/data-plane/Foundry/examples/v1/{Models_CreateSftTrainingJob_MaximumSet_Gen.json => Models_CreateTrainingJobSft_MaximumSet_Gen.json} (93%) create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_CreateRayCommandJob_MaximumSet_Gen.json delete mode 100644 specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp delete mode 100644 specification/ai-foundry/data-plane/Foundry/src/clusters/routes.tsp diff --git a/specification/ai-foundry/data-plane/Foundry/client.csharp.tsp b/specification/ai-foundry/data-plane/Foundry/client.csharp.tsp index 023bd9f39f28..542c81488e0b 100644 --- a/specification/ai-foundry/data-plane/Foundry/client.csharp.tsp +++ b/specification/ai-foundry/data-plane/Foundry/client.csharp.tsp @@ -1,5 +1,4 @@ import "./src/common/service.tsp"; -import "./src/clusters/routes.tsp"; import "./src/connections/routes.tsp"; import "./src/datasets/routes.tsp"; import "./src/indexes/routes.tsp"; diff --git a/specification/ai-foundry/data-plane/Foundry/client.tsp b/specification/ai-foundry/data-plane/Foundry/client.tsp index 4f337a4b3e79..c5fead3ab4ef 100644 --- a/specification/ai-foundry/data-plane/Foundry/client.tsp +++ b/specification/ai-foundry/data-plane/Foundry/client.tsp @@ -9,7 +9,6 @@ import "./src/evaluation-rules/routes.tsp"; // Stable operation (GA routes) without preview features import "./src/connections/routes.tsp"; -import "./src/clusters/routes.tsp"; import "./src/datasets/routes.tsp"; import "./src/deployments/routes.tsp"; import "./src/indexes/routes.tsp"; @@ -178,65 +177,8 @@ using Azure.AI.Projects; // Models sub-client // -------------------------------------------------------------------------------- -@@clientName(Models.createSftTrainingJob, "create_sft_training_job", "python"); -@@clientName(Models.createPreferenceTrainingJob, - "create_preference_training_job", - "python" -); -@@clientName(Models.createKtoTrainingJob, "create_kto_training_job", "python"); -@@clientName(Models.createRewardModelTrainingJob, - "create_reward_model_training_job", - "python" -); -@@clientName(Models.createGrpoTrainingJob, - "create_grpo_training_job", - "python" -); -@@clientName(Models.createPolicyGradientTrainingJob, - "create_policy_gradient_training_job", - "python" -); -@@clientName(Models.createPpoTrainingJob, "create_ppo_training_job", "python"); -@@clientName(Models.createSftTrainingJob, "createSftTrainingJob", "javascript"); -@@clientName(Models.createPreferenceTrainingJob, - "createPreferenceTrainingJob", - "javascript" -); -@@clientName(Models.createKtoTrainingJob, "createKtoTrainingJob", "javascript"); -@@clientName(Models.createRewardModelTrainingJob, - "createRewardModelTrainingJob", - "javascript" -); -@@clientName(Models.createGrpoTrainingJob, - "createGrpoTrainingJob", - "javascript" -); -@@clientName(Models.createPolicyGradientTrainingJob, - "createPolicyGradientTrainingJob", - "javascript" -); -@@clientName(Models.createPpoTrainingJob, "createPpoTrainingJob", "javascript"); - -// -------------------------------------------------------------------------------- -// Clusters sub-client -// -------------------------------------------------------------------------------- - -@@clientName(Clusters.startRaySession, - "start_ray_session", - "python" -); -@@clientName(Clusters.stopRaySession, - "stop_ray_session", - "python" -); -@@clientName(Clusters.startRaySession, - "startRaySession", - "javascript" -); -@@clientName(Clusters.stopRaySession, - "stopRaySession", - "javascript" -); +@@clientName(Models.createTrainingJob, "create_training_job", "python"); +@@clientName(Models.createTrainingJob, "createTrainingJob", "javascript"); // -------------------------------------------------------------------------------- // Datasets sub-client diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_StartRaySession_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_StartRaySession_MaximumSet_Gen.json deleted file mode 100644 index fc58121e56a9..000000000000 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_StartRaySession_MaximumSet_Gen.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "title": "Clusters_StartRaySession_MaximumSet", - "operationId": "Clusters_startRaySession", - "parameters": { - "api-version": "v1", - "Foundry-Features": "Jobs=V1Preview", - "clusterName": "my-cluster", - "Operation-Id": "start-ray-session-01", - "request": { - "name": "ray-session-01", - "displayName": "ray-4node", - "description": "Interactive Ray session (4 nodes)", - "tags": { - "scenario": "interactive-ray" - }, - "instanceCount": 4, - "enableRemoteAccessClientServer": true, - "clientServerPort": 10001 - } - }, - "responses": { - "201": { - "body": { - "name": "ray-session-01", - "properties": { - "jobType": "Command", - "displayName": "ray-4node", - "description": "Interactive Ray session (4 nodes)", - "tags": { - "scenario": "interactive-ray" - }, - "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", - "command": "python -c \"import time; print('Ray cluster ready'); time.sleep(86400)\"", - "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04", - "distribution": { - "distributionType": "Ray", - "port": 6379, - "includeDashboard": true, - "dashboardPort": 8265, - "enableRemoteAccessClientServer": true, - "clientServerPort": 10001 - }, - "resources": { - "instanceCount": 4 - } - } - } - } - } -} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_StopRaySession_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_StopRaySession_MaximumSet_Gen.json deleted file mode 100644 index 6aa8c19e8dff..000000000000 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Clusters_StopRaySession_MaximumSet_Gen.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "title": "Clusters_StopRaySession_MaximumSet", - "operationId": "Clusters_stopRaySession", - "parameters": { - "api-version": "v1", - "Foundry-Features": "Jobs=V1Preview", - "clusterName": "my-cluster", - "sessionName": "ray-session-01" - }, - "responses": { - "202": { - "headers": { - "Location": "https://contoso.services.ai.azure.com/api/projects/my-project/training_jobs/operations/jc:workspace-id:ray-session-01/result?api-version=v1", - "Operation-Location": "https://contoso.services.ai.azure.com/api/projects/my-project/training_jobs/operations/jc:workspace-id:ray-session-01/status?api-version=v1", - "Retry-After": 5 - } - } - } -} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateGrpoTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobGrpo_MaximumSet_Gen.json similarity index 94% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateGrpoTrainingJob_MaximumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobGrpo_MaximumSet_Gen.json index 4f808ee105a4..b01c6f998582 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateGrpoTrainingJob_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobGrpo_MaximumSet_Gen.json @@ -1,11 +1,12 @@ { - "title": "Models_CreateGrpoTrainingJob_MaximumSet", - "operationId": "Models_createGrpoTrainingJob", + "title": "Models_CreateTrainingJobGrpo_MaximumSet", + "operationId": "Models_createTrainingJob", "parameters": { "api-version": "v1", "Operation-Id": "create-my-grpo-training-job-01", "Foundry-Features": "Jobs=V1Preview", - "request": { + "job": { + "type": "grpo", "name": "qwen-reasoning-grpo", "version": "1", "description": "GRPO model trained for reasoning tasks", @@ -80,4 +81,4 @@ } } } -} +} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateKtoTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobKto_MaximumSet_Gen.json similarity index 94% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateKtoTrainingJob_MaximumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobKto_MaximumSet_Gen.json index 03027b63196a..51815ce25d45 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateKtoTrainingJob_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobKto_MaximumSet_Gen.json @@ -1,11 +1,12 @@ { - "title": "Models_CreateKtoTrainingJob_MaximumSet", - "operationId": "Models_createKtoTrainingJob", + "title": "Models_CreateTrainingJobKto_MaximumSet", + "operationId": "Models_createTrainingJob", "parameters": { "api-version": "v1", "Operation-Id": "create-my-kto-training-job-01", "Foundry-Features": "Jobs=V1Preview", - "request": { + "job": { + "type": "kto", "name": "qwen-feedback-kto", "version": "1", "description": "KTO model trained from binary desirability feedback", diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePolicyGradientTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPolicyGradient_MaximumSet_Gen.json similarity index 94% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePolicyGradientTrainingJob_MaximumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPolicyGradient_MaximumSet_Gen.json index 842b56d4a1f7..75b71f24dbb6 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePolicyGradientTrainingJob_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPolicyGradient_MaximumSet_Gen.json @@ -1,11 +1,12 @@ { - "title": "Models_CreatePolicyGradientTrainingJob_MaximumSet", - "operationId": "Models_createPolicyGradientTrainingJob", + "title": "Models_CreateTrainingJobPolicyGradient_MaximumSet", + "operationId": "Models_createTrainingJob", "parameters": { "api-version": "v1", "Operation-Id": "create-my-rloo-training-job-01", "Foundry-Features": "Jobs=V1Preview", - "request": { + "job": { + "type": "policy_gradient", "algorithm": "rloo", "name": "qwen-rloo-math", "version": "1", diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePpoTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPpo_MaximumSet_Gen.json similarity index 95% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePpoTrainingJob_MaximumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPpo_MaximumSet_Gen.json index da50edfc81bf..d27fe7788de2 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePpoTrainingJob_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPpo_MaximumSet_Gen.json @@ -1,11 +1,12 @@ { - "title": "Models_CreatePpoTrainingJob_MaximumSet", - "operationId": "Models_createPpoTrainingJob", + "title": "Models_CreateTrainingJobPpo_MaximumSet", + "operationId": "Models_createTrainingJob", "parameters": { "api-version": "v1", "Operation-Id": "create-my-ppo-training-job-01", "Foundry-Features": "Jobs=V1Preview", - "request": { + "job": { + "type": "ppo", "name": "qwen-ppo-helpfulness", "version": "1", "description": "PPO policy model trained with a reward model judge", diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePreferenceTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPreference_MaximumSet_Gen.json similarity index 93% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePreferenceTrainingJob_MaximumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPreference_MaximumSet_Gen.json index 05b85e1861fe..0fabc6b6620f 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreatePreferenceTrainingJob_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPreference_MaximumSet_Gen.json @@ -1,11 +1,12 @@ { - "title": "Models_CreatePreferenceTrainingJob_MaximumSet", - "operationId": "Models_createPreferenceTrainingJob", + "title": "Models_CreateTrainingJobPreference_MaximumSet", + "operationId": "Models_createTrainingJob", "parameters": { "api-version": "v1", "Operation-Id": "create-my-dpo-training-job-01", "Foundry-Features": "Jobs=V1Preview", - "request": { + "job": { + "type": "preference", "algorithm": "dpo", "name": "qwen-helpful-dpo", "version": "1", diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateRewardModelTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobRewardModel_MaximumSet_Gen.json similarity index 93% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateRewardModelTrainingJob_MaximumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobRewardModel_MaximumSet_Gen.json index 9490077f4f69..0b4617ddd561 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateRewardModelTrainingJob_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobRewardModel_MaximumSet_Gen.json @@ -1,11 +1,12 @@ { - "title": "Models_CreateRewardModelTrainingJob_MaximumSet", - "operationId": "Models_createRewardModelTrainingJob", + "title": "Models_CreateTrainingJobRewardModel_MaximumSet", + "operationId": "Models_createTrainingJob", "parameters": { "api-version": "v1", "Operation-Id": "create-my-reward-model-training-job-01", "Foundry-Features": "Jobs=V1Preview", - "request": { + "job": { + "type": "reward_model", "name": "qwen-helpfulness-reward-model", "version": "1", "description": "Reward model trained from pairwise helpfulness preferences", diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateSftTrainingJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobSft_MaximumSet_Gen.json similarity index 93% rename from specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateSftTrainingJob_MaximumSet_Gen.json rename to specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobSft_MaximumSet_Gen.json index efd61b0b0024..eeabcda79631 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateSftTrainingJob_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobSft_MaximumSet_Gen.json @@ -1,11 +1,12 @@ { - "title": "Models_CreateSftTrainingJob_MaximumSet", - "operationId": "Models_createSftTrainingJob", + "title": "Models_CreateTrainingJobSft_MaximumSet", + "operationId": "Models_createTrainingJob", "parameters": { "api-version": "v1", "Operation-Id": "create-my-sft-training-job-01", "Foundry-Features": "Jobs=V1Preview", - "request": { + "job": { + "type": "sft", "name": "qwen-medical-sft", "version": "1", "description": "SFT model trained for medical instruction following", @@ -63,4 +64,4 @@ } } } -} +} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_CreateRayCommandJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_CreateRayCommandJob_MaximumSet_Gen.json new file mode 100644 index 000000000000..8549b604f85f --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_CreateRayCommandJob_MaximumSet_Gen.json @@ -0,0 +1,64 @@ +{ + "title": "TrainingJobs_CreateRayCommandJob_MaximumSet", + "operationId": "TrainingJobs_Create", + "parameters": { + "api-version": "v1", + "Operation-Id": "create-ray-command-job-01", + "Foundry-Features": "Jobs=V1Preview", + "job": { + "name": "ray-command-job-01", + "properties": { + "jobType": "Command", + "displayName": "interactive-ray-4node", + "description": "Interactive Ray command job (4 nodes)", + "tags": { + "scenario": "interactive-ray" + }, + "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "command": "python -c \"import time; print('Ray cluster ready'); time.sleep(86400)\"", + "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04", + "distribution": { + "distributionType": "Ray", + "port": 6379, + "includeDashboard": true, + "dashboardPort": 8265, + "enableRemoteAccessClientServer": true, + "clientServerPort": 10001 + }, + "resources": { + "instanceCount": 4 + } + } + } + }, + "responses": { + "201": { + "body": { + "name": "ray-command-job-01", + "type": "Microsoft.MachineLearningServices/workspaces/training_jobs", + "properties": { + "jobType": "Command", + "displayName": "interactive-ray-4node", + "description": "Interactive Ray command job (4 nodes)", + "tags": { + "scenario": "interactive-ray" + }, + "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "command": "python -c \"import time; print('Ray cluster ready'); time.sleep(86400)\"", + "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04", + "distribution": { + "distributionType": "Ray", + "port": 6379, + "includeDashboard": true, + "dashboardPort": 8265, + "enableRemoteAccessClientServer": true, + "clientServerPort": 10001 + }, + "resources": { + "instanceCount": 4 + } + } + } + } + } +} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/main.tsp b/specification/ai-foundry/data-plane/Foundry/main.tsp index 35b6354eb0fc..9406a94257ed 100644 --- a/specification/ai-foundry/data-plane/Foundry/main.tsp +++ b/specification/ai-foundry/data-plane/Foundry/main.tsp @@ -4,7 +4,6 @@ import "./src/agents-session-files/routes.tsp"; import "./src/agents-invocations/routes.tsp"; import "./src/common/custom-types.tsp"; import "./src/common/service.tsp"; -import "./src/clusters/routes.tsp"; import "./src/connections/routes.tsp"; import "./src/datasets/routes.tsp"; import "./src/deployments/routes.tsp"; diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 884f1f9794ce..e41020fb661c 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -26,9 +26,6 @@ { "name": "Agents" }, - { - "name": "Clusters" - }, { "name": "Connections" }, @@ -962,210 +959,165 @@ } } }, - "/clusters/{clusterName}/ray_sessions/{sessionName}:stop": { - "post": { - "operationId": "Clusters_stopRaySession", - "description": "Stop an interactive Ray session on a compute cluster.", + "/connections": { + "get": { + "operationId": "Connections_list", + "description": "List all connections in the project, without populating connection credentials", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "clusterName", - "in": "path", - "required": true, - "description": "The compute cluster name.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "sessionName", - "in": "path", - "required": true, - "description": "The Ray session name.", + "name": "connectionType", + "in": "query", + "required": false, + "description": "List connections of this specific type", "schema": { - "type": "string" - } + "$ref": "#/components/schemas/ConnectionType" + }, + "explode": false }, { - "name": "api-version", + "name": "defaultConnection", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "List connections that are default connections", "schema": { - "type": "string" + "type": "boolean" }, "explode": false + }, + { + "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" } ], "responses": { "200": { - "description": "The request has succeeded." - }, - "202": { - "description": "Response returned when a job cancel operation is accepted asynchronously.", + "description": "The request has succeeded.", "headers": { - "Location": { - "required": true, - "description": "URL to poll for the final result of the cancel operation.", - "schema": { - "type": "string" - } - }, - "Operation-Location": { + "x-ms-client-request-id": { "required": false, - "description": "URL to poll for the status of the cancel operation.", + "description": "An opaque, globally-unique, client-generated string identifier for the request.", "schema": { - "type": "string" + "$ref": "#/components/schemas/Azure.Core.uuid" } - }, - "Retry-After": { - "required": false, - "description": "Suggested delay in seconds before polling.", + } + }, + "content": { + "application/json": { "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/PagedConnection" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Clusters" + "Connections" ] } }, - "/clusters/{clusterName}:start_ray_session": { - "post": { - "operationId": "Clusters_startRaySession", - "description": "Start an interactive Ray session on a compute cluster.", + "/connections/{name}": { + "get": { + "operationId": "Connections_get", + "description": "Get a connection by name, without populating connection credentials", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "clusterName", + "name": "name", "in": "path", "required": true, - "description": "The compute cluster name.", - "schema": { - "type": "string" - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry Ray session startup.", + "description": "The friendly name of the connection, provided by the user.", "schema": { "type": "string" } }, { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false + "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" } ], "responses": { - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", + "200": { + "description": "The request has succeeded.", + "headers": { + "x-ms-client-request-id": { + "required": false, + "description": "An opaque, globally-unique, client-generated string identifier for the request.", + "schema": { + "$ref": "#/components/schemas/Azure.Core.uuid" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/Connection" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Clusters" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RaySessionStart" - } - } - }, - "description": "Ray session start request." - } + "Connections" + ] } }, - "/connections": { - "get": { - "operationId": "Connections_list", - "description": "List all connections in the project, without populating connection credentials", + "/connections/{name}/getConnectionWithCredentials": { + "post": { + "operationId": "Connections_getWithCredentials", + "description": "Get a connection by name, with its connection credentials", "parameters": [ { "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "connectionType", - "in": "query", - "required": false, - "description": "List connections of this specific type", - "schema": { - "$ref": "#/components/schemas/ConnectionType" - }, - "explode": false - }, - { - "name": "defaultConnection", - "in": "query", - "required": false, - "description": "List connections that are default connections", + "name": "name", + "in": "path", + "required": true, + "description": "The friendly name of the connection, provided by the user.", "schema": { - "type": "boolean" - }, - "explode": false + "type": "string" + } }, { "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" @@ -1186,7 +1138,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedConnection" + "$ref": "#/components/schemas/Connection" } } } @@ -1216,10 +1168,55 @@ ] } }, - "/connections/{name}": { + "/datasets": { "get": { - "operationId": "Connections_get", - "description": "Get a connection by name, without populating connection credentials", + "operationId": "Datasets_listLatest", + "description": "List the latest version of each DatasetVersion", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedDatasetVersion" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Datasets" + ] + } + }, + "/datasets/{name}/versions": { + "get": { + "operationId": "Datasets_listVersions", + "description": "List all versions of the given DatasetVersion", "parameters": [ { "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" @@ -1228,196 +1225,19 @@ "name": "name", "in": "path", "required": true, - "description": "The friendly name of the connection, provided by the user.", + "description": "The name of the resource", "schema": { "type": "string" } - }, - { - "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" } ], "responses": { "200": { "description": "The request has succeeded.", - "headers": { - "x-ms-client-request-id": { - "required": false, - "description": "An opaque, globally-unique, client-generated string identifier for the request.", - "schema": { - "$ref": "#/components/schemas/Azure.Core.uuid" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Connection" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Connections" - ] - } - }, - "/connections/{name}/getConnectionWithCredentials": { - "post": { - "operationId": "Connections_getWithCredentials", - "description": "Get a connection by name, with its connection credentials", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", - "in": "path", - "required": true, - "description": "The friendly name of the connection, provided by the user.", - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "headers": { - "x-ms-client-request-id": { - "required": false, - "description": "An opaque, globally-unique, client-generated string identifier for the request.", - "schema": { - "$ref": "#/components/schemas/Azure.Core.uuid" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Connection" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Connections" - ] - } - }, - "/datasets": { - "get": { - "operationId": "Datasets_listLatest", - "description": "List the latest version of each DatasetVersion", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedDatasetVersion" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Datasets" - ] - } - }, - "/datasets/{name}/versions": { - "get": { - "operationId": "Datasets_listVersions", - "description": "List all versions of the given DatasetVersion", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the resource", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedDatasetVersion" + "$ref": "#/components/schemas/PagedDatasetVersion" } } } @@ -7331,350 +7151,10 @@ ] } }, - "/models:create_grpo_training_job": { - "post": { - "operationId": "Models_createGrpoTrainingJob", - "description": "Create a model by running managed GRPO training.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry managed model training.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelTrainingOperation" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GrpoModelTrainingJobCreate" - } - } - }, - "description": "The managed GRPO model training request." - } - } - }, - "/models:create_kto_training_job": { - "post": { - "operationId": "Models_createKtoTrainingJob", - "description": "Create a model by running managed KTO training.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry managed model training.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelTrainingOperation" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/KtoModelTrainingJobCreate" - } - } - }, - "description": "The managed KTO model training request." - } - } - }, - "/models:create_policy_gradient_training_job": { - "post": { - "operationId": "Models_createPolicyGradientTrainingJob", - "description": "Create a model by running managed online policy-gradient training.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry managed model training.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelTrainingOperation" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PolicyGradientModelTrainingJobCreate" - } - } - }, - "description": "The managed online policy-gradient model training request." - } - } - }, - "/models:create_ppo_training_job": { - "post": { - "operationId": "Models_createPpoTrainingJob", - "description": "Create a model by running managed PPO training.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry managed model training.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelTrainingOperation" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PpoModelTrainingJobCreate" - } - } - }, - "description": "The managed PPO model training request." - } - } - }, - "/models:create_preference_training_job": { + "/models:create_training_job": { "post": { - "operationId": "Models_createPreferenceTrainingJob", - "description": "Create a model by running managed pairwise preference training.", + "operationId": "Models_createTrainingJob", + "description": "Create a model by running managed model training.", "parameters": [ { "name": "Foundry-Features", @@ -7748,181 +7228,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PreferenceModelTrainingJobCreate" + "$ref": "#/components/schemas/ModelTrainingJobCreate" } } }, - "description": "The managed pairwise preference model training request." - } - } - }, - "/models:create_reward_model_training_job": { - "post": { - "operationId": "Models_createRewardModelTrainingJob", - "description": "Create a reward model by running managed reward-model training.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry managed model training.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelTrainingOperation" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RewardModelTrainingJobCreate" - } - } - }, - "description": "The managed reward-model training request." - } - } - }, - "/models:create_sft_training_job": { - "post": { - "operationId": "Models_createSftTrainingJob", - "description": "Create a model by running managed supervised fine-tuning.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry managed model training.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelTrainingOperation" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SftModelTrainingJobCreate" - } - } - }, - "description": "The managed SFT model training request." + "description": "The managed model training job to create." } } }, @@ -21546,65 +20856,6 @@ }, "description": "Details of a function tool call." }, - "GrpoModelTrainingJobCreate": { - "type": "object", - "required": [ - "model", - "dataset", - "runtime", - "compute" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional name of the model to create. If omitted, the service generates one." - }, - "version": { - "type": "string", - "description": "Optional version of the model to create. If omitted, the service generates one." - }, - "description": { - "type": "string", - "description": "Optional description for the model to create." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags for the model to create." - }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, - "dataset": { - "allOf": [ - { - "$ref": "#/components/schemas/GrpoTrainingDatasetConfiguration" - } - ], - "description": "Training and optional evaluation datasets." - }, - "runtime": { - "allOf": [ - { - "$ref": "#/components/schemas/GrpoTrainingRuntimeConfiguration" - } - ], - "description": "Runtime options for managed GRPO." - }, - "compute": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" - } - ], - "description": "Compute placement for the managed training job." - } - }, - "description": "Request body for creating a managed GRPO training job from a base model." - }, "GrpoTrainingColumnMapping": { "type": "object", "required": [ @@ -21710,6 +20961,45 @@ }, "description": "Dataset configuration for managed GRPO training." }, + "GrpoTrainingJob": { + "type": "object", + "required": [ + "type", + "dataset", + "runtime" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "grpo" + ], + "description": "Managed training job type, always 'grpo'." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed GRPO." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingJobCreate" + } + ], + "description": "Request body for creating a managed GRPO training job from a base model." + }, "GrpoTrainingRuntimeConfiguration": { "type": "object", "required": [ @@ -23148,64 +22438,6 @@ }, "description": "Column mapping for KTO feedback datasets. Keys are logical fields expected by KTO; values are the exact column names in the referenced dataset asset." }, - "KtoModelTrainingJobCreate": { - "type": "object", - "required": [ - "model", - "dataset", - "compute" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional name of the model to create. If omitted, the service generates one." - }, - "version": { - "type": "string", - "description": "Optional version of the model to create. If omitted, the service generates one." - }, - "description": { - "type": "string", - "description": "Optional description for the model to create." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags for the model to create." - }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, - "dataset": { - "allOf": [ - { - "$ref": "#/components/schemas/KtoTrainingDatasetConfiguration" - } - ], - "description": "Training and optional evaluation datasets." - }, - "runtime": { - "allOf": [ - { - "$ref": "#/components/schemas/KtoTrainingRuntimeConfiguration" - } - ], - "description": "Runtime options for managed KTO." - }, - "compute": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" - } - ], - "description": "Compute placement for the managed training job." - } - }, - "description": "Request body for creating a managed KTO training job from a base model." - }, "KtoTrainingConfiguration": { "type": "object", "required": [ @@ -23277,6 +22509,44 @@ }, "description": "Dataset configuration for managed KTO training." }, + "KtoTrainingJob": { + "type": "object", + "required": [ + "type", + "dataset" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "kto" + ], + "description": "Managed training job type, always 'kto'." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/KtoTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/KtoTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed KTO." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingJobCreate" + } + ], + "description": "Request body for creating a managed KTO training job from a base model." + }, "KtoTrainingRuntimeConfiguration": { "type": "object", "properties": { @@ -24348,6 +23618,64 @@ }, "description": "Compute placement for a managed model training job." }, + "ModelTrainingJobCreate": { + "type": "object", + "required": [ + "type", + "model", + "compute" + ], + "properties": { + "type": { + "type": "string", + "description": "Managed training job type." + }, + "name": { + "type": "string", + "description": "Optional name of the model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "sft": "#/components/schemas/SftTrainingJob", + "preference": "#/components/schemas/PreferenceTrainingJob", + "kto": "#/components/schemas/KtoTrainingJob", + "reward_model": "#/components/schemas/RewardModelTrainingJob", + "grpo": "#/components/schemas/GrpoTrainingJob", + "policy_gradient": "#/components/schemas/PolicyGradientTrainingJob", + "ppo": "#/components/schemas/PpoTrainingJob" + } + }, + "description": "Base request body for creating a managed training job from a base model." + }, "ModelTrainingOperation": { "type": "object", "required": [ @@ -44981,16 +44309,30 @@ }, "description": "Represents the response for a pending upload request" }, - "PolicyGradientModelTrainingJobCreate": { + "PolicyGradientTrainingAlgorithm": { + "type": "string", + "enum": [ + "rloo", + "reinforce_pp" + ], + "description": "Policy-gradient algorithm used by managed online reinforcement training." + }, + "PolicyGradientTrainingJob": { "type": "object", "required": [ + "type", "algorithm", - "model", "dataset", - "runtime", - "compute" + "runtime" ], "properties": { + "type": { + "type": "string", + "enum": [ + "policy_gradient" + ], + "description": "Managed training job type, always 'policy_gradient'." + }, "algorithm": { "allOf": [ { @@ -44999,29 +44341,6 @@ ], "description": "Policy-gradient algorithm to run." }, - "name": { - "type": "string", - "description": "Optional name of the model to create. If omitted, the service generates one." - }, - "version": { - "type": "string", - "description": "Optional version of the model to create. If omitted, the service generates one." - }, - "description": { - "type": "string", - "description": "Optional description for the model to create." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags for the model to create." - }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, "dataset": { "allOf": [ { @@ -45037,25 +44356,14 @@ } ], "description": "Runtime options for managed online policy-gradient training." - }, - "compute": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" - } - ], - "description": "Compute placement for the managed training job." } }, - "description": "Request body for creating a managed online policy-gradient training job from a base model." - }, - "PolicyGradientTrainingAlgorithm": { - "type": "string", - "enum": [ - "rloo", - "reinforce_pp" + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingJobCreate" + } ], - "description": "Policy-gradient algorithm used by managed online reinforcement training." + "description": "Request body for creating a managed online policy-gradient training job from a base model." }, "PolicyGradientTrainingRuntimeConfiguration": { "type": "object", @@ -45153,65 +44461,6 @@ }, "description": "Critic or value model configuration for managed PPO training." }, - "PpoModelTrainingJobCreate": { - "type": "object", - "required": [ - "model", - "dataset", - "runtime", - "compute" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional name of the model to create. If omitted, the service generates one." - }, - "version": { - "type": "string", - "description": "Optional version of the model to create. If omitted, the service generates one." - }, - "description": { - "type": "string", - "description": "Optional description for the model to create." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags for the model to create." - }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, - "dataset": { - "allOf": [ - { - "$ref": "#/components/schemas/GrpoTrainingDatasetConfiguration" - } - ], - "description": "Training and optional evaluation datasets." - }, - "runtime": { - "allOf": [ - { - "$ref": "#/components/schemas/PpoTrainingRuntimeConfiguration" - } - ], - "description": "Runtime options for managed PPO." - }, - "compute": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" - } - ], - "description": "Compute placement for the managed training job." - } - }, - "description": "Request body for creating a managed PPO training job from a base model." - }, "PpoTrainingConfiguration": { "type": "object", "required": [ @@ -45266,6 +44515,45 @@ ], "description": "Proximal policy optimization training recipe." }, + "PpoTrainingJob": { + "type": "object", + "required": [ + "type", + "dataset", + "runtime" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ppo" + ], + "description": "Managed training job type, always 'ppo'." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/PpoTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed PPO." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingJobCreate" + } + ], + "description": "Request body for creating a managed PPO training job from a base model." + }, "PpoTrainingRuntimeConfiguration": { "type": "object", "required": [ @@ -45345,15 +44633,31 @@ }, "description": "Runtime options for managed PPO training." }, - "PreferenceModelTrainingJobCreate": { + "PreferenceTrainingAlgorithm": { + "type": "string", + "enum": [ + "dpo", + "orpo", + "cpo", + "simpo" + ], + "description": "Preference optimization algorithm used by managed pairwise preference training." + }, + "PreferenceTrainingJob": { "type": "object", "required": [ + "type", "algorithm", - "model", - "dataset", - "compute" + "dataset" ], "properties": { + "type": { + "type": "string", + "enum": [ + "preference" + ], + "description": "Managed training job type, always 'preference'." + }, "algorithm": { "allOf": [ { @@ -45362,29 +44666,6 @@ ], "description": "Preference optimization algorithm to run." }, - "name": { - "type": "string", - "description": "Optional name of the model to create. If omitted, the service generates one." - }, - "version": { - "type": "string", - "description": "Optional version of the model to create. If omitted, the service generates one." - }, - "description": { - "type": "string", - "description": "Optional description for the model to create." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags for the model to create." - }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, "dataset": { "allOf": [ { @@ -45400,27 +44681,14 @@ } ], "description": "Runtime options for managed pairwise preference training." - }, - "compute": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" - } - ], - "description": "Compute placement for the managed training job." } }, - "description": "Request body for creating a managed pairwise preference training job from a base model." - }, - "PreferenceTrainingAlgorithm": { - "type": "string", - "enum": [ - "dpo", - "orpo", - "cpo", - "simpo" + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingJobCreate" + } ], - "description": "Preference optimization algorithm used by managed pairwise preference training." + "description": "Request body for creating a managed pairwise preference training job from a base model." }, "PreferenceTrainingRuntimeConfiguration": { "type": "object", @@ -45724,48 +44992,6 @@ ], "description": "Ray distribution configuration." }, - "RaySessionStart": { - "type": "object", - "required": [ - "instanceCount" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional session name. If omitted, the service uses the Operation-Id header or generates one." - }, - "displayName": { - "type": "string", - "description": "Optional display name for the generated Ray session job." - }, - "description": { - "type": "string", - "description": "Optional description for the generated Ray session job." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags to attach to the generated Ray session job." - }, - "instanceCount": { - "type": "integer", - "format": "int32", - "description": "Number of compute nodes to reserve for the interactive Ray session." - }, - "enableRemoteAccessClientServer": { - "type": "boolean", - "description": "Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally." - }, - "clientServerPort": { - "type": "integer", - "format": "int32", - "description": "The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true." - } - }, - "description": "Request body for starting an interactive Ray session on a compute cluster." - }, "RecurrenceSchedule": { "type": "object", "required": [ @@ -46253,36 +45479,19 @@ }, "description": "Dataset configuration for managed reward-model training." }, - "RewardModelTrainingJobCreate": { + "RewardModelTrainingJob": { "type": "object", "required": [ - "model", - "dataset", - "compute" + "type", + "dataset" ], "properties": { - "name": { - "type": "string", - "description": "Optional name of the reward model to create. If omitted, the service generates one." - }, - "version": { - "type": "string", - "description": "Optional version of the reward model to create. If omitted, the service generates one." - }, - "description": { - "type": "string", - "description": "Optional description for the reward model to create." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags for the reward model to create." - }, - "model": { + "type": { "type": "string", - "description": "Base model asset reference." + "enum": [ + "reward_model" + ], + "description": "Managed training job type, always 'reward_model'." }, "dataset": { "allOf": [ @@ -46299,16 +45508,13 @@ } ], "description": "Runtime options for managed reward-model training." - }, - "compute": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" - } - ], - "description": "Compute placement for the managed training job." } }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingJobCreate" + } + ], "description": "Request body for creating a managed reward-model training job from a base model." }, "RewardModelTrainingLoss": { @@ -46772,64 +45978,6 @@ ], "description": "Scored response dataset for managed reward-model training." }, - "SftModelTrainingJobCreate": { - "type": "object", - "required": [ - "model", - "dataset", - "compute" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional name of the model to create. If omitted, the service generates one." - }, - "version": { - "type": "string", - "description": "Optional version of the model to create. If omitted, the service generates one." - }, - "description": { - "type": "string", - "description": "Optional description for the model to create." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags for the model to create." - }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, - "dataset": { - "allOf": [ - { - "$ref": "#/components/schemas/SftTrainingDatasetConfiguration" - } - ], - "description": "Training and optional evaluation datasets." - }, - "runtime": { - "allOf": [ - { - "$ref": "#/components/schemas/SftTrainingRuntimeConfiguration" - } - ], - "description": "Runtime options for managed SFT." - }, - "compute": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" - } - ], - "description": "Compute placement for the managed training job." - } - }, - "description": "Request body for creating a managed SFT training job from a base model." - }, "SftTrainingColumnMapping": { "type": "object", "required": [ @@ -46914,6 +46062,44 @@ }, "description": "Dataset configuration for managed supervised fine tuning." }, + "SftTrainingJob": { + "type": "object", + "required": [ + "type", + "dataset" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sft" + ], + "description": "Managed training job type, always 'sft'." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/SftTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/SftTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed SFT." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingJobCreate" + } + ], + "description": "Request body for creating a managed SFT training job from a base model." + }, "SftTrainingRuntimeConfiguration": { "type": "object", "properties": { diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index fa0f04c47d81..6c3c82db6d71 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -35,9 +35,6 @@ { "name": "Agent Invocations" }, - { - "name": "Clusters" - }, { "name": "Connections" }, @@ -3049,210 +3046,165 @@ } } }, - "/clusters/{clusterName}/ray_sessions/{sessionName}:stop": { - "post": { - "operationId": "Clusters_stopRaySession", - "description": "Stop an interactive Ray session on a compute cluster.", + "/connections": { + "get": { + "operationId": "Connections_list", + "description": "List all connections in the project, without populating connection credentials", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "clusterName", - "in": "path", - "required": true, - "description": "The compute cluster name.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "sessionName", - "in": "path", - "required": true, - "description": "The Ray session name.", + "name": "connectionType", + "in": "query", + "required": false, + "description": "List connections of this specific type", "schema": { - "type": "string" - } + "$ref": "#/components/schemas/ConnectionType" + }, + "explode": false }, { - "name": "api-version", + "name": "defaultConnection", "in": "query", - "required": true, - "description": "The API version to use for this operation.", + "required": false, + "description": "List connections that are default connections", "schema": { - "type": "string" + "type": "boolean" }, "explode": false + }, + { + "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" } ], "responses": { "200": { - "description": "The request has succeeded." - }, - "202": { - "description": "Response returned when a job cancel operation is accepted asynchronously.", + "description": "The request has succeeded.", "headers": { - "Location": { - "required": true, - "description": "URL to poll for the final result of the cancel operation.", - "schema": { - "type": "string" - } - }, - "Operation-Location": { + "x-ms-client-request-id": { "required": false, - "description": "URL to poll for the status of the cancel operation.", + "description": "An opaque, globally-unique, client-generated string identifier for the request.", "schema": { - "type": "string" + "$ref": "#/components/schemas/Azure.Core.uuid" } - }, - "Retry-After": { - "required": false, - "description": "Suggested delay in seconds before polling.", + } + }, + "content": { + "application/json": { "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/PagedConnection" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Clusters" + "Connections" ] } }, - "/clusters/{clusterName}:start_ray_session": { - "post": { - "operationId": "Clusters_startRaySession", - "description": "Start an interactive Ray session on a compute cluster.", + "/connections/{name}": { + "get": { + "operationId": "Connections_get", + "description": "Get a connection by name, without populating connection credentials", "parameters": [ { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "clusterName", + "name": "name", "in": "path", "required": true, - "description": "The compute cluster name.", - "schema": { - "type": "string" - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry Ray session startup.", + "description": "The friendly name of the connection, provided by the user.", "schema": { "type": "string" } }, { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false + "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" } ], "responses": { - "201": { - "description": "The request has succeeded and a new resource has been created as a result.", + "200": { + "description": "The request has succeeded.", + "headers": { + "x-ms-client-request-id": { + "required": false, + "description": "An opaque, globally-unique, client-generated string identifier for the request.", + "schema": { + "$ref": "#/components/schemas/Azure.Core.uuid" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Job" + "$ref": "#/components/schemas/Connection" } } } }, "default": { "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" } } } } }, "tags": [ - "Clusters" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RaySessionStart" - } - } - }, - "description": "Ray session start request." - } + "Connections" + ] } }, - "/connections": { - "get": { - "operationId": "Connections_list", - "description": "List all connections in the project, without populating connection credentials", + "/connections/{name}/getConnectionWithCredentials": { + "post": { + "operationId": "Connections_getWithCredentials", + "description": "Get a connection by name, with its connection credentials", "parameters": [ { "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" }, { - "name": "connectionType", - "in": "query", - "required": false, - "description": "List connections of this specific type", - "schema": { - "$ref": "#/components/schemas/ConnectionType" - }, - "explode": false - }, - { - "name": "defaultConnection", - "in": "query", - "required": false, - "description": "List connections that are default connections", + "name": "name", + "in": "path", + "required": true, + "description": "The friendly name of the connection, provided by the user.", "schema": { - "type": "boolean" - }, - "explode": false + "type": "string" + } }, { "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" @@ -3273,7 +3225,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedConnection" + "$ref": "#/components/schemas/Connection" } } } @@ -3303,10 +3255,55 @@ ] } }, - "/connections/{name}": { + "/datasets": { "get": { - "operationId": "Connections_get", - "description": "Get a connection by name, without populating connection credentials", + "operationId": "Datasets_listLatest", + "description": "List the latest version of each DatasetVersion", + "parameters": [ + { + "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PagedDatasetVersion" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "headers": { + "x-ms-error-code": { + "required": false, + "description": "String error code indicating what went wrong.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + } + } + } + } + }, + "tags": [ + "Datasets" + ] + } + }, + "/datasets/{name}/versions": { + "get": { + "operationId": "Datasets_listVersions", + "description": "List all versions of the given DatasetVersion", "parameters": [ { "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" @@ -3315,196 +3312,19 @@ "name": "name", "in": "path", "required": true, - "description": "The friendly name of the connection, provided by the user.", + "description": "The name of the resource", "schema": { "type": "string" } - }, - { - "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" } ], "responses": { "200": { "description": "The request has succeeded.", - "headers": { - "x-ms-client-request-id": { - "required": false, - "description": "An opaque, globally-unique, client-generated string identifier for the request.", - "schema": { - "$ref": "#/components/schemas/Azure.Core.uuid" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Connection" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Connections" - ] - } - }, - "/connections/{name}/getConnectionWithCredentials": { - "post": { - "operationId": "Connections_getWithCredentials", - "description": "Get a connection by name, with its connection credentials", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", - "in": "path", - "required": true, - "description": "The friendly name of the connection, provided by the user.", - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/Azure.Core.ClientRequestIdHeader" - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "headers": { - "x-ms-client-request-id": { - "required": false, - "description": "An opaque, globally-unique, client-generated string identifier for the request.", - "schema": { - "$ref": "#/components/schemas/Azure.Core.uuid" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Connection" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Connections" - ] - } - }, - "/datasets": { - "get": { - "operationId": "Datasets_listLatest", - "description": "List the latest version of each DatasetVersion", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedDatasetVersion" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "Datasets" - ] - } - }, - "/datasets/{name}/versions": { - "get": { - "operationId": "Datasets_listVersions", - "description": "List all versions of the given DatasetVersion", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the resource", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedDatasetVersion" + "$ref": "#/components/schemas/PagedDatasetVersion" } } } @@ -10025,350 +9845,10 @@ ] } }, - "/models:create_grpo_training_job": { - "post": { - "operationId": "Models_createGrpoTrainingJob", - "description": "Create a model by running managed GRPO training.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry managed model training.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelTrainingOperation" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/GrpoModelTrainingJobCreate" - } - } - }, - "description": "The managed GRPO model training request." - } - } - }, - "/models:create_kto_training_job": { - "post": { - "operationId": "Models_createKtoTrainingJob", - "description": "Create a model by running managed KTO training.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry managed model training.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelTrainingOperation" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/KtoModelTrainingJobCreate" - } - } - }, - "description": "The managed KTO model training request." - } - } - }, - "/models:create_policy_gradient_training_job": { - "post": { - "operationId": "Models_createPolicyGradientTrainingJob", - "description": "Create a model by running managed online policy-gradient training.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry managed model training.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelTrainingOperation" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PolicyGradientModelTrainingJobCreate" - } - } - }, - "description": "The managed online policy-gradient model training request." - } - } - }, - "/models:create_ppo_training_job": { - "post": { - "operationId": "Models_createPpoTrainingJob", - "description": "Create a model by running managed PPO training.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry managed model training.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelTrainingOperation" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PpoModelTrainingJobCreate" - } - } - }, - "description": "The managed PPO model training request." - } - } - }, - "/models:create_preference_training_job": { + "/models:create_training_job": { "post": { - "operationId": "Models_createPreferenceTrainingJob", - "description": "Create a model by running managed pairwise preference training.", + "operationId": "Models_createTrainingJob", + "description": "Create a model by running managed model training.", "parameters": [ { "name": "Foundry-Features", @@ -10442,181 +9922,11 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PreferenceModelTrainingJobCreate" + "$ref": "#/components/schemas/ModelTrainingJobCreate" } } }, - "description": "The managed pairwise preference model training request." - } - } - }, - "/models:create_reward_model_training_job": { - "post": { - "operationId": "Models_createRewardModelTrainingJob", - "description": "Create a reward model by running managed reward-model training.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry managed model training.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelTrainingOperation" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RewardModelTrainingJobCreate" - } - } - }, - "description": "The managed reward-model training request." - } - } - }, - "/models:create_sft_training_job": { - "post": { - "operationId": "Models_createSftTrainingJob", - "description": "Create a model by running managed supervised fine-tuning.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "Operation-Id", - "in": "header", - "required": false, - "description": "Idempotency key used to safely retry managed model training.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "202": { - "description": "The request has been accepted for processing, but processing has not yet completed.", - "headers": { - "Operation-Location": { - "required": true, - "description": "The location for monitoring the operation state.", - "schema": { - "type": "string", - "format": "uri" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ModelTrainingOperation" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "Models" - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SftModelTrainingJobCreate" - } - } - }, - "description": "The managed SFT model training request." + "description": "The managed model training job to create." } } }, @@ -25769,65 +25079,6 @@ }, "description": "Details of a function tool call." }, - "GrpoModelTrainingJobCreate": { - "type": "object", - "required": [ - "model", - "dataset", - "runtime", - "compute" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional name of the model to create. If omitted, the service generates one." - }, - "version": { - "type": "string", - "description": "Optional version of the model to create. If omitted, the service generates one." - }, - "description": { - "type": "string", - "description": "Optional description for the model to create." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags for the model to create." - }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, - "dataset": { - "allOf": [ - { - "$ref": "#/components/schemas/GrpoTrainingDatasetConfiguration" - } - ], - "description": "Training and optional evaluation datasets." - }, - "runtime": { - "allOf": [ - { - "$ref": "#/components/schemas/GrpoTrainingRuntimeConfiguration" - } - ], - "description": "Runtime options for managed GRPO." - }, - "compute": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" - } - ], - "description": "Compute placement for the managed training job." - } - }, - "description": "Request body for creating a managed GRPO training job from a base model." - }, "GrpoTrainingColumnMapping": { "type": "object", "required": [ @@ -25933,6 +25184,45 @@ }, "description": "Dataset configuration for managed GRPO training." }, + "GrpoTrainingJob": { + "type": "object", + "required": [ + "type", + "dataset", + "runtime" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "grpo" + ], + "description": "Managed training job type, always 'grpo'." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed GRPO." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingJobCreate" + } + ], + "description": "Request body for creating a managed GRPO training job from a base model." + }, "GrpoTrainingRuntimeConfiguration": { "type": "object", "required": [ @@ -27572,64 +26862,6 @@ }, "description": "Column mapping for KTO feedback datasets. Keys are logical fields expected by KTO; values are the exact column names in the referenced dataset asset." }, - "KtoModelTrainingJobCreate": { - "type": "object", - "required": [ - "model", - "dataset", - "compute" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional name of the model to create. If omitted, the service generates one." - }, - "version": { - "type": "string", - "description": "Optional version of the model to create. If omitted, the service generates one." - }, - "description": { - "type": "string", - "description": "Optional description for the model to create." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags for the model to create." - }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, - "dataset": { - "allOf": [ - { - "$ref": "#/components/schemas/KtoTrainingDatasetConfiguration" - } - ], - "description": "Training and optional evaluation datasets." - }, - "runtime": { - "allOf": [ - { - "$ref": "#/components/schemas/KtoTrainingRuntimeConfiguration" - } - ], - "description": "Runtime options for managed KTO." - }, - "compute": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" - } - ], - "description": "Compute placement for the managed training job." - } - }, - "description": "Request body for creating a managed KTO training job from a base model." - }, "KtoTrainingConfiguration": { "type": "object", "required": [ @@ -27701,6 +26933,44 @@ }, "description": "Dataset configuration for managed KTO training." }, + "KtoTrainingJob": { + "type": "object", + "required": [ + "type", + "dataset" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "kto" + ], + "description": "Managed training job type, always 'kto'." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/KtoTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/KtoTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed KTO." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingJobCreate" + } + ], + "description": "Request body for creating a managed KTO training job from a base model." + }, "KtoTrainingRuntimeConfiguration": { "type": "object", "properties": { @@ -28901,6 +28171,64 @@ }, "description": "Compute placement for a managed model training job." }, + "ModelTrainingJobCreate": { + "type": "object", + "required": [ + "type", + "model", + "compute" + ], + "properties": { + "type": { + "type": "string", + "description": "Managed training job type." + }, + "name": { + "type": "string", + "description": "Optional name of the model to create. If omitted, the service generates one." + }, + "version": { + "type": "string", + "description": "Optional version of the model to create. If omitted, the service generates one." + }, + "description": { + "type": "string", + "description": "Optional description for the model to create." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Optional tags for the model to create." + }, + "model": { + "type": "string", + "description": "Base model asset reference." + }, + "compute": { + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" + } + ], + "description": "Compute placement for the managed training job." + } + }, + "discriminator": { + "propertyName": "type", + "mapping": { + "sft": "#/components/schemas/SftTrainingJob", + "preference": "#/components/schemas/PreferenceTrainingJob", + "kto": "#/components/schemas/KtoTrainingJob", + "reward_model": "#/components/schemas/RewardModelTrainingJob", + "grpo": "#/components/schemas/GrpoTrainingJob", + "policy_gradient": "#/components/schemas/PolicyGradientTrainingJob", + "ppo": "#/components/schemas/PpoTrainingJob" + } + }, + "description": "Base request body for creating a managed training job from a base model." + }, "ModelTrainingOperation": { "type": "object", "required": [ @@ -49669,16 +48997,30 @@ }, "description": "Represents the response for a pending upload request" }, - "PolicyGradientModelTrainingJobCreate": { + "PolicyGradientTrainingAlgorithm": { + "type": "string", + "enum": [ + "rloo", + "reinforce_pp" + ], + "description": "Policy-gradient algorithm used by managed online reinforcement training." + }, + "PolicyGradientTrainingJob": { "type": "object", "required": [ + "type", "algorithm", - "model", "dataset", - "runtime", - "compute" + "runtime" ], "properties": { + "type": { + "type": "string", + "enum": [ + "policy_gradient" + ], + "description": "Managed training job type, always 'policy_gradient'." + }, "algorithm": { "allOf": [ { @@ -49687,29 +49029,6 @@ ], "description": "Policy-gradient algorithm to run." }, - "name": { - "type": "string", - "description": "Optional name of the model to create. If omitted, the service generates one." - }, - "version": { - "type": "string", - "description": "Optional version of the model to create. If omitted, the service generates one." - }, - "description": { - "type": "string", - "description": "Optional description for the model to create." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags for the model to create." - }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, "dataset": { "allOf": [ { @@ -49725,25 +49044,14 @@ } ], "description": "Runtime options for managed online policy-gradient training." - }, - "compute": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" - } - ], - "description": "Compute placement for the managed training job." } }, - "description": "Request body for creating a managed online policy-gradient training job from a base model." - }, - "PolicyGradientTrainingAlgorithm": { - "type": "string", - "enum": [ - "rloo", - "reinforce_pp" + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingJobCreate" + } ], - "description": "Policy-gradient algorithm used by managed online reinforcement training." + "description": "Request body for creating a managed online policy-gradient training job from a base model." }, "PolicyGradientTrainingRuntimeConfiguration": { "type": "object", @@ -49841,65 +49149,6 @@ }, "description": "Critic or value model configuration for managed PPO training." }, - "PpoModelTrainingJobCreate": { - "type": "object", - "required": [ - "model", - "dataset", - "runtime", - "compute" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional name of the model to create. If omitted, the service generates one." - }, - "version": { - "type": "string", - "description": "Optional version of the model to create. If omitted, the service generates one." - }, - "description": { - "type": "string", - "description": "Optional description for the model to create." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags for the model to create." - }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, - "dataset": { - "allOf": [ - { - "$ref": "#/components/schemas/GrpoTrainingDatasetConfiguration" - } - ], - "description": "Training and optional evaluation datasets." - }, - "runtime": { - "allOf": [ - { - "$ref": "#/components/schemas/PpoTrainingRuntimeConfiguration" - } - ], - "description": "Runtime options for managed PPO." - }, - "compute": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" - } - ], - "description": "Compute placement for the managed training job." - } - }, - "description": "Request body for creating a managed PPO training job from a base model." - }, "PpoTrainingConfiguration": { "type": "object", "required": [ @@ -49954,6 +49203,45 @@ ], "description": "Proximal policy optimization training recipe." }, + "PpoTrainingJob": { + "type": "object", + "required": [ + "type", + "dataset", + "runtime" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ppo" + ], + "description": "Managed training job type, always 'ppo'." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/GrpoTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/PpoTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed PPO." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingJobCreate" + } + ], + "description": "Request body for creating a managed PPO training job from a base model." + }, "PpoTrainingRuntimeConfiguration": { "type": "object", "required": [ @@ -50033,15 +49321,31 @@ }, "description": "Runtime options for managed PPO training." }, - "PreferenceModelTrainingJobCreate": { + "PreferenceTrainingAlgorithm": { + "type": "string", + "enum": [ + "dpo", + "orpo", + "cpo", + "simpo" + ], + "description": "Preference optimization algorithm used by managed pairwise preference training." + }, + "PreferenceTrainingJob": { "type": "object", "required": [ + "type", "algorithm", - "model", - "dataset", - "compute" + "dataset" ], "properties": { + "type": { + "type": "string", + "enum": [ + "preference" + ], + "description": "Managed training job type, always 'preference'." + }, "algorithm": { "allOf": [ { @@ -50050,29 +49354,6 @@ ], "description": "Preference optimization algorithm to run." }, - "name": { - "type": "string", - "description": "Optional name of the model to create. If omitted, the service generates one." - }, - "version": { - "type": "string", - "description": "Optional version of the model to create. If omitted, the service generates one." - }, - "description": { - "type": "string", - "description": "Optional description for the model to create." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags for the model to create." - }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, "dataset": { "allOf": [ { @@ -50088,27 +49369,14 @@ } ], "description": "Runtime options for managed pairwise preference training." - }, - "compute": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" - } - ], - "description": "Compute placement for the managed training job." } }, - "description": "Request body for creating a managed pairwise preference training job from a base model." - }, - "PreferenceTrainingAlgorithm": { - "type": "string", - "enum": [ - "dpo", - "orpo", - "cpo", - "simpo" + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingJobCreate" + } ], - "description": "Preference optimization algorithm used by managed pairwise preference training." + "description": "Request body for creating a managed pairwise preference training job from a base model." }, "PreferenceTrainingRuntimeConfiguration": { "type": "object", @@ -50412,48 +49680,6 @@ ], "description": "Ray distribution configuration." }, - "RaySessionStart": { - "type": "object", - "required": [ - "instanceCount" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional session name. If omitted, the service uses the Operation-Id header or generates one." - }, - "displayName": { - "type": "string", - "description": "Optional display name for the generated Ray session job." - }, - "description": { - "type": "string", - "description": "Optional description for the generated Ray session job." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags to attach to the generated Ray session job." - }, - "instanceCount": { - "type": "integer", - "format": "int32", - "description": "Number of compute nodes to reserve for the interactive Ray session." - }, - "enableRemoteAccessClientServer": { - "type": "boolean", - "description": "Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally." - }, - "clientServerPort": { - "type": "integer", - "format": "int32", - "description": "The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true." - } - }, - "description": "Request body for starting an interactive Ray session on a compute cluster." - }, "RecurrenceSchedule": { "type": "object", "required": [ @@ -50941,36 +50167,19 @@ }, "description": "Dataset configuration for managed reward-model training." }, - "RewardModelTrainingJobCreate": { + "RewardModelTrainingJob": { "type": "object", "required": [ - "model", - "dataset", - "compute" + "type", + "dataset" ], "properties": { - "name": { - "type": "string", - "description": "Optional name of the reward model to create. If omitted, the service generates one." - }, - "version": { - "type": "string", - "description": "Optional version of the reward model to create. If omitted, the service generates one." - }, - "description": { - "type": "string", - "description": "Optional description for the reward model to create." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags for the reward model to create." - }, - "model": { + "type": { "type": "string", - "description": "Base model asset reference." + "enum": [ + "reward_model" + ], + "description": "Managed training job type, always 'reward_model'." }, "dataset": { "allOf": [ @@ -50987,16 +50196,13 @@ } ], "description": "Runtime options for managed reward-model training." - }, - "compute": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" - } - ], - "description": "Compute placement for the managed training job." } }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingJobCreate" + } + ], "description": "Request body for creating a managed reward-model training job from a base model." }, "RewardModelTrainingLoss": { @@ -51556,64 +50762,6 @@ ] } }, - "SftModelTrainingJobCreate": { - "type": "object", - "required": [ - "model", - "dataset", - "compute" - ], - "properties": { - "name": { - "type": "string", - "description": "Optional name of the model to create. If omitted, the service generates one." - }, - "version": { - "type": "string", - "description": "Optional version of the model to create. If omitted, the service generates one." - }, - "description": { - "type": "string", - "description": "Optional description for the model to create." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional tags for the model to create." - }, - "model": { - "type": "string", - "description": "Base model asset reference." - }, - "dataset": { - "allOf": [ - { - "$ref": "#/components/schemas/SftTrainingDatasetConfiguration" - } - ], - "description": "Training and optional evaluation datasets." - }, - "runtime": { - "allOf": [ - { - "$ref": "#/components/schemas/SftTrainingRuntimeConfiguration" - } - ], - "description": "Runtime options for managed SFT." - }, - "compute": { - "allOf": [ - { - "$ref": "#/components/schemas/ModelTrainingComputeConfiguration" - } - ], - "description": "Compute placement for the managed training job." - } - }, - "description": "Request body for creating a managed SFT training job from a base model." - }, "SftTrainingColumnMapping": { "type": "object", "required": [ @@ -51698,6 +50846,44 @@ }, "description": "Dataset configuration for managed supervised fine tuning." }, + "SftTrainingJob": { + "type": "object", + "required": [ + "type", + "dataset" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sft" + ], + "description": "Managed training job type, always 'sft'." + }, + "dataset": { + "allOf": [ + { + "$ref": "#/components/schemas/SftTrainingDatasetConfiguration" + } + ], + "description": "Training and optional evaluation datasets." + }, + "runtime": { + "allOf": [ + { + "$ref": "#/components/schemas/SftTrainingRuntimeConfiguration" + } + ], + "description": "Runtime options for managed SFT." + } + }, + "allOf": [ + { + "$ref": "#/components/schemas/ModelTrainingJobCreate" + } + ], + "description": "Request body for creating a managed SFT training job from a base model." + }, "SftTrainingRuntimeConfiguration": { "type": "object", "properties": { diff --git a/specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp deleted file mode 100644 index fa245d4375bc..000000000000 --- a/specification/ai-foundry/data-plane/Foundry/src/clusters/models.tsp +++ /dev/null @@ -1,27 +0,0 @@ -import "../common/models.tsp"; - -namespace Azure.AI.Projects; - -@doc("Request body for starting an interactive Ray session on a compute cluster.") -model RaySessionStart { - @doc("Optional session name. If omitted, the service uses the Operation-Id header or generates one.") - name?: string; - - @doc("Optional display name for the generated Ray session job.") - displayName?: string; - - @doc("Optional description for the generated Ray session job.") - description?: string; - - @doc("Optional tags to attach to the generated Ray session job.") - tags?: Record; - - @doc("Number of compute nodes to reserve for the interactive Ray session.") - instanceCount: int32; - - @doc("Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally.") - enableRemoteAccessClientServer?: boolean; - - @doc("The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true.") - clientServerPort?: int32; -} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/src/clusters/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/clusters/routes.tsp deleted file mode 100644 index bf6c4f41c6df..000000000000 --- a/specification/ai-foundry/data-plane/Foundry/src/clusters/routes.tsp +++ /dev/null @@ -1,51 +0,0 @@ -import "./models.tsp"; -import "../common/models.tsp"; -import "../jobs/models.tsp"; - -using TypeSpec.Http; - -namespace Azure.AI.Projects; - -@tag("Clusters") -interface Clusters { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Ray sessions are cluster actions backed by underlying command jobs." - @doc("Start an interactive Ray session on a compute cluster.") - @post - @route("/clusters/{clusterName}:start_ray_session") - startRaySession is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The compute cluster name.") - @path - clusterName: string; - - @doc("Idempotency key used to safely retry Ray session startup.") - @header("Operation-Id") - operationId?: string; - - @doc("Ray session start request.") - @bodyRoot - request: RaySessionStart; - }, - ResourceCreatedResponse - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Ray session stop is a cluster action backed by training job cancellation." - #suppress "@azure-tools/typespec-azure-core/no-response-body" "Ray session stop returns 200 synchronously or 202 with polling headers when cancellation is asynchronous." - @doc("Stop an interactive Ray session on a compute cluster.") - @post - @route("/clusters/{clusterName}/ray_sessions/{sessionName}:stop") - stopRaySession is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The compute cluster name.") - @path - clusterName: string; - - @doc("The Ray session name.") - @path - sessionName: string; - }, - Http.OkResponse | JobCancelAcceptedResponse - >; -} \ No newline at end of file diff --git a/specification/ai-foundry/data-plane/Foundry/src/models/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/models/models.tsp index b14a2c92461e..1f29bbf0f1cc 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/models/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/models/models.tsp @@ -521,8 +521,13 @@ model PpoTrainingRuntimeConfiguration { packaging?: ModelTrainingPackagingConfiguration; } -@doc("Request body for creating a managed SFT training job from a base model.") -model SftModelTrainingJobCreate { +#suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "Use an extensible string discriminator for managed model training job types." +@doc("Base request body for creating a managed training job from a base model.") +@discriminator("type") +model ModelTrainingJobCreate { + @doc("Managed training job type.") + type: string; + @doc("Optional name of the model to create. If omitted, the service generates one.") name?: string; @@ -538,180 +543,96 @@ model SftModelTrainingJobCreate { @doc("Base model asset reference.") `model`: string; + @doc("Compute placement for the managed training job.") + compute: ModelTrainingComputeConfiguration; +} + +@doc("Request body for creating a managed SFT training job from a base model.") +model SftTrainingJob extends ModelTrainingJobCreate { + @doc("Managed training job type, always 'sft'.") + type: "sft"; + @doc("Training and optional evaluation datasets.") dataset: SftTrainingDatasetConfiguration; @doc("Runtime options for managed SFT.") runtime?: SftTrainingRuntimeConfiguration; - - @doc("Compute placement for the managed training job.") - compute: ModelTrainingComputeConfiguration; } @doc("Request body for creating a managed pairwise preference training job from a base model.") -model PreferenceModelTrainingJobCreate { +model PreferenceTrainingJob extends ModelTrainingJobCreate { + @doc("Managed training job type, always 'preference'.") + type: "preference"; + @doc("Preference optimization algorithm to run.") algorithm: PreferenceTrainingAlgorithm; - @doc("Optional name of the model to create. If omitted, the service generates one.") - name?: string; - - @doc("Optional version of the model to create. If omitted, the service generates one.") - version?: string; - - @doc("Optional description for the model to create.") - description?: string; - - @doc("Optional tags for the model to create.") - tags?: Record; - - @doc("Base model asset reference.") - `model`: string; - @doc("Training and optional evaluation datasets.") dataset: PairwisePreferenceDatasetConfiguration; @doc("Runtime options for managed pairwise preference training.") runtime?: PreferenceTrainingRuntimeConfiguration; - - @doc("Compute placement for the managed training job.") - compute: ModelTrainingComputeConfiguration; } @doc("Request body for creating a managed KTO training job from a base model.") -model KtoModelTrainingJobCreate { - @doc("Optional name of the model to create. If omitted, the service generates one.") - name?: string; - - @doc("Optional version of the model to create. If omitted, the service generates one.") - version?: string; - - @doc("Optional description for the model to create.") - description?: string; - - @doc("Optional tags for the model to create.") - tags?: Record; - - @doc("Base model asset reference.") - `model`: string; +model KtoTrainingJob extends ModelTrainingJobCreate { + @doc("Managed training job type, always 'kto'.") + type: "kto"; @doc("Training and optional evaluation datasets.") dataset: KtoTrainingDatasetConfiguration; @doc("Runtime options for managed KTO.") runtime?: KtoTrainingRuntimeConfiguration; - - @doc("Compute placement for the managed training job.") - compute: ModelTrainingComputeConfiguration; } @doc("Request body for creating a managed reward-model training job from a base model.") -model RewardModelTrainingJobCreate { - @doc("Optional name of the reward model to create. If omitted, the service generates one.") - name?: string; - - @doc("Optional version of the reward model to create. If omitted, the service generates one.") - version?: string; - - @doc("Optional description for the reward model to create.") - description?: string; - - @doc("Optional tags for the reward model to create.") - tags?: Record; - - @doc("Base model asset reference.") - `model`: string; +model RewardModelTrainingJob extends ModelTrainingJobCreate { + @doc("Managed training job type, always 'reward_model'.") + type: "reward_model"; @doc("Training and optional evaluation datasets.") dataset: RewardModelTrainingDatasetConfiguration; @doc("Runtime options for managed reward-model training.") runtime?: RewardModelTrainingRuntimeConfiguration; - - @doc("Compute placement for the managed training job.") - compute: ModelTrainingComputeConfiguration; } @doc("Request body for creating a managed GRPO training job from a base model.") -model GrpoModelTrainingJobCreate { - @doc("Optional name of the model to create. If omitted, the service generates one.") - name?: string; - - @doc("Optional version of the model to create. If omitted, the service generates one.") - version?: string; - - @doc("Optional description for the model to create.") - description?: string; - - @doc("Optional tags for the model to create.") - tags?: Record; - - @doc("Base model asset reference.") - `model`: string; +model GrpoTrainingJob extends ModelTrainingJobCreate { + @doc("Managed training job type, always 'grpo'.") + type: "grpo"; @doc("Training and optional evaluation datasets.") dataset: GrpoTrainingDatasetConfiguration; @doc("Runtime options for managed GRPO.") runtime: GrpoTrainingRuntimeConfiguration; - - @doc("Compute placement for the managed training job.") - compute: ModelTrainingComputeConfiguration; } @doc("Request body for creating a managed online policy-gradient training job from a base model.") -model PolicyGradientModelTrainingJobCreate { +model PolicyGradientTrainingJob extends ModelTrainingJobCreate { + @doc("Managed training job type, always 'policy_gradient'.") + type: "policy_gradient"; + @doc("Policy-gradient algorithm to run.") algorithm: PolicyGradientTrainingAlgorithm; - @doc("Optional name of the model to create. If omitted, the service generates one.") - name?: string; - - @doc("Optional version of the model to create. If omitted, the service generates one.") - version?: string; - - @doc("Optional description for the model to create.") - description?: string; - - @doc("Optional tags for the model to create.") - tags?: Record; - - @doc("Base model asset reference.") - `model`: string; - @doc("Training and optional evaluation datasets.") dataset: GrpoTrainingDatasetConfiguration; @doc("Runtime options for managed online policy-gradient training.") runtime: PolicyGradientTrainingRuntimeConfiguration; - - @doc("Compute placement for the managed training job.") - compute: ModelTrainingComputeConfiguration; } @doc("Request body for creating a managed PPO training job from a base model.") -model PpoModelTrainingJobCreate { - @doc("Optional name of the model to create. If omitted, the service generates one.") - name?: string; - - @doc("Optional version of the model to create. If omitted, the service generates one.") - version?: string; - - @doc("Optional description for the model to create.") - description?: string; - - @doc("Optional tags for the model to create.") - tags?: Record; - - @doc("Base model asset reference.") - `model`: string; +model PpoTrainingJob extends ModelTrainingJobCreate { + @doc("Managed training job type, always 'ppo'.") + type: "ppo"; @doc("Training and optional evaluation datasets.") dataset: GrpoTrainingDatasetConfiguration; @doc("Runtime options for managed PPO.") runtime: PpoTrainingRuntimeConfiguration; - - @doc("Compute placement for the managed training job.") - compute: ModelTrainingComputeConfiguration; } diff --git a/specification/ai-foundry/data-plane/Foundry/src/models/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/models/routes.tsp index 4fe14453aa1e..653037cdfbb6 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/models/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/models/routes.tsp @@ -14,9 +14,27 @@ alias ModelTrainingAcceptedResponse = Foundations.AcceptedResponse & @tag("Models") interface Models { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Managed model training is a product action that creates an underlying training job resource." - @doc("Create a model by running managed supervised fine-tuning.") + @doc("Create a model by running managed model training.") @post - @route("/models:create_sft_training_job") + @route("/models:create_training_job") + @pollingOperation(Models.getTrainingOperationResult) + createTrainingJob is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.jobs_v1_preview, + { + @doc("Idempotency key used to safely retry managed model training.") + @header("Operation-Id") + operationId?: string; + + @doc("The managed model training job to create.") + @bodyRoot + job: ModelTrainingJobCreate; + }, + ModelTrainingAcceptedResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Managed model training is a product action that creates an underlying training job resource." + @doc("Create a model by running managed supervised fine-tuning.") + @overload(Models.createTrainingJob) @pollingOperation(Models.getTrainingOperationResult) createSftTrainingJob is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, @@ -25,17 +43,16 @@ interface Models { @header("Operation-Id") operationId?: string; - @doc("The managed SFT model training request.") + @doc("The managed SFT model training job to create.") @bodyRoot - request: SftModelTrainingJobCreate; + job: SftTrainingJob; }, ModelTrainingAcceptedResponse >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Managed model training is a product action that creates an underlying training job resource." @doc("Create a model by running managed pairwise preference training.") - @post - @route("/models:create_preference_training_job") + @overload(Models.createTrainingJob) @pollingOperation(Models.getTrainingOperationResult) createPreferenceTrainingJob is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, @@ -46,15 +63,14 @@ interface Models { @doc("The managed pairwise preference model training request.") @bodyRoot - request: PreferenceModelTrainingJobCreate; + job: PreferenceTrainingJob; }, ModelTrainingAcceptedResponse >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Managed model training is a product action that creates an underlying training job resource." @doc("Create a model by running managed KTO training.") - @post - @route("/models:create_kto_training_job") + @overload(Models.createTrainingJob) @pollingOperation(Models.getTrainingOperationResult) createKtoTrainingJob is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, @@ -65,15 +81,14 @@ interface Models { @doc("The managed KTO model training request.") @bodyRoot - request: KtoModelTrainingJobCreate; + job: KtoTrainingJob; }, ModelTrainingAcceptedResponse >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Managed model training is a product action that creates an underlying training job resource." @doc("Create a reward model by running managed reward-model training.") - @post - @route("/models:create_reward_model_training_job") + @overload(Models.createTrainingJob) @pollingOperation(Models.getTrainingOperationResult) createRewardModelTrainingJob is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, @@ -84,15 +99,14 @@ interface Models { @doc("The managed reward-model training request.") @bodyRoot - request: RewardModelTrainingJobCreate; + job: RewardModelTrainingJob; }, ModelTrainingAcceptedResponse >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Managed model training is a product action that creates an underlying training job resource." @doc("Create a model by running managed GRPO training.") - @post - @route("/models:create_grpo_training_job") + @overload(Models.createTrainingJob) @pollingOperation(Models.getTrainingOperationResult) createGrpoTrainingJob is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, @@ -103,15 +117,14 @@ interface Models { @doc("The managed GRPO model training request.") @bodyRoot - request: GrpoModelTrainingJobCreate; + job: GrpoTrainingJob; }, ModelTrainingAcceptedResponse >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Managed model training is a product action that creates an underlying training job resource." @doc("Create a model by running managed online policy-gradient training.") - @post - @route("/models:create_policy_gradient_training_job") + @overload(Models.createTrainingJob) @pollingOperation(Models.getTrainingOperationResult) createPolicyGradientTrainingJob is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, @@ -122,15 +135,14 @@ interface Models { @doc("The managed online policy-gradient model training request.") @bodyRoot - request: PolicyGradientModelTrainingJobCreate; + job: PolicyGradientTrainingJob; }, ModelTrainingAcceptedResponse >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Managed model training is a product action that creates an underlying training job resource." @doc("Create a model by running managed PPO training.") - @post - @route("/models:create_ppo_training_job") + @overload(Models.createTrainingJob) @pollingOperation(Models.getTrainingOperationResult) createPpoTrainingJob is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.jobs_v1_preview, @@ -141,7 +153,7 @@ interface Models { @doc("The managed PPO model training request.") @bodyRoot - request: PpoModelTrainingJobCreate; + job: PpoTrainingJob; }, ModelTrainingAcceptedResponse >; From d8b223b9ea970e0c70c8d8e12b826ea4beb365c1 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Thu, 7 May 2026 00:08:31 -0700 Subject: [PATCH 23/37] fix(foundry): align training jobs surface Address review feedback on the Foundry training jobs data-plane surface. Rename the jobs TypeSpec folder and preview flag to training_jobs, align wire names with snake_case, use common pagination patterns, collapse latest attempt routes, and regenerate OpenAPI/examples. Authored-by: GitHub Copilot for VS Code Model: GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../data-plane/Foundry/client.csharp.tsp | 12 +- .../ai-foundry/data-plane/Foundry/client.tsp | 2 +- ..._CreateTrainingJobGrpo_MaximumSet_Gen.json | 10 +- ...s_CreateTrainingJobKto_MaximumSet_Gen.json | 126 +- ...iningJobPolicyGradient_MaximumSet_Gen.json | 148 +- ...s_CreateTrainingJobPpo_MaximumSet_Gen.json | 148 +- ...eTrainingJobPreference_MaximumSet_Gen.json | 10 +- ...TrainingJobRewardModel_MaximumSet_Gen.json | 120 +- ...s_CreateTrainingJobSft_MaximumSet_Gen.json | 10 +- ...rainingOperationResult_MaximumSet_Gen.json | 10 +- ...ainingJobs_BeginCancel_MaximumSet_Gen.json | 2 +- ...ainingJobs_BeginDelete_MaximumSet_Gen.json | 2 +- ...bs_CreateRayCommandJob_MaximumSet_Gen.json | 16 +- .../TrainingJobs_Create_MaximumSet_Gen.json | 74 +- .../TrainingJobs_Create_MinimumSet_Gen.json | 6 +- .../v1/TrainingJobs_Get_MaximumSet_Gen.json | 54 +- .../v1/TrainingJobs_Get_MinimumSet_Gen.json | 4 +- .../v1/TrainingJobs_List_MaximumSet_Gen.json | 58 +- .../v1/TrainingJobs_List_MinimumSet_Gen.json | 4 +- .../ai-foundry/data-plane/Foundry/main.tsp | 2 +- .../v1/microsoft-foundry-openapi3.json | 2895 ++++++---------- .../microsoft-foundry-openapi3.json | 2969 ++++++----------- .../data-plane/Foundry/src/common/models.tsp | 2 +- .../data-plane/Foundry/src/jobs/routes.tsp | 711 ---- .../data-plane/Foundry/src/models/models.tsp | 32 +- .../data-plane/Foundry/src/models/routes.tsp | 40 +- .../Foundry/src/servicepatterns.tsp | 4 + .../src/{jobs => training_jobs}/models.tsp | 424 +-- .../src/{jobs => training_jobs}/readme.md | 2 +- .../Foundry/src/training_jobs/routes.tsp | 518 +++ 30 files changed, 3355 insertions(+), 5060 deletions(-) delete mode 100644 specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp rename specification/ai-foundry/data-plane/Foundry/src/{jobs => training_jobs}/models.tsp (85%) rename specification/ai-foundry/data-plane/Foundry/src/{jobs => training_jobs}/readme.md (81%) create mode 100644 specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp diff --git a/specification/ai-foundry/data-plane/Foundry/client.csharp.tsp b/specification/ai-foundry/data-plane/Foundry/client.csharp.tsp index 542c81488e0b..bc59b0e4794e 100644 --- a/specification/ai-foundry/data-plane/Foundry/client.csharp.tsp +++ b/specification/ai-foundry/data-plane/Foundry/client.csharp.tsp @@ -3,7 +3,7 @@ import "./src/connections/routes.tsp"; import "./src/datasets/routes.tsp"; import "./src/indexes/routes.tsp"; import "./src/deployments/routes.tsp"; -import "./src/jobs/routes.tsp"; +import "./src/training_jobs/routes.tsp"; import "./src/models/routes.tsp"; import "./src/red-teams/routes.tsp"; import "./src/evaluation-rules/routes.tsp"; @@ -107,14 +107,8 @@ namespace Azure.AI.Projects; @@clientName(TrainingJobs.create, "createTrainingJob", "csharp"); @@clientName(TrainingJobs.get, "getTrainingJob", "csharp"); @@clientName(TrainingJobs.list, "listTrainingJobs", "csharp"); -@@clientName(TrainingJobs.beginDelete, - "beginDeleteTrainingJob", - "csharp" -); -@@clientName(TrainingJobs.beginCancel, - "beginCancelTrainingJob", - "csharp" -); +@@clientName(TrainingJobs.beginDelete, "beginDeleteTrainingJob", "csharp"); +@@clientName(TrainingJobs.beginCancel, "beginCancelTrainingJob", "csharp"); // Make these two internal, since all SDKs hand-write a single public method with boolean "includeCredentials" // input parameter that calls either on these two. diff --git a/specification/ai-foundry/data-plane/Foundry/client.tsp b/specification/ai-foundry/data-plane/Foundry/client.tsp index c5fead3ab4ef..a2b590e6e7df 100644 --- a/specification/ai-foundry/data-plane/Foundry/client.tsp +++ b/specification/ai-foundry/data-plane/Foundry/client.tsp @@ -23,7 +23,7 @@ import "./src/memory-stores/routes.tsp"; import "./src/red-teams/routes.tsp"; import "./src/schedules/routes.tsp"; import "./src/toolsets/routes.tsp"; -import "./src/jobs/routes.tsp"; +import "./src/training_jobs/routes.tsp"; // Create a ".beta" subclient for the above beta operations import "./relocate-beta-operations.tsp"; diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobGrpo_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobGrpo_MaximumSet_Gen.json index b01c6f998582..33eb72a82b76 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobGrpo_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobGrpo_MaximumSet_Gen.json @@ -4,7 +4,7 @@ "parameters": { "api-version": "v1", "Operation-Id": "create-my-grpo-training-job-01", - "Foundry-Features": "Jobs=V1Preview", + "Foundry-Features": "TrainingJobs=V1Preview", "job": { "type": "grpo", "name": "qwen-reasoning-grpo", @@ -21,7 +21,7 @@ "prompt": "prompt", "reference": "reference" }, - "dataFormat": { + "data_format": { "chatTemplate": "chatml" } }, @@ -66,7 +66,7 @@ "instanceCount": 4, "instanceType": "Standard_NC96ads_A100_v4" }, - "gpuCount": 32 + "gpu_count": 32 } } }, @@ -76,9 +76,9 @@ "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-grpo-training-job-01/result?api-version=v1" }, "body": { - "operationId": "create-my-grpo-training-job-01", + "operation_id": "create-my-grpo-training-job-01", "status": "queued" } } } -} \ No newline at end of file +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobKto_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobKto_MaximumSet_Gen.json index 51815ce25d45..73efa1941956 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobKto_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobKto_MaximumSet_Gen.json @@ -1,67 +1,67 @@ { - "title": "Models_CreateTrainingJobKto_MaximumSet", - "operationId": "Models_createTrainingJob", - "parameters": { - "api-version": "v1", - "Operation-Id": "create-my-kto-training-job-01", - "Foundry-Features": "Jobs=V1Preview", - "job": { - "type": "kto", - "name": "qwen-feedback-kto", - "version": "1", - "description": "KTO model trained from binary desirability feedback", - "tags": { - "algorithm": "kto" - }, - "model": "azureai://registries/azureml/models/qwen-base/versions/1", - "dataset": { - "train": "azureai://accounts/my-account/projects/my-project/data/kto-train/versions/1", - "eval": "azureai://accounts/my-account/projects/my-project/data/kto-eval/versions/1", - "columns": { - "prompt": "prompt", - "response": "response", - "label": "is_desirable" - }, - "dataFormat": { - "chatTemplate": "chatml" - } - }, - "runtime": { - "framework": "trl", - "desirableWeight": 1.0, - "undesirableWeight": 1.33, - "hyperparameters": { - "learning_rate": 0.00005, - "beta": 0.1 - }, - "lora": { - "rank": 16, - "alpha": 32, - "targetModules": "auto" - }, - "packaging": { - "mode": "merged_model" - } - }, - "compute": { - "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", - "resources": { - "instanceCount": 2, - "instanceType": "Standard_NC96ads_A100_v4" - }, - "gpuCount": 16 - } + "title": "Models_CreateTrainingJobKto_MaximumSet", + "operationId": "Models_createTrainingJob", + "parameters": { + "api-version": "v1", + "Operation-Id": "create-my-kto-training-job-01", + "Foundry-Features": "TrainingJobs=V1Preview", + "job": { + "type": "kto", + "name": "qwen-feedback-kto", + "version": "1", + "description": "KTO model trained from binary desirability feedback", + "tags": { + "algorithm": "kto" + }, + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "train": "azureai://accounts/my-account/projects/my-project/data/kto-train/versions/1", + "eval": "azureai://accounts/my-account/projects/my-project/data/kto-eval/versions/1", + "columns": { + "prompt": "prompt", + "response": "response", + "label": "is_desirable" + }, + "data_format": { + "chatTemplate": "chatml" } - }, - "responses": { - "202": { - "headers": { - "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-kto-training-job-01/result?api-version=v1" - }, - "body": { - "operationId": "create-my-kto-training-job-01", - "status": "queued" - } + }, + "runtime": { + "framework": "trl", + "desirable_weight": 1, + "undesirable_weight": 1.33, + "hyperparameters": { + "learning_rate": 0.00005, + "beta": 0.1 + }, + "lora": { + "rank": 16, + "alpha": 32, + "targetModules": "auto" + }, + "packaging": { + "mode": "merged_model" } + }, + "compute": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "resources": { + "instanceCount": 2, + "instanceType": "Standard_NC96ads_A100_v4" + }, + "gpu_count": 16 + } } -} \ No newline at end of file + }, + "responses": { + "202": { + "headers": { + "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-kto-training-job-01/result?api-version=v1" + }, + "body": { + "operation_id": "create-my-kto-training-job-01", + "status": "queued" + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPolicyGradient_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPolicyGradient_MaximumSet_Gen.json index 75b71f24dbb6..7bd8bd6c64f5 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPolicyGradient_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPolicyGradient_MaximumSet_Gen.json @@ -1,78 +1,78 @@ { - "title": "Models_CreateTrainingJobPolicyGradient_MaximumSet", - "operationId": "Models_createTrainingJob", - "parameters": { - "api-version": "v1", - "Operation-Id": "create-my-rloo-training-job-01", - "Foundry-Features": "Jobs=V1Preview", - "job": { - "type": "policy_gradient", - "algorithm": "rloo", - "name": "qwen-rloo-math", - "version": "1", - "description": "RLOO policy model trained with a built-in math verifier", - "tags": { - "algorithm": "rloo" - }, - "model": "azureai://registries/azureml/models/qwen-base/versions/1", - "dataset": { - "train": "azureai://accounts/my-account/projects/my-project/data/math-prompts-train/versions/1", - "eval": "azureai://accounts/my-account/projects/my-project/data/math-prompts-eval/versions/1", - "columns": { - "prompt": "prompt", - "reference": "answer" - }, - "dataFormat": { - "chatTemplate": "chatml" - } - }, - "runtime": { - "framework": "verl", - "judge": { - "kind": "builtin", - "type": "math_equivalence" - }, - "reference": { - "kind": "base_model" - }, - "rollout": { - "engine": "vllm", - "numGenerations": 8, - "maxCompletionLength": 512, - "temperature": 0.7, - "topP": 0.95, - "batchSize": 64, - "tensorParallelSize": 2 - }, - "hyperparameters": { - "learning_rate": 0.00001, - "kl_coefficient": 0.02 - }, - "lora": { - "rank": 16, - "alpha": 32, - "targetModules": "auto" - } - }, - "compute": { - "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", - "resources": { - "instanceCount": 4, - "instanceType": "Standard_NC96ads_A100_v4" - }, - "gpuCount": 32 - } + "title": "Models_CreateTrainingJobPolicyGradient_MaximumSet", + "operationId": "Models_createTrainingJob", + "parameters": { + "api-version": "v1", + "Operation-Id": "create-my-rloo-training-job-01", + "Foundry-Features": "TrainingJobs=V1Preview", + "job": { + "type": "policy_gradient", + "algorithm": "rloo", + "name": "qwen-rloo-math", + "version": "1", + "description": "RLOO policy model trained with a built-in math verifier", + "tags": { + "algorithm": "rloo" + }, + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "train": "azureai://accounts/my-account/projects/my-project/data/math-prompts-train/versions/1", + "eval": "azureai://accounts/my-account/projects/my-project/data/math-prompts-eval/versions/1", + "columns": { + "prompt": "prompt", + "reference": "answer" + }, + "data_format": { + "chatTemplate": "chatml" } - }, - "responses": { - "202": { - "headers": { - "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-rloo-training-job-01/result?api-version=v1" - }, - "body": { - "operationId": "create-my-rloo-training-job-01", - "status": "queued" - } + }, + "runtime": { + "framework": "verl", + "judge": { + "kind": "builtin", + "type": "math_equivalence" + }, + "reference": { + "kind": "base_model" + }, + "rollout": { + "engine": "vllm", + "numGenerations": 8, + "maxCompletionLength": 512, + "temperature": 0.7, + "topP": 0.95, + "batchSize": 64, + "tensorParallelSize": 2 + }, + "hyperparameters": { + "learning_rate": 0.00001, + "kl_coefficient": 0.02 + }, + "lora": { + "rank": 16, + "alpha": 32, + "targetModules": "auto" } + }, + "compute": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "resources": { + "instanceCount": 4, + "instanceType": "Standard_NC96ads_A100_v4" + }, + "gpu_count": 32 + } } -} \ No newline at end of file + }, + "responses": { + "202": { + "headers": { + "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-rloo-training-job-01/result?api-version=v1" + }, + "body": { + "operation_id": "create-my-rloo-training-job-01", + "status": "queued" + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPpo_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPpo_MaximumSet_Gen.json index d27fe7788de2..2a0151574fa2 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPpo_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPpo_MaximumSet_Gen.json @@ -1,78 +1,78 @@ { - "title": "Models_CreateTrainingJobPpo_MaximumSet", - "operationId": "Models_createTrainingJob", - "parameters": { - "api-version": "v1", - "Operation-Id": "create-my-ppo-training-job-01", - "Foundry-Features": "Jobs=V1Preview", - "job": { - "type": "ppo", - "name": "qwen-ppo-helpfulness", - "version": "1", - "description": "PPO policy model trained with a reward model judge", - "tags": { - "algorithm": "ppo" - }, - "model": "azureai://registries/azureml/models/qwen-base/versions/1", - "dataset": { - "train": "azureai://accounts/my-account/projects/my-project/data/helpfulness-prompts-train/versions/1", - "eval": "azureai://accounts/my-account/projects/my-project/data/helpfulness-prompts-eval/versions/1", - "columns": { - "prompt": "prompt", - "reference": "reference" - }, - "dataFormat": { - "chatTemplate": "chatml" - } - }, - "runtime": { - "framework": "open_rlhf", - "judge": { - "kind": "model", - "model": "azureai://accounts/my-account/projects/my-project/models/qwen-helpfulness-reward-model/versions/1" - }, - "reference": { - "kind": "base_model" - }, - "critic": { - "valueLossCoefficient": 0.1, - "gamma": 1.0, - "lambda": 0.95 - }, - "rollout": { - "engine": "vllm", - "numGenerations": 4, - "maxCompletionLength": 512, - "temperature": 0.8, - "topP": 0.95, - "batchSize": 64, - "tensorParallelSize": 2 - }, - "hyperparameters": { - "learning_rate": 0.000005, - "clip_range": 0.2, - "kl_coefficient": 0.02 - } - }, - "compute": { - "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", - "resources": { - "instanceCount": 4, - "instanceType": "Standard_NC96ads_A100_v4" - }, - "gpuCount": 32 - } + "title": "Models_CreateTrainingJobPpo_MaximumSet", + "operationId": "Models_createTrainingJob", + "parameters": { + "api-version": "v1", + "Operation-Id": "create-my-ppo-training-job-01", + "Foundry-Features": "TrainingJobs=V1Preview", + "job": { + "type": "ppo", + "name": "qwen-ppo-helpfulness", + "version": "1", + "description": "PPO policy model trained with a reward model judge", + "tags": { + "algorithm": "ppo" + }, + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "train": "azureai://accounts/my-account/projects/my-project/data/helpfulness-prompts-train/versions/1", + "eval": "azureai://accounts/my-account/projects/my-project/data/helpfulness-prompts-eval/versions/1", + "columns": { + "prompt": "prompt", + "reference": "reference" + }, + "data_format": { + "chatTemplate": "chatml" } - }, - "responses": { - "202": { - "headers": { - "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-ppo-training-job-01/result?api-version=v1" - }, - "body": { - "operationId": "create-my-ppo-training-job-01", - "status": "queued" - } + }, + "runtime": { + "framework": "open_rlhf", + "judge": { + "kind": "model", + "model": "azureai://accounts/my-account/projects/my-project/models/qwen-helpfulness-reward-model/versions/1" + }, + "reference": { + "kind": "base_model" + }, + "critic": { + "value_loss_coefficient": 0.1, + "gamma": 1, + "lambda": 0.95 + }, + "rollout": { + "engine": "vllm", + "numGenerations": 4, + "maxCompletionLength": 512, + "temperature": 0.8, + "topP": 0.95, + "batchSize": 64, + "tensorParallelSize": 2 + }, + "hyperparameters": { + "learning_rate": 0.000005, + "clip_range": 0.2, + "kl_coefficient": 0.02 } + }, + "compute": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "resources": { + "instanceCount": 4, + "instanceType": "Standard_NC96ads_A100_v4" + }, + "gpu_count": 32 + } } -} \ No newline at end of file + }, + "responses": { + "202": { + "headers": { + "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-ppo-training-job-01/result?api-version=v1" + }, + "body": { + "operation_id": "create-my-ppo-training-job-01", + "status": "queued" + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPreference_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPreference_MaximumSet_Gen.json index 0fabc6b6620f..343dfcf62310 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPreference_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobPreference_MaximumSet_Gen.json @@ -4,7 +4,7 @@ "parameters": { "api-version": "v1", "Operation-Id": "create-my-dpo-training-job-01", - "Foundry-Features": "Jobs=V1Preview", + "Foundry-Features": "TrainingJobs=V1Preview", "job": { "type": "preference", "algorithm": "dpo", @@ -23,7 +23,7 @@ "chosen": "chosen", "rejected": "rejected" }, - "dataFormat": { + "data_format": { "chatTemplate": "chatml" } }, @@ -54,7 +54,7 @@ "instanceCount": 2, "instanceType": "Standard_NC96ads_A100_v4" }, - "gpuCount": 16 + "gpu_count": 16 } } }, @@ -64,9 +64,9 @@ "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-dpo-training-job-01/result?api-version=v1" }, "body": { - "operationId": "create-my-dpo-training-job-01", + "operation_id": "create-my-dpo-training-job-01", "status": "queued" } } } -} \ No newline at end of file +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobRewardModel_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobRewardModel_MaximumSet_Gen.json index 0b4617ddd561..5639a4ea13b4 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobRewardModel_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobRewardModel_MaximumSet_Gen.json @@ -1,64 +1,64 @@ { - "title": "Models_CreateTrainingJobRewardModel_MaximumSet", - "operationId": "Models_createTrainingJob", - "parameters": { - "api-version": "v1", - "Operation-Id": "create-my-reward-model-training-job-01", - "Foundry-Features": "Jobs=V1Preview", - "job": { - "type": "reward_model", - "name": "qwen-helpfulness-reward-model", - "version": "1", - "description": "Reward model trained from pairwise helpfulness preferences", - "tags": { - "algorithm": "reward_model" - }, - "model": "azureai://registries/azureml/models/qwen-base/versions/1", - "dataset": { - "kind": "pairwise", - "train": "azureai://accounts/my-account/projects/my-project/data/reward-train/versions/1", - "eval": "azureai://accounts/my-account/projects/my-project/data/reward-eval/versions/1", - "columns": { - "prompt": "prompt", - "chosen": "chosen", - "rejected": "rejected" - }, - "dataFormat": { - "chatTemplate": "chatml" - } - }, - "runtime": { - "framework": "trl", - "loss": "bradley_terry", - "hyperparameters": { - "learning_rate": 0.00002, - "num_train_epochs": 2 - }, - "lora": { - "rank": 8, - "alpha": 16, - "targetModules": "auto" - } - }, - "compute": { - "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", - "resources": { - "instanceCount": 2, - "instanceType": "Standard_NC96ads_A100_v4" - }, - "gpuCount": 16 - } + "title": "Models_CreateTrainingJobRewardModel_MaximumSet", + "operationId": "Models_createTrainingJob", + "parameters": { + "api-version": "v1", + "Operation-Id": "create-my-reward-model-training-job-01", + "Foundry-Features": "TrainingJobs=V1Preview", + "job": { + "type": "reward_model", + "name": "qwen-helpfulness-reward-model", + "version": "1", + "description": "Reward model trained from pairwise helpfulness preferences", + "tags": { + "algorithm": "reward_model" + }, + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "kind": "pairwise", + "train": "azureai://accounts/my-account/projects/my-project/data/reward-train/versions/1", + "eval": "azureai://accounts/my-account/projects/my-project/data/reward-eval/versions/1", + "columns": { + "prompt": "prompt", + "chosen": "chosen", + "rejected": "rejected" + }, + "data_format": { + "chatTemplate": "chatml" } - }, - "responses": { - "202": { - "headers": { - "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-reward-model-training-job-01/result?api-version=v1" - }, - "body": { - "operationId": "create-my-reward-model-training-job-01", - "status": "queued" - } + }, + "runtime": { + "framework": "trl", + "loss": "bradley_terry", + "hyperparameters": { + "learning_rate": 0.00002, + "num_train_epochs": 2 + }, + "lora": { + "rank": 8, + "alpha": 16, + "targetModules": "auto" } + }, + "compute": { + "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "resources": { + "instanceCount": 2, + "instanceType": "Standard_NC96ads_A100_v4" + }, + "gpu_count": 16 + } } -} \ No newline at end of file + }, + "responses": { + "202": { + "headers": { + "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-reward-model-training-job-01/result?api-version=v1" + }, + "body": { + "operation_id": "create-my-reward-model-training-job-01", + "status": "queued" + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobSft_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobSft_MaximumSet_Gen.json index eeabcda79631..432035249a47 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobSft_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_CreateTrainingJobSft_MaximumSet_Gen.json @@ -4,7 +4,7 @@ "parameters": { "api-version": "v1", "Operation-Id": "create-my-sft-training-job-01", - "Foundry-Features": "Jobs=V1Preview", + "Foundry-Features": "TrainingJobs=V1Preview", "job": { "type": "sft", "name": "qwen-medical-sft", @@ -20,7 +20,7 @@ "columns": { "messages": "messages" }, - "dataFormat": { + "data_format": { "chatTemplate": "chatml" } }, @@ -49,7 +49,7 @@ "instanceCount": 2, "instanceType": "Standard_NC6s_v3" }, - "gpuCount": 4 + "gpu_count": 4 } } }, @@ -59,9 +59,9 @@ "Operation-Location": "https://my-account.services.ai.azure.com/api/projects/my-project/models/operations/create-my-sft-training-job-01/result?api-version=v1" }, "body": { - "operationId": "create-my-sft-training-job-01", + "operation_id": "create-my-sft-training-job-01", "status": "queued" } } } -} \ No newline at end of file +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_GetTrainingOperationResult_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_GetTrainingOperationResult_MaximumSet_Gen.json index 18cc5859deda..029b17e2fb31 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_GetTrainingOperationResult_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/Models_GetTrainingOperationResult_MaximumSet_Gen.json @@ -3,13 +3,13 @@ "operationId": "Models_getTrainingOperationResult", "parameters": { "api-version": "v1", - "Foundry-Features": "Jobs=V1Preview", - "operationId": "create-my-grpo-training-job-01" + "Foundry-Features": "TrainingJobs=V1Preview", + "operation_id": "create-my-grpo-training-job-01" }, "responses": { "200": { "body": { - "operationId": "create-my-grpo-training-job-01", + "operation_id": "create-my-grpo-training-job-01", "status": "succeeded", "result": { "id": "azureai://accounts/my-account/projects/my-project/models/qwen-reasoning-grpo/versions/1", @@ -20,8 +20,8 @@ "algorithm": "grpo" }, "uri": "azureml://locations/eastus2/workspaces/00000000-0000-0000-0000-000000000000/models/qwen-reasoning-grpo/versions/1", - "baseModel": "azureai://registries/azureml/models/qwen-base/versions/1", - "trainingJob": "grpo-qwen-reasoning-01" + "base_model": "azureai://registries/azureml/models/qwen-base/versions/1", + "training_job": "grpo-qwen-reasoning-01" } } } diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginCancel_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginCancel_MaximumSet_Gen.json index 019686c1aea3..c00a0da539de 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginCancel_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginCancel_MaximumSet_Gen.json @@ -5,7 +5,7 @@ "api-version": "v1", "name": "my_training_job_01", "x-ms-client-request-id": "cf35b680-dc80-4815-ab83-9364acc3bce6", - "Foundry-Features": "Jobs=V1Preview" + "Foundry-Features": "TrainingJobs=V1Preview" }, "responses": { "202": { diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginDelete_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginDelete_MaximumSet_Gen.json index d090b6e5c8c8..9135d5afebaa 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginDelete_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_BeginDelete_MaximumSet_Gen.json @@ -5,7 +5,7 @@ "api-version": "v1", "name": "my_training_job_01", "x-ms-client-request-id": "cf35b680-dc80-4815-ab83-9364acc3bce6", - "Foundry-Features": "Jobs=V1Preview" + "Foundry-Features": "TrainingJobs=V1Preview" }, "responses": { "202": { diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_CreateRayCommandJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_CreateRayCommandJob_MaximumSet_Gen.json index 8549b604f85f..894a84e58080 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_CreateRayCommandJob_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_CreateRayCommandJob_MaximumSet_Gen.json @@ -4,11 +4,11 @@ "parameters": { "api-version": "v1", "Operation-Id": "create-ray-command-job-01", - "Foundry-Features": "Jobs=V1Preview", + "Foundry-Features": "TrainingJobs=V1Preview", "job": { "name": "ray-command-job-01", "properties": { - "jobType": "Command", + "job_type": "command", "displayName": "interactive-ray-4node", "description": "Interactive Ray command job (4 nodes)", "tags": { @@ -16,9 +16,9 @@ }, "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", "command": "python -c \"import time; print('Ray cluster ready'); time.sleep(86400)\"", - "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04", + "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04", "distribution": { - "distributionType": "Ray", + "distributionType": "ray", "port": 6379, "includeDashboard": true, "dashboardPort": 8265, @@ -37,7 +37,7 @@ "name": "ray-command-job-01", "type": "Microsoft.MachineLearningServices/workspaces/training_jobs", "properties": { - "jobType": "Command", + "job_type": "command", "displayName": "interactive-ray-4node", "description": "Interactive Ray command job (4 nodes)", "tags": { @@ -45,9 +45,9 @@ }, "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", "command": "python -c \"import time; print('Ray cluster ready'); time.sleep(86400)\"", - "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04", + "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04", "distribution": { - "distributionType": "Ray", + "distributionType": "ray", "port": 6379, "includeDashboard": true, "dashboardPort": 8265, @@ -61,4 +61,4 @@ } } } -} \ No newline at end of file +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json index fcfa9ff289b1..81b93db1a71b 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json @@ -4,10 +4,10 @@ "parameters": { "api-version": "v1", "Operation-Id": "create-my-training-job-01", - "Foundry-Features": "Jobs=V1Preview", + "Foundry-Features": "TrainingJobs=V1Preview", "job": { "properties": { - "jobType": "Command", + "job_type": "command", "displayName": "My Training Job", "description": "A sample declarative training job", "tags": { @@ -36,7 +36,7 @@ "label": "label", "score": "score" }, - "dataFormat": { + "data_format": { "chatTemplate": "chatml" } }, @@ -75,23 +75,23 @@ }, "inputs": { "extra_context": { - "jobInputType": "uri_folder", + "job_input_type": "uri_folder", "uri": "azureai://datastores/mystore/paths/data/context", - "mode": "ReadOnlyMount" + "mode": "read_only_mount" }, "learning_rate": { - "jobInputType": "literal", + "job_input_type": "literal", "value": "0.001" } }, "outputs": { "model": { - "jobOutputType": "safetensors_model", - "mode": "ReadWriteMount", - "assetName": "my-trained-model", - "assetVersion": "1", + "job_output_type": "safetensors_model", + "mode": "read_write_mount", + "asset_name": "my-trained-model", + "asset_version": "1", "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", - "baseModelId": "azureai://registries/azureml/models/qwen-base/versions/1", + "base_model_id": "azureai://registries/azureml/models/qwen-base/versions/1", "description": "Trained model output" } }, @@ -104,15 +104,15 @@ "shmSize": "2g", "dockerArgs": "--privileged" }, - "gpuCount": 4, + "gpu_count": 4, "limits": { - "jobLimitsType": "Command", + "job_limits_type": "command", "timeout": "PT2H30M" }, - "queueSettings": { + "queue_settings": { "jobTier": "Standard" }, - "userAssignedIdentityId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity" + "user_assigned_identity_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity" } } }, @@ -123,7 +123,7 @@ "name": "my_training_job_01", "type": "Microsoft.MachineLearningServices/workspaces/training_jobs", "properties": { - "jobType": "Command", + "job_type": "command", "displayName": "My Training Job", "description": "A sample declarative training job", "tags": { @@ -154,7 +154,7 @@ "label": "label", "score": "score" }, - "dataFormat": { + "data_format": { "chatTemplate": "chatml" } }, @@ -193,23 +193,23 @@ }, "inputs": { "extra_context": { - "jobInputType": "uri_folder", + "job_input_type": "uri_folder", "uri": "azureai://datastores/mystore/paths/data/context", - "mode": "ReadOnlyMount" + "mode": "read_only_mount" }, "learning_rate": { - "jobInputType": "literal", + "job_input_type": "literal", "value": "0.001" } }, "outputs": { "model": { - "jobOutputType": "safetensors_model", - "mode": "ReadWriteMount", - "assetName": "my-trained-model", - "assetVersion": "1", + "job_output_type": "safetensors_model", + "mode": "read_write_mount", + "asset_name": "my-trained-model", + "asset_version": "1", "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", - "baseModelId": "azureai://registries/azureml/models/qwen-base/versions/1", + "base_model_id": "azureai://registries/azureml/models/qwen-base/versions/1", "description": "Trained model output" } }, @@ -222,26 +222,26 @@ "shmSize": "2g", "dockerArgs": "--privileged" }, - "gpuCount": 4, + "gpu_count": 4, "limits": { - "jobLimitsType": "Command", + "job_limits_type": "command", "timeout": "PT2H30M" }, - "queueSettings": { + "queue_settings": { "jobTier": "Standard" }, - "userAssignedIdentityId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", + "user_assigned_identity_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", "status": "NotStarted" }, - "systemData": { - "createdAt": "2020-01-01T12:34:56.999Z", - "createdBy": "user@example.com", - "createdByType": "User", - "lastModifiedAt": "2020-01-01T12:34:56.999Z", - "lastModifiedBy": "user@example.com", - "lastModifiedByType": "User" + "system_data": { + "created_at": 1577882096, + "created_by": "user@example.com", + "created_by_type": "User", + "last_modified_at": 1577882096, + "last_modified_by": "user@example.com", + "last_modified_by_type": "User" } } } } -} \ No newline at end of file +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json index 6c74944270ad..422fdb1bbb5c 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json @@ -4,10 +4,10 @@ "parameters": { "api-version": "v1", "Operation-Id": "create-my-training-job-01", - "Foundry-Features": "Jobs=V1Preview", + "Foundry-Features": "TrainingJobs=V1Preview", "job": { "properties": { - "jobType": "Command", + "job_type": "command", "training": { "algorithm": "sft", "model": "azureai://registries/azureml/models/qwen-base/versions/1", @@ -24,7 +24,7 @@ "body": { "name": "my_training_job_01", "properties": { - "jobType": "Command", + "job_type": "command", "training": { "algorithm": "sft", "model": "azureai://registries/azureml/models/qwen-base/versions/1", diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json index 60d345aa6a8f..61e94677462b 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json @@ -5,7 +5,7 @@ "api-version": "v1", "name": "my_training_job_01", "x-ms-client-request-id": "cf35b680-dc80-4815-ab83-9364acc3bce6", - "Foundry-Features": "Jobs=V1Preview" + "Foundry-Features": "TrainingJobs=V1Preview" }, "responses": { "200": { @@ -14,9 +14,9 @@ "name": "my_training_job_01", "type": "Microsoft.MachineLearningServices/workspaces/training_jobs", "properties": { - "jobType": "Command", + "job_type": "command", "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", - "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", + "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", "displayName": "My Training Job", "description": "A sample command job for training", "tags": { @@ -29,23 +29,23 @@ "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster", "inputs": { "training_data": { - "jobInputType": "uri_folder", + "job_input_type": "uri_folder", "uri": "azureai://datastores/mystore/paths/data/train", - "mode": "ReadOnlyMount" + "mode": "read_only_mount" }, "learning_rate": { - "jobInputType": "literal", + "job_input_type": "literal", "value": "0.001" } }, "outputs": { "model": { - "jobOutputType": "uri_folder", - "mode": "ReadWriteMount", - "assetName": "my-trained-model", - "assetVersion": "1", + "job_output_type": "uri_folder", + "mode": "read_write_mount", + "asset_name": "my-trained-model", + "asset_version": "1", "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", - "baseModelId": "azureai:qwen-base-model:1", + "base_model_id": "azureai:qwen-base-model:1", "description": "Trained model output" } }, @@ -53,7 +53,7 @@ "AZUREML_DATASET_FILE": "/mnt/data/train.csv" }, "distribution": { - "distributionType": "PyTorch", + "distributionType": "pytorch", "processCountPerInstance": 4 }, "resources": { @@ -63,33 +63,33 @@ "dockerArgs": "--privileged" }, "limits": { - "jobLimitsType": "Command", + "job_limits_type": "command", "timeout": "PT2H30M" }, "services": { - "Studio": { - "jobServiceType": "Studio", + "studio": { + "job_service_type": "studio", "port": 8080, "endpoint": "https://studio.example.com" }, - "Tracking": { - "jobServiceType": "Tracking" + "tracking": { + "job_service_type": "tracking" } }, - "queueSettings": { + "queue_settings": { "jobTier": "Standard" }, - "userAssignedIdentityId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", - "status": "Running", + "user_assigned_identity_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", + "status": "running", "isArchived": false }, - "systemData": { - "createdAt": "2020-01-01T12:34:56.999Z", - "createdBy": "user@example.com", - "createdByType": "User", - "lastModifiedAt": "2020-01-01T12:34:56.999Z", - "lastModifiedBy": "user@example.com", - "lastModifiedByType": "User" + "system_data": { + "created_at": 1577882096, + "created_by": "user@example.com", + "created_by_type": "User", + "last_modified_at": 1577882096, + "last_modified_by": "user@example.com", + "last_modified_by_type": "User" } } } diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MinimumSet_Gen.json index b4f26effd1fc..92570d9d8ab8 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MinimumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MinimumSet_Gen.json @@ -10,9 +10,9 @@ "body": { "name": "my_training_job_01", "properties": { - "jobType": "Command", + "job_type": "command", "command": "python train.py", - "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest" + "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest" } } } diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MaximumSet_Gen.json index 5f37c4227a44..774812dc157e 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MaximumSet_Gen.json @@ -3,12 +3,12 @@ "operationId": "TrainingJobs_List", "parameters": { "api-version": "v1", - "jobType": "Command", + "job_type": "command", "tag": "framework=pytorch", - "listViewType": "ActiveOnly", + "list_view_type": "active_only", "properties": "experimentName=my-experiment", "x-ms-client-request-id": "cf35b680-dc80-4815-ab83-9364acc3bce6", - "Foundry-Features": "Jobs=V1Preview" + "Foundry-Features": "TrainingJobs=V1Preview" }, "responses": { "200": { @@ -19,9 +19,9 @@ "name": "my_training_job_01", "type": "Microsoft.MachineLearningServices/workspaces/training_jobs", "properties": { - "jobType": "Command", + "job_type": "command", "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", - "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", + "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", "displayName": "My Training Job", "description": "A sample command job for training", "tags": { @@ -34,23 +34,23 @@ "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster", "inputs": { "training_data": { - "jobInputType": "uri_folder", + "job_input_type": "uri_folder", "uri": "azureai://datastores/mystore/paths/data/train", - "mode": "ReadOnlyMount" + "mode": "read_only_mount" }, "learning_rate": { - "jobInputType": "literal", + "job_input_type": "literal", "value": "0.001" } }, "outputs": { "model": { - "jobOutputType": "uri_folder", - "mode": "ReadWriteMount", - "assetName": "my-trained-model", - "assetVersion": "1", + "job_output_type": "uri_folder", + "mode": "read_write_mount", + "asset_name": "my-trained-model", + "asset_version": "1", "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", - "baseModelId": "azureai:qwen-base-model:1", + "base_model_id": "azureai:qwen-base-model:1", "description": "Trained model output" } }, @@ -58,7 +58,7 @@ "AZUREML_DATASET_FILE": "/mnt/data/train.csv" }, "distribution": { - "distributionType": "PyTorch", + "distributionType": "pytorch", "processCountPerInstance": 4 }, "resources": { @@ -68,33 +68,33 @@ "dockerArgs": "--privileged" }, "limits": { - "jobLimitsType": "Command", + "job_limits_type": "command", "timeout": "PT2H30M" }, "services": { - "Studio": { - "jobServiceType": "Studio", + "studio": { + "job_service_type": "studio", "port": 8080, "endpoint": "https://studio.example.com" }, - "Tracking": { - "jobServiceType": "Tracking" + "tracking": { + "job_service_type": "tracking" } }, - "queueSettings": { + "queue_settings": { "jobTier": "Standard" }, - "userAssignedIdentityId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", - "status": "Running", + "user_assigned_identity_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", + "status": "running", "isArchived": false }, - "systemData": { - "createdAt": "2020-01-01T12:34:56.999Z", - "createdBy": "user@example.com", - "createdByType": "User", - "lastModifiedAt": "2020-01-01T12:34:56.999Z", - "lastModifiedBy": "user@example.com", - "lastModifiedByType": "User" + "system_data": { + "created_at": 1577882096, + "created_by": "user@example.com", + "created_by_type": "User", + "last_modified_at": 1577882096, + "last_modified_by": "user@example.com", + "last_modified_by_type": "User" } } ], diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MinimumSet_Gen.json index 25c369cec0a8..8912a5570fd7 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MinimumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MinimumSet_Gen.json @@ -11,9 +11,9 @@ { "name": "my_training_job_01", "properties": { - "jobType": "Command", + "job_type": "command", "command": "python train.py", - "environmentImageReference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest" + "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest" } } ] diff --git a/specification/ai-foundry/data-plane/Foundry/main.tsp b/specification/ai-foundry/data-plane/Foundry/main.tsp index 9406a94257ed..d707a7b90764 100644 --- a/specification/ai-foundry/data-plane/Foundry/main.tsp +++ b/specification/ai-foundry/data-plane/Foundry/main.tsp @@ -25,4 +25,4 @@ import "./src/red-teams/routes.tsp"; import "./src/schedules/routes.tsp"; import "./src/skills/routes.tsp"; import "./src/toolsets/routes.tsp"; -import "./src/jobs/routes.tsp"; +import "./src/training_jobs/routes.tsp"; diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index e41020fb661c..8ac58f1f62dd 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -7087,7 +7087,7 @@ } } }, - "/models/operations/{operationId}/result": { + "/models/operations/{operation_id}/result": { "get": { "operationId": "Models_getTrainingOperationResult", "description": "Poll the result of a managed model training operation.", @@ -7100,12 +7100,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "operationId", + "name": "operation_id", "in": "path", "required": true, "description": "The managed model training operation identifier.", @@ -7164,7 +7164,7 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, @@ -11704,10 +11704,19 @@ "description": "List training jobs.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] + } }, { - "name": "jobType", + "name": "job_type", "in": "query", "required": false, "description": "Filter by job type (e.g. 'Command').", @@ -11727,7 +11736,7 @@ "explode": false }, { - "name": "listViewType", + "name": "list_view_type", "in": "query", "required": false, "description": "Specifies which view type to apply when listing jobs.", @@ -11747,16 +11756,56 @@ "explode": false }, { - "name": "Foundry-Features", - "in": "header", + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The API version to use for this operation.", "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } + "type": "string" + }, + "explode": false } ], "responses": { @@ -11765,26 +11814,43 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJob" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Job" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } @@ -11806,7 +11872,7 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, @@ -11868,7 +11934,7 @@ } } }, - "/training_jobs/operations/{operationId}/result": { + "/training_jobs/operations/{operation_id}/result": { "get": { "operationId": "TrainingJobOperations_getOperationResult", "description": "Poll the result of an asynchronous training job operation.", @@ -11881,12 +11947,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "operationId", + "name": "operation_id", "in": "path", "required": true, "description": "The operation identifier returned by a training job create, cancel, or delete request.", @@ -11951,7 +12017,7 @@ ] } }, - "/training_jobs/operations/{operationId}/status": { + "/training_jobs/operations/{operation_id}/status": { "get": { "operationId": "TrainingJobOperations_getOperationStatus", "description": "Poll the status of an asynchronous training job operation.", @@ -11964,12 +12030,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "operationId", + "name": "operation_id", "in": "path", "required": true, "description": "The operation identifier returned by a training job create, cancel, or delete request.", @@ -12015,7 +12081,7 @@ ] } }, - "/training_jobs/{jobName}/attempts": { + "/training_jobs/{job_name}/attempts": { "get": { "operationId": "TrainingJobAttempts_listAttempts", "description": "List attempts for a training job.", @@ -12028,12 +12094,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -12042,105 +12108,42 @@ } }, { - "name": "skipToken", + "name": "limit", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string" + "type": "integer", + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobAttempt" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/latest/artifacts": { - "get": { - "operationId": "TrainingJobArtifacts_listArtifacts", - "description": "List artifacts for the latest attempt of a training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "limit", + "name": "order", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, { - "name": "skipToken", + "name": "after", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { "type": "string" }, "explode": false }, { - "name": "pathPrefix", + "name": "before", "in": "query", "required": false, - "description": "Artifact path prefix to list.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, @@ -12163,7 +12166,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobAttempt" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -12184,10 +12213,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/artifacts:content": { + "/training_jobs/{job_name}/attempts/{attempt_id}": { "get": { - "operationId": "TrainingJobArtifacts_downloadArtifact", - "description": "Download artifact content from the latest attempt of a training job.", + "operationId": "TrainingJobAttempts_getAttempt", + "description": "Get one attempt for a training job.", "parameters": [ { "name": "Foundry-Features", @@ -12197,12 +12226,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -12211,90 +12240,14 @@ } }, { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/octet-stream": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/latest/artifacts:contentInfo": { - "get": { - "operationId": "TrainingJobArtifacts_getArtifactContentInfo", - "description": "Get download information for an artifact from the latest attempt of a training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", + "name": "attempt_id", "in": "path", "required": true, - "description": "The training job name.", + "description": "The attempt identifier.", "schema": { "type": "string" } }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -12312,7 +12265,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobArtifactContentInfo" + "$ref": "#/components/schemas/JobAttempt" } } } @@ -12333,10 +12286,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/artifacts:contentInfoByPrefix": { + "/training_jobs/{job_name}/attempts/{attempt_id}/artifacts": { "get": { - "operationId": "TrainingJobArtifacts_getArtifactContentInfoByPrefix", - "description": "List download information for artifacts under a path prefix from the latest attempt of a training job.", + "operationId": "TrainingJobAttemptArtifacts_listAttemptArtifacts", + "description": "List artifacts for a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -12346,12 +12299,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -12360,20 +12313,61 @@ } }, { - "name": "pathPrefix", + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, + { + "name": "limit", "in": "query", "required": false, - "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, "explode": false }, { - "name": "skipToken", + "name": "path_prefix", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "Artifact path prefix to list.", "schema": { "type": "string" }, @@ -12396,7 +12390,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifactContentInfo" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobArtifact" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -12417,10 +12437,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/artifacts:metadata": { + "/training_jobs/{job_name}/attempts/{attempt_id}/artifacts/content": { "get": { - "operationId": "TrainingJobArtifacts_getArtifactMetadata", - "description": "Get metadata for an artifact from the latest attempt of a training job.", + "operationId": "TrainingJobAttemptArtifacts_downloadAttemptArtifact", + "description": "Download artifact content from a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -12430,12 +12450,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -12443,6 +12463,15 @@ "type": "string" } }, + { + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, { "name": "path", "in": "query", @@ -12468,9 +12497,10 @@ "200": { "description": "The request has succeeded.", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/JobArtifact" + "type": "string", + "format": "binary" } } } @@ -12491,10 +12521,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/metrics": { + "/training_jobs/{job_name}/attempts/{attempt_id}/artifacts/content_info": { "get": { - "operationId": "TrainingJobMetrics_listMetrics", - "description": "List metrics emitted by the latest attempt of a training job.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfo", + "description": "Get download information for an artifact from a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -12504,12 +12534,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -12518,21 +12548,19 @@ } }, { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false + "$ref": "#/components/schemas/JobAttemptIdentifier" + } }, { - "name": "skipToken", + "name": "path", "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", + "required": true, + "description": "The artifact path.", "schema": { "type": "string" }, @@ -12555,7 +12583,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetric" + "$ref": "#/components/schemas/JobArtifactContentInfo" } } } @@ -12576,10 +12604,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}": { + "/training_jobs/{job_name}/attempts/{attempt_id}/artifacts/content_info_by_prefix": { "get": { - "operationId": "TrainingJobMetrics_getMetric", - "description": "Get the full history for a metric from the latest attempt of a training job.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfoByPrefix", + "description": "List download information for artifacts under a path prefix from a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -12589,12 +12617,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -12603,66 +12631,63 @@ } }, { - "name": "metricName", + "name": "attempt_id", "in": "path", "required": true, - "description": "The metric name.", + "description": "The attempt identifier, or 'latest' for the latest attempt.", "schema": { - "type": "string" + "$ref": "#/components/schemas/JobAttemptIdentifier" } }, { - "name": "startTimeUtc", + "name": "path_prefix", "in": "query", "required": false, - "description": "Start of the metric time range.", + "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", "schema": { - "type": "string", - "format": "date-time" + "type": "string" }, "explode": false }, { - "name": "endTimeUtc", + "name": "limit", "in": "query", "required": false, - "description": "End of the metric time range.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string", - "format": "date-time" + "type": "integer", + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "minStep", + "name": "order", "in": "query", "required": false, - "description": "Minimum metric step to include.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "integer", - "format": "int64" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, { - "name": "maxStep", + "name": "after", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "before", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -12683,7 +12708,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobArtifactContentInfo" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -12704,10 +12755,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:aggregates": { + "/training_jobs/{job_name}/attempts/{attempt_id}/artifacts/metadata": { "get": { - "operationId": "TrainingJobMetrics_getMetricAggregates", - "description": "Get aggregate metric values from the latest attempt of a training job.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactMetadata", + "description": "Get metadata for an artifact from a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -12717,12 +12768,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -12731,66 +12782,21 @@ } }, { - "name": "metricName", + "name": "attempt_id", "in": "path", "required": true, - "description": "The metric name.", + "description": "The attempt identifier, or 'latest' for the latest attempt.", "schema": { - "type": "string" + "$ref": "#/components/schemas/JobAttemptIdentifier" } }, { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", + "name": "path", "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", + "required": true, + "description": "The artifact path.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -12811,7 +12817,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" + "$ref": "#/components/schemas/JobArtifact" } } } @@ -12832,10 +12838,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:sample": { + "/training_jobs/{job_name}/attempts/{attempt_id}/metrics": { "get": { - "operationId": "TrainingJobMetrics_getMetricSample", - "description": "Get one sampled value or window from the latest attempt of a training job.", + "operationId": "TrainingJobAttemptMetrics_listAttemptMetrics", + "description": "List metrics emitted by a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -12845,12 +12851,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -12859,66 +12865,53 @@ } }, { - "name": "metricName", + "name": "attempt_id", "in": "path", "required": true, - "description": "The metric name.", + "description": "The attempt identifier, or 'latest' for the latest attempt.", "schema": { - "type": "string" + "$ref": "#/components/schemas/JobAttemptIdentifier" } }, { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", + "name": "limit", "in": "query", "required": false, - "description": "End of the metric time range.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { - "type": "string", - "format": "date-time" + "type": "integer", + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "minStep", + "name": "order", "in": "query", "required": false, - "description": "Minimum metric step to include.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "integer", - "format": "int64" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, { - "name": "maxStep", + "name": "after", "in": "query", "required": false, - "description": "Maximum metric step to include.", + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", "schema": { - "type": "integer", - "format": "int64" + "type": "string" }, "explode": false }, { - "name": "limit", + "name": "before", "in": "query", "required": false, - "description": "Maximum number of metric points to return.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" }, "explode": false }, @@ -12939,7 +12932,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetric" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -12960,728 +12979,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:samples": { + "/training_jobs/{job_name}/attempts/{attempt_id}/metrics/last_values": { "get": { - "operationId": "TrainingJobMetrics_getMetricSamples", - "description": "Get sampled metric values from the latest attempt of a training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobMetricSample" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/latest/metrics:lastValues": { - "get": { - "operationId": "TrainingJobMetrics_getMetricLastValues", - "description": "Get the latest values for metrics emitted by the latest attempt of a training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}": { - "get": { - "operationId": "TrainingJobAttempts_getAttempt", - "description": "Get one attempt for a training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobAttempt" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts": { - "get": { - "operationId": "TrainingJobAttemptArtifacts_listAttemptArtifacts", - "description": "List artifacts for a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "pathPrefix", - "in": "query", - "required": false, - "description": "Artifact path prefix to list.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:content": { - "get": { - "operationId": "TrainingJobAttemptArtifacts_downloadAttemptArtifact", - "description": "Download artifact content from a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/octet-stream": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfo": { - "get": { - "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfo", - "description": "Get download information for an artifact from a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobArtifactContentInfo" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfoByPrefix": { - "get": { - "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfoByPrefix", - "description": "List download information for artifacts under a path prefix from a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "pathPrefix", - "in": "query", - "required": false, - "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobArtifactContentInfo" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:metadata": { - "get": { - "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactMetadata", - "description": "Get metadata for an artifact from a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobArtifact" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics": { - "get": { - "operationId": "TrainingJobAttemptMetrics_listAttemptMetrics", - "description": "List metrics emitted by a specific training job attempt.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricLastValues", + "description": "Get latest metric values for a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -13691,12 +12992,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -13705,36 +13006,14 @@ } }, { - "name": "attemptId", + "name": "attempt_id", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The attempt identifier, or 'latest' for the latest attempt.", "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/JobAttemptIdentifier" } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -13752,7 +13031,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetric" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricLastValue" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -13773,10 +13078,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}": { + "/training_jobs/{job_name}/attempts/{attempt_id}/metrics/{metric_name}": { "get": { "operationId": "TrainingJobAttemptMetrics_getAttemptMetric", - "description": "Get the full history for a metric from a specific training job attempt.", + "description": "Get the full history for a metric from a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -13786,12 +13091,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -13800,17 +13105,16 @@ } }, { - "name": "attemptId", + "name": "attempt_id", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The attempt identifier, or 'latest' for the latest attempt.", "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/JobAttemptIdentifier" } }, { - "name": "metricName", + "name": "metric_name", "in": "path", "required": true, "description": "The metric name.", @@ -13819,29 +13123,27 @@ } }, { - "name": "startTimeUtc", + "name": "started_at", "in": "query", "required": false, "description": "Start of the metric time range.", "schema": { - "type": "string", - "format": "date-time" + "$ref": "#/components/schemas/FoundryTimestamp" }, "explode": false }, { - "name": "endTimeUtc", + "name": "ended_at", "in": "query", "required": false, "description": "End of the metric time range.", "schema": { - "type": "string", - "format": "date-time" + "$ref": "#/components/schemas/FoundryTimestamp" }, "explode": false }, { - "name": "minStep", + "name": "min_step", "in": "query", "required": false, "description": "Minimum metric step to include.", @@ -13852,7 +13154,7 @@ "explode": false }, { - "name": "maxStep", + "name": "max_step", "in": "query", "required": false, "description": "Maximum metric step to include.", @@ -13890,7 +13192,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricPoint" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -13911,286 +13239,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates": { + "/training_jobs/{job_name}/attempts/{attempt_id}/metrics/{metric_name}/aggregates": { "get": { "operationId": "TrainingJobAttemptMetrics_getAttemptMetricAggregates", - "description": "Get aggregate metric values from a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample": { - "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSample", - "description": "Get one sampled value or window from a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobMetricSample" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples": { - "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSamples", - "description": "Get sampled metric values from a specific training job attempt.", + "description": "Get aggregate metric values from a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14200,12 +13252,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -14214,17 +13266,16 @@ } }, { - "name": "attemptId", + "name": "attempt_id", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The attempt identifier, or 'latest' for the latest attempt.", "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/JobAttemptIdentifier" } }, { - "name": "metricName", + "name": "metric_name", "in": "path", "required": true, "description": "The metric name.", @@ -14233,29 +13284,27 @@ } }, { - "name": "startTimeUtc", + "name": "started_at", "in": "query", "required": false, "description": "Start of the metric time range.", "schema": { - "type": "string", - "format": "date-time" + "$ref": "#/components/schemas/FoundryTimestamp" }, "explode": false }, { - "name": "endTimeUtc", + "name": "ended_at", "in": "query", "required": false, "description": "End of the metric time range.", "schema": { - "type": "string", - "format": "date-time" + "$ref": "#/components/schemas/FoundryTimestamp" }, "explode": false }, { - "name": "minStep", + "name": "min_step", "in": "query", "required": false, "description": "Minimum metric step to include.", @@ -14266,7 +13315,7 @@ "explode": false }, { - "name": "maxStep", + "name": "max_step", "in": "query", "required": false, "description": "Maximum metric step to include.", @@ -14304,7 +13353,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricAggregate" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -14325,10 +13400,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics:lastValues": { + "/training_jobs/{job_name}/attempts/{attempt_id}/metrics/{metric_name}/sample": { "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetricLastValues", - "description": "Get latest metric values for a specific training job attempt.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSample", + "description": "Get one sampled value or window from a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14338,12 +13413,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -14352,15 +13427,211 @@ } }, { - "name": "attemptId", + "name": "attempt_id", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, + { + "name": "metric_name", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "started_at", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "$ref": "#/components/schemas/FoundryTimestamp" + }, + "explode": false + }, + { + "name": "ended_at", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "$ref": "#/components/schemas/FoundryTimestamp" + }, + "explode": false + }, + { + "name": "min_step", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "max_step", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", "schema": { "type": "integer", "format": "int32" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobMetricSample" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{job_name}/attempts/{attempt_id}/metrics/{metric_name}/samples": { + "get": { + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSamples", + "description": "Get sampled metric values from a training job attempt. Use 'latest' for the latest attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] } }, + { + "name": "job_name", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, + { + "name": "metric_name", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "started_at", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "$ref": "#/components/schemas/FoundryTimestamp" + }, + "explode": false + }, + { + "name": "ended_at", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "$ref": "#/components/schemas/FoundryTimestamp" + }, + "explode": false + }, + { + "name": "min_step", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "max_step", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -14378,7 +13649,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -14399,7 +13670,7 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/outputs": { + "/training_jobs/{job_name}/attempts/{attempt_id}/outputs": { "get": { "operationId": "TrainingJobAttemptOutputs_listAttemptOutputs", "description": "List outputs produced by a specific training job attempt.", @@ -14412,12 +13683,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -14426,13 +13697,12 @@ } }, { - "name": "attemptId", + "name": "attempt_id", "in": "path", "required": true, "description": "The attempt identifier.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, { @@ -14452,7 +13722,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobOutputReference" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -14473,7 +13769,7 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}": { + "/training_jobs/{job_name}/attempts/{attempt_id}/outputs/{output_name}": { "get": { "operationId": "TrainingJobAttemptOutputs_getAttemptOutput", "description": "Get one output produced by a specific training job attempt.", @@ -14486,12 +13782,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -14500,17 +13796,16 @@ } }, { - "name": "attemptId", + "name": "attempt_id", "in": "path", "required": true, "description": "The attempt identifier.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, { - "name": "outputName", + "name": "output_name", "in": "path", "required": true, "description": "The output name.", @@ -14556,7 +13851,7 @@ ] } }, - "/training_jobs/{jobName}/outputs": { + "/training_jobs/{job_name}/outputs": { "get": { "operationId": "TrainingJobOutputs_listOutputs", "description": "List outputs produced by a training job.", @@ -14569,12 +13864,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -14599,7 +13894,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobOutputReference" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -14620,7 +13941,7 @@ ] } }, - "/training_jobs/{jobName}/outputs/{outputName}": { + "/training_jobs/{job_name}/outputs/{output_name}": { "get": { "operationId": "TrainingJobOutputs_getOutput", "description": "Get one output produced by a training job.", @@ -14633,12 +13954,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -14647,7 +13968,7 @@ } }, { - "name": "outputName", + "name": "output_name", "in": "path", "required": true, "description": "The output name.", @@ -14693,7 +14014,7 @@ ] } }, - "/training_jobs/{jobName}/services": { + "/training_jobs/{job_name}/services": { "get": { "operationId": "TrainingJobs_showServices", "description": "List service endpoints for the current view of a training job.", @@ -14706,12 +14027,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -14720,7 +14041,7 @@ } }, { - "name": "nodeId", + "name": "node_id", "in": "query", "required": false, "description": "Node identifier whose service endpoints should be returned. If omitted, leader-node services are returned.", @@ -14793,7 +14114,7 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } } @@ -14857,7 +14178,7 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } } @@ -14943,7 +14264,7 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } } @@ -17619,10 +16940,10 @@ "type": "string", "enum": [ "chatml", - "llama-3", + "llama_3", "zephyr", "gemma", - "phi-3" + "phi_3" ] } ], @@ -17725,14 +17046,14 @@ "CommandJob": { "type": "object", "required": [ - "jobType", - "computeId" + "job_type", + "compute_id" ], "properties": { - "jobType": { + "job_type": { "type": "string", "enum": [ - "Command" + "command" ], "description": "Job type." }, @@ -17740,7 +17061,7 @@ "type": "string", "description": "The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified." }, - "environmentImageReference": { + "environment_image_reference": { "type": "string", "description": "ACR path or Azure ML environment reference. Required when training is not specified." }, @@ -17752,7 +17073,7 @@ ], "description": "Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution." }, - "displayName": { + "display_name": { "type": "string", "description": "Display name of job." }, @@ -17774,11 +17095,11 @@ }, "description": "The asset property dictionary." }, - "codeId": { + "code_id": { "type": "string", "description": "Code asset reference." }, - "computeId": { + "compute_id": { "type": "string", "description": "Compute resource ID." }, @@ -17796,7 +17117,7 @@ }, "description": "Mapping of output data bindings used in the job." }, - "environmentVariables": { + "environment_variables": { "type": "object", "additionalProperties": { "type": "string" @@ -17811,7 +17132,7 @@ ], "description": "Compute Resource configuration for the job." }, - "gpuCount": { + "gpu_count": { "type": "integer", "format": "int32", "description": "Number of GPUs requested by the training job." @@ -17832,7 +17153,7 @@ ], "description": "Command Job limit." }, - "queueSettings": { + "queue_settings": { "allOf": [ { "$ref": "#/components/schemas/QueueSettings" @@ -17840,7 +17161,7 @@ ], "description": "Queue settings for the job." }, - "userAssignedIdentityId": { + "user_assigned_identity_id": { "type": "string", "description": "user-assigned managed identity" }, @@ -17860,13 +17181,13 @@ "CommandJobLimits": { "type": "object", "required": [ - "jobLimitsType" + "job_limits_type" ], "properties": { - "jobLimitsType": { + "job_limits_type": { "type": "string", "enum": [ - "Command" + "command" ], "description": "JobLimit type." }, @@ -18940,21 +18261,21 @@ "DistributionConfiguration": { "type": "object", "required": [ - "distributionType" + "distribution_type" ], "properties": { - "distributionType": { + "distribution_type": { "type": "string", "description": "Specifies the type of distribution framework." } }, "discriminator": { - "propertyName": "distributionType", + "propertyName": "distribution_type", "mapping": { - "PyTorch": "#/components/schemas/PyTorchDistribution", - "Mpi": "#/components/schemas/MpiDistribution", - "TensorFlow": "#/components/schemas/TensorFlowDistribution", - "Ray": "#/components/schemas/RayDistribution" + "pytorch": "#/components/schemas/PyTorchDistribution", + "mpi": "#/components/schemas/MpiDistribution", + "tensorflow": "#/components/schemas/TensorFlowDistribution", + "ray": "#/components/schemas/RayDistribution" } }, "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, Ray, or null." @@ -20838,6 +20159,11 @@ ], "description": "FileDatasetVersion Definition" }, + "FoundryTimestamp": { + "type": "integer", + "format": "unixtime", + "description": "Unix timestamp in seconds used by Foundry data-plane resources." + }, "FunctionToolCall": { "type": "object", "required": [ @@ -20950,7 +20276,7 @@ ], "description": "Mapping from online RL logical fields to actual dataset column names. GRPO, policy-gradient, and PPO require the 'prompt' logical field and can optionally map 'reference'." }, - "dataFormat": { + "data_format": { "allOf": [ { "$ref": "#/components/schemas/TrainingDataFormatConfiguration" @@ -21293,10 +20619,10 @@ "Input": { "type": "object", "required": [ - "jobInputType" + "job_input_type" ], "properties": { - "jobInputType": { + "job_input_type": { "allOf": [ { "$ref": "#/components/schemas/AssetTypes" @@ -21331,11 +20657,11 @@ { "type": "string", "enum": [ - "ReadOnlyMount", - "ReadWriteMount", - "Download", - "Direct", - "Upload" + "read_only_mount", + "read_write_mount", + "download", + "direct", + "upload" ] } ], @@ -21732,7 +21058,7 @@ ], "description": "Properties of the job." }, - "systemData": { + "system_data": { "allOf": [ { "$ref": "#/components/schemas/SystemData" @@ -21747,7 +21073,8 @@ "JobArtifact": { "type": "object", "required": [ - "path" + "path", + "type" ], "properties": { "path": { @@ -21770,15 +21097,21 @@ "description": "Artifact size in bytes.", "readOnly": true }, - "createdTimeUtc": { - "type": "string", - "format": "date-time", + "created_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Time the artifact was created.", "readOnly": true }, - "updatedTimeUtc": { - "type": "string", - "format": "date-time", + "updated_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Time the artifact was last updated.", "readOnly": true } @@ -21788,7 +21121,8 @@ "JobArtifactContentInfo": { "type": "object", "required": [ - "path" + "path", + "content_uri" ], "properties": { "path": { @@ -21796,20 +21130,23 @@ "description": "Artifact path relative to the job artifact root.", "readOnly": true }, - "contentUri": { + "content_uri": { "type": "string", "format": "uri", "description": "Download URI for the artifact content.", "readOnly": true }, - "contentType": { + "content_type": { "type": "string", "description": "MIME type of the content.", "readOnly": true }, - "expiresAtUtc": { - "type": "string", - "format": "date-time", + "expires_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Time the content URI expires.", "readOnly": true } @@ -21824,8 +21161,8 @@ { "type": "string", "enum": [ - "File", - "Directory" + "file", + "directory" ] } ], @@ -21835,7 +21172,7 @@ "type": "object", "required": [ "id", - "jobName" + "job_name" ], "properties": { "id": { @@ -21843,7 +21180,7 @@ "description": "The attempt identifier.", "readOnly": true }, - "jobName": { + "job_name": { "type": "string", "description": "The job name this attempt belongs to.", "readOnly": true @@ -21857,42 +21194,51 @@ "description": "The attempt status.", "readOnly": true }, - "statusReason": { + "status_reason": { "type": "string", "description": "Additional status reason.", "readOnly": true }, - "startTimeUtc": { - "type": "string", - "format": "date-time", + "started_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Time the attempt started.", "readOnly": true }, - "endTimeUtc": { - "type": "string", - "format": "date-time", + "ended_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Time the attempt ended.", "readOnly": true }, - "lastStartTimeUtc": { - "type": "string", - "format": "date-time", + "last_started_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Most recent time the attempt started running.", "readOnly": true }, - "computeDuration": { + "compute_duration": { "type": "string", "format": "duration", "description": "Total compute duration consumed by the attempt.", "readOnly": true }, - "queueingInfo": { + "queueing_info": { "type": "object", "additionalProperties": {}, "description": "Queueing details associated with the attempt.", "readOnly": true }, - "computeDetails": { + "compute_details": { "allOf": [ { "$ref": "#/components/schemas/JobAttemptComputeDetails" @@ -21918,7 +21264,7 @@ "description": "Warnings emitted for the attempt.", "readOnly": true }, - "isCurrent": { + "is_latest": { "type": "boolean", "description": "Whether this attempt is the current attempt for the job.", "readOnly": true @@ -21929,23 +21275,23 @@ "JobAttemptComputeDetails": { "type": "object", "properties": { - "vmSize": { + "vm_size": { "type": "string", "description": "Virtual machine size used for this attempt.", "readOnly": true }, - "instanceType": { + "instance_type": { "type": "string", "description": "Instance type used for this attempt.", "readOnly": true }, - "instanceCount": { + "instance_count": { "type": "integer", "format": "int32", "description": "Number of instances allocated to this attempt.", "readOnly": true }, - "gpuCount": { + "gpu_count": { "type": "integer", "format": "int32", "description": "Number of GPUs allocated to this attempt.", @@ -21986,6 +21332,20 @@ }, "description": "Error emitted during a job attempt." }, + "JobAttemptIdentifier": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "latest" + ] + } + ], + "description": "Training job attempt identifier. Use 'latest' for the latest attempt." + }, "JobAttemptStatus": { "anyOf": [ { @@ -21994,11 +21354,11 @@ { "type": "string", "enum": [ - "Queued", - "Running", - "Completed", - "Failed", - "Canceled" + "queued", + "running", + "completed", + "failed", + "canceled" ] } ], @@ -22056,7 +21416,7 @@ "description": "Metric name.", "readOnly": true }, - "metricType": { + "metric_type": { "allOf": [ { "$ref": "#/components/schemas/JobMetricType" @@ -22087,15 +21447,21 @@ "description": "Metric name.", "readOnly": true }, - "startUtc": { - "type": "string", - "format": "date-time", + "started_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Aggregate window start.", "readOnly": true }, - "endUtc": { - "type": "string", - "format": "date-time", + "ended_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Aggregate window end.", "readOnly": true }, @@ -22134,7 +21500,7 @@ "JobMetricPoint": { "type": "object", "properties": { - "metricId": { + "metric_id": { "type": "string", "description": "Metric identifier.", "readOnly": true @@ -22145,9 +21511,12 @@ "description": "Metric step.", "readOnly": true }, - "createdUtc": { - "type": "string", - "format": "date-time", + "created_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Time the metric point was created.", "readOnly": true }, @@ -22191,9 +21560,9 @@ { "type": "string", "enum": [ - "Scalar", - "Table", - "Image" + "scalar", + "table", + "image" ] } ], @@ -22249,19 +21618,25 @@ "description": "Operation result properties.", "readOnly": true }, - "startTime": { - "type": "string", - "format": "date-time", + "started_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Operation start time.", "readOnly": true }, - "endTime": { - "type": "string", - "format": "date-time", + "ended_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Operation end time.", "readOnly": true }, - "percentComplete": { + "percent_complete": { "type": "number", "format": "double", "description": "Operation completion percentage from 0 to 100.", @@ -22287,11 +21662,11 @@ { "type": "string", "enum": [ - "InProgress", - "Deleting", - "Succeeded", - "Failed", - "Canceled" + "in_progress", + "deleting", + "succeeded", + "failed", + "canceled" ] } ], @@ -22331,17 +21706,17 @@ "description": "Output storage URI.", "readOnly": true }, - "assetName": { + "asset_name": { "type": "string", "description": "Registered asset name, if the output produced an asset.", "readOnly": true }, - "assetVersion": { + "asset_version": { "type": "string", "description": "Registered asset version, if the output produced an asset.", "readOnly": true }, - "baseModelId": { + "base_model_id": { "type": "string", "description": "Base model ID for model outputs.", "readOnly": true @@ -22357,18 +21732,18 @@ "JobProperties": { "type": "object", "required": [ - "jobType" + "job_type" ], "properties": { - "jobType": { + "job_type": { "type": "string", "description": "Job type." } }, "discriminator": { - "propertyName": "jobType", + "propertyName": "job_type", "mapping": { - "Command": "#/components/schemas/CommandJob" + "command": "#/components/schemas/CommandJob" } }, "description": "Base properties of a Job." @@ -22376,12 +21751,12 @@ "JobResourceConfiguration": { "type": "object", "properties": { - "instanceCount": { + "instance_count": { "type": "integer", "format": "int32", "description": "Optional number of instances or nodes used by the compute target." }, - "instanceType": { + "instance_type": { "type": "string", "description": "Optional type of VM used as supported by the compute target." }, @@ -22390,17 +21765,32 @@ "additionalProperties": {}, "description": "Additional properties bag." }, - "shmSize": { + "shm_size": { "type": "string", "description": "Size of the docker container's shared memory block. This should be in the format of (number)(unit) where number as to be greater than 0 and the unit can be one of b(bytes), k(kilobytes), m(megabytes), or g(gigabytes)." }, - "dockerArgs": { + "docker_args": { "type": "string", "description": "Extra arguments to pass to the Docker run command. This would override any parameters that have already been set by the system, or in this section. This parameter is only supported for Azure ML compute types." } }, "description": "Compute Resource configuration for the job." }, + "JobServiceType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "studio", + "tracking" + ] + } + ], + "description": "Job service endpoint type." + }, "JobType": { "anyOf": [ { @@ -22409,7 +21799,7 @@ { "type": "string", "enum": [ - "Command" + "command" ] } ], @@ -22498,7 +21888,7 @@ ], "description": "Mapping from KTO logical fields to actual dataset column names. KTO requires 'prompt', 'response', and 'label'." }, - "dataFormat": { + "data_format": { "allOf": [ { "$ref": "#/components/schemas/TrainingDataFormatConfiguration" @@ -22563,12 +21953,12 @@ "additionalProperties": {}, "description": "Algorithm-specific hyperparameters passed through to the selected framework." }, - "desirableWeight": { + "desirable_weight": { "type": "number", "format": "double", "description": "Weight applied to desirable examples." }, - "undesirableWeight": { + "undesirable_weight": { "type": "number", "format": "double", "description": "Weight applied to undesirable examples." @@ -22608,9 +21998,9 @@ { "type": "string", "enum": [ - "ActiveOnly", - "ArchivedOnly", - "All" + "active_only", + "archived_only", + "all" ] } ], @@ -23438,12 +22828,12 @@ "description": "URI of the registered model artifact.", "readOnly": true }, - "baseModel": { + "base_model": { "type": "string", "description": "Base model used to create this model, when the model was produced by managed training.", "readOnly": true }, - "trainingJob": { + "training_job": { "type": "string", "description": "Backing training job that produced this model, when available.", "readOnly": true @@ -23590,7 +22980,7 @@ ], "description": "Compute resource configuration for the managed training job." }, - "gpuCount": { + "gpu_count": { "type": "integer", "format": "int32", "description": "Number of GPUs requested by the managed training job." @@ -23603,7 +22993,7 @@ ], "description": "Distribution configuration for the managed training job." }, - "queueSettings": { + "queue_settings": { "allOf": [ { "$ref": "#/components/schemas/QueueSettings" @@ -23611,7 +23001,7 @@ ], "description": "Queue settings for the managed training job." }, - "userAssignedIdentityId": { + "user_assigned_identity_id": { "type": "string", "description": "ARM resource ID of a user-assigned managed identity attached to the Foundry project." } @@ -23679,11 +23069,11 @@ "ModelTrainingOperation": { "type": "object", "required": [ - "operationId", + "operation_id", "status" ], "properties": { - "operationId": { + "operation_id": { "type": "string", "description": "Operation identifier for the managed model training request." }, @@ -23803,17 +23193,17 @@ "MpiDistribution": { "type": "object", "required": [ - "distributionType" + "distribution_type" ], "properties": { - "distributionType": { + "distribution_type": { "type": "string", "enum": [ - "Mpi" + "mpi" ], "description": "Specifies the type of distribution framework." }, - "processCountPerNode": { + "process_count_per_node": { "type": "integer", "format": "int32", "description": "Number of processes per MPI node." @@ -43678,10 +43068,10 @@ "Output": { "type": "object", "required": [ - "jobOutputType" + "job_output_type" ], "properties": { - "jobOutputType": { + "job_output_type": { "allOf": [ { "$ref": "#/components/schemas/AssetTypes" @@ -43697,11 +43087,11 @@ ], "description": "Output Asset Delivery Mode." }, - "assetName": { + "asset_name": { "type": "string", "description": "Name of the output data asset to register." }, - "assetVersion": { + "asset_version": { "type": "string", "description": "Version of the output data asset to register." }, @@ -43709,7 +43099,7 @@ "type": "string", "description": "Output Asset URI." }, - "baseModelId": { + "base_model_id": { "type": "string", "description": "Base model ID. Applies to safetensors_model outputs." }, @@ -43895,195 +43285,6 @@ }, "description": "Paged collection of Insight items" }, - "PagedJob": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Job" - }, - "description": "The Job items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of Job items" - }, - "PagedJobArtifact": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobArtifact" - }, - "description": "The JobArtifact items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobArtifact items" - }, - "PagedJobArtifactContentInfo": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobArtifactContentInfo" - }, - "description": "The JobArtifactContentInfo items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobArtifactContentInfo items" - }, - "PagedJobAttempt": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobAttempt" - }, - "description": "The JobAttempt items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobAttempt items" - }, - "PagedJobMetric": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetric" - }, - "description": "The JobMetric items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetric items" - }, - "PagedJobMetricAggregate": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetricAggregate" - }, - "description": "The JobMetricAggregate items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetricAggregate items" - }, - "PagedJobMetricLastValue": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetricLastValue" - }, - "description": "The JobMetricLastValue items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetricLastValue items" - }, - "PagedJobMetricPoint": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetricPoint" - }, - "description": "The JobMetricPoint items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetricPoint items" - }, - "PagedJobOutputReference": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobOutputReference" - }, - "description": "The JobOutputReference items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobOutputReference items" - }, "PagedRedTeam": { "type": "object", "required": [ @@ -44193,7 +43394,7 @@ ], "description": "Mapping from pairwise preference logical fields to actual dataset column names. DPO, ORPO, CPO, and SimPO require 'prompt', 'chosen', and 'rejected'." }, - "dataFormat": { + "data_format": { "allOf": [ { "$ref": "#/components/schemas/TrainingDataFormatConfiguration" @@ -44235,7 +43436,7 @@ ], "description": "Mapping from pairwise reward-model logical fields to actual dataset column names. Pairwise reward-model training requires 'prompt', 'chosen', and 'rejected'." }, - "dataFormat": { + "data_format": { "allOf": [ { "$ref": "#/components/schemas/TrainingDataFormatConfiguration" @@ -44443,7 +43644,7 @@ "type": "string", "description": "Optional critic model asset reference. If omitted, the service initializes the critic from the policy model." }, - "valueLossCoefficient": { + "value_loss_coefficient": { "type": "number", "format": "double", "description": "Value loss coefficient." @@ -44890,17 +44091,17 @@ "PyTorchDistribution": { "type": "object", "required": [ - "distributionType" + "distribution_type" ], "properties": { - "distributionType": { + "distribution_type": { "type": "string", "enum": [ - "PyTorch" + "pytorch" ], "description": "Specifies the type of distribution framework." }, - "processCountPerInstance": { + "process_count_per_instance": { "type": "integer", "format": "int32", "description": "Number of processes per node." @@ -44916,7 +44117,7 @@ "QueueSettings": { "type": "object", "properties": { - "jobTier": { + "job_tier": { "type": "string", "description": "Controls the compute job tier." } @@ -44939,13 +44140,13 @@ "RayDistribution": { "type": "object", "required": [ - "distributionType" + "distribution_type" ], "properties": { - "distributionType": { + "distribution_type": { "type": "string", "enum": [ - "Ray" + "ray" ], "description": "Specifies the type of distribution framework." }, @@ -44958,31 +44159,31 @@ "type": "string", "description": "The address of the Ray head node." }, - "includeDashboard": { + "include_dashboard": { "type": "boolean", "description": "Whether to start the Ray dashboard GUI." }, - "dashboardPort": { + "dashboard_port": { "type": "integer", "format": "int32", "description": "The port to bind the dashboard server to." }, - "headNodeAdditionalArgs": { + "head_node_additional_args": { "type": "string", "description": "Additional arguments passed to ray start on the head node." }, - "workerNodeAdditionalArgs": { + "worker_node_additional_args": { "type": "string", "description": "Additional arguments passed to ray start on worker nodes." }, - "enableRemoteAccessClientServer": { + "enable_remote_access_client_server": { "type": "boolean", "description": "Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally." }, - "clientServerPort": { + "client_server_port": { "type": "integer", "format": "int32", - "description": "The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true." + "description": "The port for the Ray Client server. Defaults to 10001. Only relevant when enable_remote_access_client_server is true." } }, "allOf": [ @@ -45962,7 +45163,7 @@ ], "description": "Mapping from scored reward-model logical fields to actual dataset column names. Scored reward-model training requires 'prompt', 'response', and 'score'." }, - "dataFormat": { + "data_format": { "allOf": [ { "$ref": "#/components/schemas/TrainingDataFormatConfiguration" @@ -46051,7 +45252,7 @@ ], "description": "Mapping from SFT logical fields to actual dataset column names. SFT requires the 'messages' logical field." }, - "dataFormat": { + "data_format": { "allOf": [ { "$ref": "#/components/schemas/TrainingDataFormatConfiguration" @@ -46587,35 +45788,41 @@ "SystemData": { "type": "object", "properties": { - "createdBy": { + "created_by": { "type": "string", "description": "The identity that created the resource.", "readOnly": true }, - "createdByType": { + "created_by_type": { "type": "string", "description": "The type of identity that created the resource.", "readOnly": true }, - "createdAt": { - "type": "string", - "format": "date-time", + "created_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "The timestamp of resource creation (UTC).", "readOnly": true }, - "lastModifiedBy": { + "last_modified_by": { "type": "string", "description": "The identity that last modified the resource.", "readOnly": true }, - "lastModifiedByType": { + "last_modified_by_type": { "type": "string", "description": "The type of identity that last modified the resource.", "readOnly": true }, - "lastModifiedAt": { - "type": "string", - "format": "date-time", + "last_modified_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "The timestamp of resource last modification (UTC).", "readOnly": true } @@ -46814,22 +46021,22 @@ "TensorFlowDistribution": { "type": "object", "required": [ - "distributionType" + "distribution_type" ], "properties": { - "distributionType": { + "distribution_type": { "type": "string", "enum": [ - "TensorFlow" + "tensorflow" ], "description": "Specifies the type of distribution framework." }, - "workerCount": { + "worker_count": { "type": "integer", "format": "int32", "description": "Number of workers. If not specified, will default to the instance count." }, - "parameterServerCount": { + "parameter_server_count": { "type": "integer", "format": "int32", "description": "Number of parameter server tasks." @@ -47188,7 +46395,7 @@ ], "description": "Training framework implementation. If omitted, the service selects a compatible framework for the algorithm and records the resolved framework on the job." }, - "resolvedFramework": { + "resolved_framework": { "allOf": [ { "$ref": "#/components/schemas/TrainingFramework" @@ -47197,7 +46404,7 @@ "description": "Training framework resolved by the service.", "readOnly": true }, - "frameworkVersion": { + "framework_version": { "type": "string", "description": "Version of the resolved training framework used by the service.", "readOnly": true @@ -47236,12 +46443,12 @@ "reward_model": "#/components/schemas/RewardModelTrainingConfiguration" } }, - "description": "Declarative training recipe. When specified, command must be omitted and environmentImageReference is optional." + "description": "Declarative training recipe. When specified, command must be omitted and environment_image_reference is optional." }, "TrainingDataFormatConfiguration": { "type": "object", "properties": { - "chatTemplate": { + "chat_template": { "allOf": [ { "$ref": "#/components/schemas/ChatTemplate" @@ -47249,7 +46456,7 @@ ], "description": "Built-in chat template to apply to the dataset." }, - "chatTemplatePath": { + "chat_template_path": { "type": "string", "description": "Path to a custom chat template relative to the job's code directory." } @@ -47278,7 +46485,7 @@ ], "description": "Mapping from training fields to dataset columns." }, - "dataFormat": { + "data_format": { "allOf": [ { "$ref": "#/components/schemas/TrainingDataFormatConfiguration" @@ -47322,10 +46529,10 @@ "TrainingEntryPointReference": { "type": "object", "required": [ - "entryPoint" + "entry_point" ], "properties": { - "entryPoint": { + "entry_point": { "type": "string", "description": "Path to the Python callable in module/file.py:function format." } @@ -47366,7 +46573,7 @@ "type": "string", "description": "Custom evaluation dataset asset reference. Mutually exclusive with benchmark." }, - "everyNSteps": { + "every_n_steps": { "type": "integer", "format": "int32", "description": "Evaluation frequency in training steps. Omit for end-of-training only." @@ -47392,7 +46599,7 @@ "type": "string", "description": "Evaluator asset reference." }, - "inputMapping": { + "input_mapping": { "type": "object", "additionalProperties": { "type": "string" @@ -47524,7 +46731,11 @@ "type": "object", "properties": { "type": { - "type": "string", + "allOf": [ + { + "$ref": "#/components/schemas/JobServiceType" + } + ], "description": "Service type.", "readOnly": true }, @@ -47547,6 +46758,7 @@ }, "endpoint": { "type": "string", + "format": "uri", "description": "Service endpoint URI.", "readOnly": true }, @@ -47592,7 +46804,8 @@ "alpha": { "type": "integer", "format": "int32", - "description": "LoRA scaling factor." + "description": "LoRA scaling factor.", + "default": 16 }, "dropout": { "type": "number", @@ -47600,7 +46813,7 @@ "description": "Dropout applied to adapter inputs.", "default": 0.05 }, - "targetModules": { + "target_modules": { "type": "string", "description": "Linear layers that receive adapters. Use 'auto' to let the framework choose defaults.", "default": "auto" @@ -47646,7 +46859,11 @@ ], "properties": { "kind": { - "type": "string", + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardKind" + } + ], "description": "Reward or judge signal kind." } }, @@ -47664,6 +46881,26 @@ }, "description": "Reward or judge signal configuration for reinforcement or reward model training." }, + "TrainingRewardKind": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "model", + "function", + "inline_function", + "builtin", + "evaluator", + "deployment", + "composite" + ] + } + ], + "description": "Reward or judge signal kind." + }, "TrainingRolloutConfiguration": { "type": "object", "required": [ @@ -47678,17 +46915,17 @@ ], "description": "Rollout inference engine." }, - "numGenerations": { + "num_generations": { "type": "integer", "format": "int32", "description": "Number of completions to generate for each prompt." }, - "maxPromptLength": { + "max_prompt_length": { "type": "integer", "format": "int32", "description": "Maximum prompt length in tokens." }, - "maxCompletionLength": { + "max_completion_length": { "type": "integer", "format": "int32", "description": "Maximum completion length in tokens." @@ -47698,7 +46935,7 @@ "format": "double", "description": "Sampling temperature for rollout generation." }, - "topP": { + "top_p": { "type": "number", "format": "double", "description": "Nucleus sampling probability for rollout generation." @@ -47710,7 +46947,7 @@ }, "description": "Stop sequences for rollout generation." }, - "batchSize": { + "batch_size": { "type": "integer", "format": "int32", "description": "Rollout batch size." @@ -47720,13 +46957,13 @@ "format": "int32", "description": "Random seed for rollout generation." }, - "tensorParallelSize": { + "tensor_parallel_size": { "type": "integer", "format": "int32", "description": "Tensor parallel size used by the rollout engine.", "default": 1 }, - "gpuMemoryUtilization": { + "gpu_memory_utilization": { "type": "number", "format": "double", "description": "GPU memory utilization target for the rollout engine, between 0.0 and 1.0." diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 6c3c82db6d71..2b5143f0c414 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -9781,7 +9781,7 @@ } } }, - "/models/operations/{operationId}/result": { + "/models/operations/{operation_id}/result": { "get": { "operationId": "Models_getTrainingOperationResult", "description": "Poll the result of a managed model training operation.", @@ -9794,12 +9794,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "operationId", + "name": "operation_id", "in": "path", "required": true, "description": "The managed model training operation identifier.", @@ -9858,7 +9858,7 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, @@ -14422,10 +14422,19 @@ "description": "List training jobs.", "parameters": [ { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] + } }, { - "name": "jobType", + "name": "job_type", "in": "query", "required": false, "description": "Filter by job type (e.g. 'Command').", @@ -14445,7 +14454,7 @@ "explode": false }, { - "name": "listViewType", + "name": "list_view_type", "in": "query", "required": false, "description": "Specifies which view type to apply when listing jobs.", @@ -14465,16 +14474,56 @@ "explode": false }, { - "name": "Foundry-Features", - "in": "header", + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "description": "The API version to use for this operation.", "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } + "type": "string" + }, + "explode": false } ], "responses": { @@ -14483,26 +14532,43 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJob" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Job" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } @@ -14524,7 +14590,7 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, @@ -14586,7 +14652,7 @@ } } }, - "/training_jobs/operations/{operationId}/result": { + "/training_jobs/operations/{operation_id}/result": { "get": { "operationId": "TrainingJobOperations_getOperationResult", "description": "Poll the result of an asynchronous training job operation.", @@ -14599,12 +14665,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "operationId", + "name": "operation_id", "in": "path", "required": true, "description": "The operation identifier returned by a training job create, cancel, or delete request.", @@ -14669,7 +14735,7 @@ ] } }, - "/training_jobs/operations/{operationId}/status": { + "/training_jobs/operations/{operation_id}/status": { "get": { "operationId": "TrainingJobOperations_getOperationStatus", "description": "Poll the status of an asynchronous training job operation.", @@ -14682,12 +14748,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "operationId", + "name": "operation_id", "in": "path", "required": true, "description": "The operation identifier returned by a training job create, cancel, or delete request.", @@ -14733,7 +14799,7 @@ ] } }, - "/training_jobs/{jobName}/attempts": { + "/training_jobs/{job_name}/attempts": { "get": { "operationId": "TrainingJobAttempts_listAttempts", "description": "List attempts for a training job.", @@ -14746,12 +14812,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -14760,10 +14826,42 @@ } }, { - "name": "skipToken", + "name": "limit", + "in": "query", + "required": false, + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, @@ -14786,7 +14884,106 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobAttempt" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobAttempt" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{job_name}/attempts/{attempt_id}": { + "get": { + "operationId": "TrainingJobAttempts_getAttempt", + "description": "Get one attempt for a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] + } + }, + { + "name": "job_name", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobAttempt" } } } @@ -14807,10 +15004,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/artifacts": { + "/training_jobs/{job_name}/attempts/{attempt_id}/artifacts": { "get": { - "operationId": "TrainingJobArtifacts_listArtifacts", - "description": "List artifacts for the latest attempt of a training job.", + "operationId": "TrainingJobAttemptArtifacts_listAttemptArtifacts", + "description": "List artifacts for a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14820,12 +15017,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -14833,29 +15030,59 @@ "type": "string" } }, + { + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, { "name": "limit", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { "type": "integer", - "format": "int32" + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "skipToken", + "name": "order", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, "explode": false }, { - "name": "pathPrefix", + "name": "path_prefix", "in": "query", "required": false, "description": "Artifact path prefix to list.", @@ -14881,7 +15108,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobArtifact" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -14902,10 +15155,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/artifacts:content": { + "/training_jobs/{job_name}/attempts/{attempt_id}/artifacts/content": { "get": { - "operationId": "TrainingJobArtifacts_downloadArtifact", - "description": "Download artifact content from the latest attempt of a training job.", + "operationId": "TrainingJobAttemptArtifacts_downloadAttemptArtifact", + "description": "Download artifact content from a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14915,12 +15168,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -14928,6 +15181,15 @@ "type": "string" } }, + { + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, { "name": "path", "in": "query", @@ -14977,10 +15239,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/artifacts:contentInfo": { + "/training_jobs/{job_name}/attempts/{attempt_id}/artifacts/content_info": { "get": { - "operationId": "TrainingJobArtifacts_getArtifactContentInfo", - "description": "Get download information for an artifact from the latest attempt of a training job.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfo", + "description": "Get download information for an artifact from a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -14990,12 +15252,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -15003,6 +15265,15 @@ "type": "string" } }, + { + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, { "name": "path", "in": "query", @@ -15051,10 +15322,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/artifacts:contentInfoByPrefix": { + "/training_jobs/{job_name}/attempts/{attempt_id}/artifacts/content_info_by_prefix": { "get": { - "operationId": "TrainingJobArtifacts_getArtifactContentInfoByPrefix", - "description": "List download information for artifacts under a path prefix from the latest attempt of a training job.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfoByPrefix", + "description": "List download information for artifacts under a path prefix from a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -15064,12 +15335,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -15078,7 +15349,16 @@ } }, { - "name": "pathPrefix", + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, + { + "name": "path_prefix", "in": "query", "required": false, "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", @@ -15088,10 +15368,42 @@ "explode": false }, { - "name": "skipToken", + "name": "limit", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + }, + "explode": false + }, + { + "name": "order", + "in": "query", + "required": false, + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, @@ -15114,7 +15426,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifactContentInfo" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobArtifactContentInfo" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -15135,10 +15473,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/artifacts:metadata": { + "/training_jobs/{job_name}/attempts/{attempt_id}/artifacts/metadata": { "get": { - "operationId": "TrainingJobArtifacts_getArtifactMetadata", - "description": "Get metadata for an artifact from the latest attempt of a training job.", + "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactMetadata", + "description": "Get metadata for an artifact from a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -15148,12 +15486,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -15161,6 +15499,15 @@ "type": "string" } }, + { + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, { "name": "path", "in": "query", @@ -15209,10 +15556,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/metrics": { + "/training_jobs/{job_name}/attempts/{attempt_id}/metrics": { "get": { - "operationId": "TrainingJobMetrics_listMetrics", - "description": "List metrics emitted by the latest attempt of a training job.", + "operationId": "TrainingJobAttemptMetrics_listAttemptMetrics", + "description": "List metrics emitted by a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -15222,12 +15569,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -15235,22 +15582,52 @@ "type": "string" } }, + { + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, { "name": "limit", "in": "query", "required": false, - "description": "Maximum number of items to return.", + "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", "schema": { "type": "integer", - "format": "int32" + "format": "int32", + "default": 20 }, "explode": false }, { - "name": "skipToken", + "name": "order", "in": "query", "required": false, - "description": "Continuation token returned by a previous list request.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", + "schema": { + "$ref": "#/components/schemas/PageOrder" + }, + "explode": false + }, + { + "name": "after", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `after` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include after=obj_foo in order to fetch the next page of the list.", + "schema": { + "type": "string" + }, + "explode": false + }, + { + "name": "before", + "in": "query", + "required": false, + "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", "schema": { "type": "string" }, @@ -15273,7 +15650,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetric" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetric" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -15294,10 +15697,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}": { + "/training_jobs/{job_name}/attempts/{attempt_id}/metrics/last_values": { "get": { - "operationId": "TrainingJobMetrics_getMetric", - "description": "Get the full history for a metric from the latest attempt of a training job.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricLastValues", + "description": "Get latest metric values for a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -15307,12 +15710,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -15321,69 +15724,14 @@ } }, { - "name": "metricName", + "name": "attempt_id", "in": "path", "required": true, - "description": "The metric name.", + "description": "The attempt identifier, or 'latest' for the latest attempt.", "schema": { - "type": "string" + "$ref": "#/components/schemas/JobAttemptIdentifier" } }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -15401,7 +15749,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricLastValue" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -15422,10 +15796,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:aggregates": { + "/training_jobs/{job_name}/attempts/{attempt_id}/metrics/{metric_name}": { "get": { - "operationId": "TrainingJobMetrics_getMetricAggregates", - "description": "Get aggregate metric values from the latest attempt of a training job.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetric", + "description": "Get the full history for a metric from a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -15435,12 +15809,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -15449,7 +15823,16 @@ } }, { - "name": "metricName", + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, + { + "name": "metric_name", "in": "path", "required": true, "description": "The metric name.", @@ -15458,29 +15841,27 @@ } }, { - "name": "startTimeUtc", + "name": "started_at", "in": "query", "required": false, "description": "Start of the metric time range.", "schema": { - "type": "string", - "format": "date-time" + "$ref": "#/components/schemas/FoundryTimestamp" }, "explode": false }, { - "name": "endTimeUtc", + "name": "ended_at", "in": "query", "required": false, "description": "End of the metric time range.", "schema": { - "type": "string", - "format": "date-time" + "$ref": "#/components/schemas/FoundryTimestamp" }, "explode": false }, { - "name": "minStep", + "name": "min_step", "in": "query", "required": false, "description": "Minimum metric step to include.", @@ -15491,7 +15872,7 @@ "explode": false }, { - "name": "maxStep", + "name": "max_step", "in": "query", "required": false, "description": "Maximum metric step to include.", @@ -15529,7 +15910,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricPoint" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -15550,10 +15957,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:sample": { + "/training_jobs/{job_name}/attempts/{attempt_id}/metrics/{metric_name}/aggregates": { "get": { - "operationId": "TrainingJobMetrics_getMetricSample", - "description": "Get one sampled value or window from the latest attempt of a training job.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricAggregates", + "description": "Get aggregate metric values from a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -15563,12 +15970,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -15577,7 +15984,16 @@ } }, { - "name": "metricName", + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, + { + "name": "metric_name", "in": "path", "required": true, "description": "The metric name.", @@ -15586,29 +16002,27 @@ } }, { - "name": "startTimeUtc", + "name": "started_at", "in": "query", "required": false, "description": "Start of the metric time range.", "schema": { - "type": "string", - "format": "date-time" + "$ref": "#/components/schemas/FoundryTimestamp" }, "explode": false }, { - "name": "endTimeUtc", + "name": "ended_at", "in": "query", "required": false, "description": "End of the metric time range.", "schema": { - "type": "string", - "format": "date-time" + "$ref": "#/components/schemas/FoundryTimestamp" }, "explode": false }, { - "name": "minStep", + "name": "min_step", "in": "query", "required": false, "description": "Minimum metric step to include.", @@ -15619,7 +16033,7 @@ "explode": false }, { - "name": "maxStep", + "name": "max_step", "in": "query", "required": false, "description": "Maximum metric step to include.", @@ -15657,7 +16071,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobMetricSample" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricAggregate" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -15678,10 +16118,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:samples": { + "/training_jobs/{job_name}/attempts/{attempt_id}/metrics/{metric_name}/sample": { "get": { - "operationId": "TrainingJobMetrics_getMetricSamples", - "description": "Get sampled metric values from the latest attempt of a training job.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSample", + "description": "Get one sampled value or window from a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -15691,12 +16131,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -15705,7 +16145,16 @@ } }, { - "name": "metricName", + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, + { + "name": "metric_name", "in": "path", "required": true, "description": "The metric name.", @@ -15714,29 +16163,27 @@ } }, { - "name": "startTimeUtc", + "name": "started_at", "in": "query", "required": false, "description": "Start of the metric time range.", "schema": { - "type": "string", - "format": "date-time" + "$ref": "#/components/schemas/FoundryTimestamp" }, "explode": false }, { - "name": "endTimeUtc", + "name": "ended_at", "in": "query", "required": false, "description": "End of the metric time range.", "schema": { - "type": "string", - "format": "date-time" + "$ref": "#/components/schemas/FoundryTimestamp" }, "explode": false }, { - "name": "minStep", + "name": "min_step", "in": "query", "required": false, "description": "Minimum metric step to include.", @@ -15747,7 +16194,7 @@ "explode": false }, { - "name": "maxStep", + "name": "max_step", "in": "query", "required": false, "description": "Maximum metric step to include.", @@ -15806,10 +16253,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/latest/metrics:lastValues": { + "/training_jobs/{job_name}/attempts/{attempt_id}/metrics/{metric_name}/samples": { "get": { - "operationId": "TrainingJobMetrics_getMetricLastValues", - "description": "Get the latest values for metrics emitted by the latest attempt of a training job.", + "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSamples", + "description": "Get sampled metric values from a training job attempt. Use 'latest' for the latest attempt.", "parameters": [ { "name": "Foundry-Features", @@ -15819,12 +16266,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -15832,6 +16279,77 @@ "type": "string" } }, + { + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, + { + "name": "metric_name", + "in": "path", + "required": true, + "description": "The metric name.", + "schema": { + "type": "string" + } + }, + { + "name": "started_at", + "in": "query", + "required": false, + "description": "Start of the metric time range.", + "schema": { + "$ref": "#/components/schemas/FoundryTimestamp" + }, + "explode": false + }, + { + "name": "ended_at", + "in": "query", + "required": false, + "description": "End of the metric time range.", + "schema": { + "$ref": "#/components/schemas/FoundryTimestamp" + }, + "explode": false + }, + { + "name": "min_step", + "in": "query", + "required": false, + "description": "Minimum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "max_step", + "in": "query", + "required": false, + "description": "Maximum metric step to include.", + "schema": { + "type": "integer", + "format": "int64" + }, + "explode": false + }, + { + "name": "limit", + "in": "query", + "required": false, + "description": "Maximum number of metric points to return.", + "schema": { + "type": "integer", + "format": "int32" + }, + "explode": false + }, { "name": "api-version", "in": "query", @@ -15849,7 +16367,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" + "$ref": "#/components/schemas/JobMetricSample" } } } @@ -15870,10 +16388,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}": { + "/training_jobs/{job_name}/attempts/{attempt_id}/outputs": { "get": { - "operationId": "TrainingJobAttempts_getAttempt", - "description": "Get one attempt for a training job.", + "operationId": "TrainingJobAttemptOutputs_listAttemptOutputs", + "description": "List outputs produced by a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -15883,12 +16401,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -15897,13 +16415,12 @@ } }, { - "name": "attemptId", + "name": "attempt_id", "in": "path", "required": true, "description": "The attempt identifier.", "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, { @@ -15923,7 +16440,33 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobAttempt" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobOutputReference" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -15944,10 +16487,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts": { + "/training_jobs/{job_name}/attempts/{attempt_id}/outputs/{output_name}": { "get": { - "operationId": "TrainingJobAttemptArtifacts_listAttemptArtifacts", - "description": "List artifacts for a specific training job attempt.", + "operationId": "TrainingJobAttemptOutputs_getAttemptOutput", + "description": "Get one output produced by a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -15957,12 +16500,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -15971,45 +16514,22 @@ } }, { - "name": "attemptId", + "name": "attempt_id", "in": "path", "required": true, "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", "schema": { "type": "string" - }, - "explode": false + } }, { - "name": "pathPrefix", - "in": "query", - "required": false, - "description": "Artifact path prefix to list.", + "name": "output_name", + "in": "path", + "required": true, + "description": "The output name.", "schema": { "type": "string" - }, - "explode": false + } }, { "name": "api-version", @@ -16028,7 +16548,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PagedJobArtifact" + "$ref": "#/components/schemas/JobOutputReference" } } } @@ -16049,10 +16569,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:content": { + "/training_jobs/{job_name}/outputs": { "get": { - "operationId": "TrainingJobAttemptArtifacts_downloadAttemptArtifact", - "description": "Download artifact content from a specific training job attempt.", + "operationId": "TrainingJobOutputs_listOutputs", + "description": "List outputs produced by a training job.", "parameters": [ { "name": "Foundry-Features", @@ -16062,12 +16582,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -16075,26 +16595,6 @@ "type": "string" } }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -16110,10 +16610,35 @@ "200": { "description": "The request has succeeded.", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobOutputReference" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + } + }, + "description": "The response data for a requested list of items." } } } @@ -16134,10 +16659,10 @@ ] } }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfo": { + "/training_jobs/{job_name}/outputs/{output_name}": { "get": { - "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfo", - "description": "Get download information for an artifact from a specific training job attempt.", + "operationId": "TrainingJobOutputs_getOutput", + "description": "Get one output produced by a training job.", "parameters": [ { "name": "Foundry-Features", @@ -16147,12 +16672,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -16161,1211 +16686,7 @@ } }, { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobArtifactContentInfo" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfoByPrefix": { - "get": { - "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactContentInfoByPrefix", - "description": "List download information for artifacts under a path prefix from a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "pathPrefix", - "in": "query", - "required": false, - "description": "Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobArtifactContentInfo" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/artifacts:metadata": { - "get": { - "operationId": "TrainingJobAttemptArtifacts_getAttemptArtifactMetadata", - "description": "Get metadata for an artifact from a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "path", - "in": "query", - "required": true, - "description": "The artifact path.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobArtifact" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics": { - "get": { - "operationId": "TrainingJobAttemptMetrics_listAttemptMetrics", - "description": "List metrics emitted by a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of items to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "skipToken", - "in": "query", - "required": false, - "description": "Continuation token returned by a previous list request.", - "schema": { - "type": "string" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobMetric" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}": { - "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetric", - "description": "Get the full history for a metric from a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobMetricPoint" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates": { - "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetricAggregates", - "description": "Get aggregate metric values from a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobMetricAggregate" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample": { - "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSample", - "description": "Get one sampled value or window from a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobMetricSample" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples": { - "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetricSamples", - "description": "Get sampled metric values from a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "metricName", - "in": "path", - "required": true, - "description": "The metric name.", - "schema": { - "type": "string" - } - }, - { - "name": "startTimeUtc", - "in": "query", - "required": false, - "description": "Start of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "endTimeUtc", - "in": "query", - "required": false, - "description": "End of the metric time range.", - "schema": { - "type": "string", - "format": "date-time" - }, - "explode": false - }, - { - "name": "minStep", - "in": "query", - "required": false, - "description": "Minimum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "maxStep", - "in": "query", - "required": false, - "description": "Maximum metric step to include.", - "schema": { - "type": "integer", - "format": "int64" - }, - "explode": false - }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "Maximum number of metric points to return.", - "schema": { - "type": "integer", - "format": "int32" - }, - "explode": false - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobMetricSample" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/metrics:lastValues": { - "get": { - "operationId": "TrainingJobAttemptMetrics_getAttemptMetricLastValues", - "description": "Get latest metric values for a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobMetricLastValue" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/outputs": { - "get": { - "operationId": "TrainingJobAttemptOutputs_listAttemptOutputs", - "description": "List outputs produced by a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}": { - "get": { - "operationId": "TrainingJobAttemptOutputs_getAttemptOutput", - "description": "Get one output produced by a specific training job attempt.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "attemptId", - "in": "path", - "required": true, - "description": "The attempt identifier.", - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "outputName", - "in": "path", - "required": true, - "description": "The output name.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JobOutputReference" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/outputs": { - "get": { - "operationId": "TrainingJobOutputs_listOutputs", - "description": "List outputs produced by a training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "api-version", - "in": "query", - "required": true, - "description": "The API version to use for this operation.", - "schema": { - "type": "string" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PagedJobOutputReference" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApiErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{jobName}/outputs/{outputName}": { - "get": { - "operationId": "TrainingJobOutputs_getOutput", - "description": "Get one output produced by a training job.", - "parameters": [ - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "Jobs=V1Preview" - ] - } - }, - { - "name": "jobName", - "in": "path", - "required": true, - "description": "The training job name.", - "schema": { - "type": "string" - } - }, - { - "name": "outputName", + "name": "output_name", "in": "path", "required": true, "description": "The output name.", @@ -17411,7 +16732,7 @@ ] } }, - "/training_jobs/{jobName}/services": { + "/training_jobs/{job_name}/services": { "get": { "operationId": "TrainingJobs_showServices", "description": "List service endpoints for the current view of a training job.", @@ -17424,12 +16745,12 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } }, { - "name": "jobName", + "name": "job_name", "in": "path", "required": true, "description": "The training job name.", @@ -17438,7 +16759,7 @@ } }, { - "name": "nodeId", + "name": "node_id", "in": "query", "required": false, "description": "Node identifier whose service endpoints should be returned. If omitted, leader-node services are returned.", @@ -17511,7 +16832,7 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } } @@ -17575,7 +16896,7 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } } @@ -17661,7 +16982,7 @@ "schema": { "type": "string", "enum": [ - "Jobs=V1Preview" + "TrainingJobs=V1Preview" ] } } @@ -21348,10 +20669,10 @@ "type": "string", "enum": [ "chatml", - "llama-3", + "llama_3", "zephyr", "gemma", - "phi-3" + "phi_3" ] } ], @@ -21454,14 +20775,14 @@ "CommandJob": { "type": "object", "required": [ - "jobType", - "computeId" + "job_type", + "compute_id" ], "properties": { - "jobType": { + "job_type": { "type": "string", "enum": [ - "Command" + "command" ], "description": "Job type." }, @@ -21469,7 +20790,7 @@ "type": "string", "description": "The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified." }, - "environmentImageReference": { + "environment_image_reference": { "type": "string", "description": "ACR path or Azure ML environment reference. Required when training is not specified." }, @@ -21481,7 +20802,7 @@ ], "description": "Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution." }, - "displayName": { + "display_name": { "type": "string", "description": "Display name of job." }, @@ -21503,11 +20824,11 @@ }, "description": "The asset property dictionary." }, - "codeId": { + "code_id": { "type": "string", "description": "Code asset reference." }, - "computeId": { + "compute_id": { "type": "string", "description": "Compute resource ID." }, @@ -21525,7 +20846,7 @@ }, "description": "Mapping of output data bindings used in the job." }, - "environmentVariables": { + "environment_variables": { "type": "object", "additionalProperties": { "type": "string" @@ -21540,7 +20861,7 @@ ], "description": "Compute Resource configuration for the job." }, - "gpuCount": { + "gpu_count": { "type": "integer", "format": "int32", "description": "Number of GPUs requested by the training job." @@ -21561,7 +20882,7 @@ ], "description": "Command Job limit." }, - "queueSettings": { + "queue_settings": { "allOf": [ { "$ref": "#/components/schemas/QueueSettings" @@ -21569,7 +20890,7 @@ ], "description": "Queue settings for the job." }, - "userAssignedIdentityId": { + "user_assigned_identity_id": { "type": "string", "description": "user-assigned managed identity" }, @@ -21589,13 +20910,13 @@ "CommandJobLimits": { "type": "object", "required": [ - "jobLimitsType" + "job_limits_type" ], "properties": { - "jobLimitsType": { + "job_limits_type": { "type": "string", "enum": [ - "Command" + "command" ], "description": "JobLimit type." }, @@ -22949,21 +22270,21 @@ "DistributionConfiguration": { "type": "object", "required": [ - "distributionType" + "distribution_type" ], "properties": { - "distributionType": { + "distribution_type": { "type": "string", "description": "Specifies the type of distribution framework." } }, "discriminator": { - "propertyName": "distributionType", + "propertyName": "distribution_type", "mapping": { - "PyTorch": "#/components/schemas/PyTorchDistribution", - "Mpi": "#/components/schemas/MpiDistribution", - "TensorFlow": "#/components/schemas/TensorFlowDistribution", - "Ray": "#/components/schemas/RayDistribution" + "pytorch": "#/components/schemas/PyTorchDistribution", + "mpi": "#/components/schemas/MpiDistribution", + "tensorflow": "#/components/schemas/TensorFlowDistribution", + "ray": "#/components/schemas/RayDistribution" } }, "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, Ray, or null." @@ -25061,6 +24382,11 @@ ], "description": "FileDatasetVersion Definition" }, + "FoundryTimestamp": { + "type": "integer", + "format": "unixtime", + "description": "Unix timestamp in seconds used by Foundry data-plane resources." + }, "FunctionToolCall": { "type": "object", "required": [ @@ -25173,7 +24499,7 @@ ], "description": "Mapping from online RL logical fields to actual dataset column names. GRPO, policy-gradient, and PPO require the 'prompt' logical field and can optionally map 'reference'." }, - "dataFormat": { + "data_format": { "allOf": [ { "$ref": "#/components/schemas/TrainingDataFormatConfiguration" @@ -25631,10 +24957,10 @@ "Input": { "type": "object", "required": [ - "jobInputType" + "job_input_type" ], "properties": { - "jobInputType": { + "job_input_type": { "allOf": [ { "$ref": "#/components/schemas/AssetTypes" @@ -25713,11 +25039,11 @@ { "type": "string", "enum": [ - "ReadOnlyMount", - "ReadWriteMount", - "Download", - "Direct", - "Upload" + "read_only_mount", + "read_write_mount", + "download", + "direct", + "upload" ] } ], @@ -26156,7 +25482,7 @@ ], "description": "Properties of the job." }, - "systemData": { + "system_data": { "allOf": [ { "$ref": "#/components/schemas/SystemData" @@ -26171,7 +25497,8 @@ "JobArtifact": { "type": "object", "required": [ - "path" + "path", + "type" ], "properties": { "path": { @@ -26194,15 +25521,21 @@ "description": "Artifact size in bytes.", "readOnly": true }, - "createdTimeUtc": { - "type": "string", - "format": "date-time", + "created_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Time the artifact was created.", "readOnly": true }, - "updatedTimeUtc": { - "type": "string", - "format": "date-time", + "updated_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Time the artifact was last updated.", "readOnly": true } @@ -26212,7 +25545,8 @@ "JobArtifactContentInfo": { "type": "object", "required": [ - "path" + "path", + "content_uri" ], "properties": { "path": { @@ -26220,20 +25554,23 @@ "description": "Artifact path relative to the job artifact root.", "readOnly": true }, - "contentUri": { + "content_uri": { "type": "string", "format": "uri", "description": "Download URI for the artifact content.", "readOnly": true }, - "contentType": { + "content_type": { "type": "string", "description": "MIME type of the content.", "readOnly": true }, - "expiresAtUtc": { - "type": "string", - "format": "date-time", + "expires_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Time the content URI expires.", "readOnly": true } @@ -26248,8 +25585,8 @@ { "type": "string", "enum": [ - "File", - "Directory" + "file", + "directory" ] } ], @@ -26259,7 +25596,7 @@ "type": "object", "required": [ "id", - "jobName" + "job_name" ], "properties": { "id": { @@ -26267,7 +25604,7 @@ "description": "The attempt identifier.", "readOnly": true }, - "jobName": { + "job_name": { "type": "string", "description": "The job name this attempt belongs to.", "readOnly": true @@ -26281,42 +25618,51 @@ "description": "The attempt status.", "readOnly": true }, - "statusReason": { + "status_reason": { "type": "string", "description": "Additional status reason.", "readOnly": true }, - "startTimeUtc": { - "type": "string", - "format": "date-time", + "started_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Time the attempt started.", "readOnly": true }, - "endTimeUtc": { - "type": "string", - "format": "date-time", + "ended_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Time the attempt ended.", "readOnly": true }, - "lastStartTimeUtc": { - "type": "string", - "format": "date-time", + "last_started_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Most recent time the attempt started running.", "readOnly": true }, - "computeDuration": { + "compute_duration": { "type": "string", "format": "duration", "description": "Total compute duration consumed by the attempt.", "readOnly": true }, - "queueingInfo": { + "queueing_info": { "type": "object", "additionalProperties": {}, "description": "Queueing details associated with the attempt.", "readOnly": true }, - "computeDetails": { + "compute_details": { "allOf": [ { "$ref": "#/components/schemas/JobAttemptComputeDetails" @@ -26342,7 +25688,7 @@ "description": "Warnings emitted for the attempt.", "readOnly": true }, - "isCurrent": { + "is_latest": { "type": "boolean", "description": "Whether this attempt is the current attempt for the job.", "readOnly": true @@ -26353,23 +25699,23 @@ "JobAttemptComputeDetails": { "type": "object", "properties": { - "vmSize": { + "vm_size": { "type": "string", "description": "Virtual machine size used for this attempt.", "readOnly": true }, - "instanceType": { + "instance_type": { "type": "string", "description": "Instance type used for this attempt.", "readOnly": true }, - "instanceCount": { + "instance_count": { "type": "integer", "format": "int32", "description": "Number of instances allocated to this attempt.", "readOnly": true }, - "gpuCount": { + "gpu_count": { "type": "integer", "format": "int32", "description": "Number of GPUs allocated to this attempt.", @@ -26410,6 +25756,20 @@ }, "description": "Error emitted during a job attempt." }, + "JobAttemptIdentifier": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "latest" + ] + } + ], + "description": "Training job attempt identifier. Use 'latest' for the latest attempt." + }, "JobAttemptStatus": { "anyOf": [ { @@ -26418,11 +25778,11 @@ { "type": "string", "enum": [ - "Queued", - "Running", - "Completed", - "Failed", - "Canceled" + "queued", + "running", + "completed", + "failed", + "canceled" ] } ], @@ -26480,7 +25840,7 @@ "description": "Metric name.", "readOnly": true }, - "metricType": { + "metric_type": { "allOf": [ { "$ref": "#/components/schemas/JobMetricType" @@ -26511,15 +25871,21 @@ "description": "Metric name.", "readOnly": true }, - "startUtc": { - "type": "string", - "format": "date-time", + "started_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Aggregate window start.", "readOnly": true }, - "endUtc": { - "type": "string", - "format": "date-time", + "ended_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Aggregate window end.", "readOnly": true }, @@ -26558,7 +25924,7 @@ "JobMetricPoint": { "type": "object", "properties": { - "metricId": { + "metric_id": { "type": "string", "description": "Metric identifier.", "readOnly": true @@ -26569,9 +25935,12 @@ "description": "Metric step.", "readOnly": true }, - "createdUtc": { - "type": "string", - "format": "date-time", + "created_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Time the metric point was created.", "readOnly": true }, @@ -26615,9 +25984,9 @@ { "type": "string", "enum": [ - "Scalar", - "Table", - "Image" + "scalar", + "table", + "image" ] } ], @@ -26673,19 +26042,25 @@ "description": "Operation result properties.", "readOnly": true }, - "startTime": { - "type": "string", - "format": "date-time", + "started_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Operation start time.", "readOnly": true }, - "endTime": { - "type": "string", - "format": "date-time", + "ended_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "Operation end time.", "readOnly": true }, - "percentComplete": { + "percent_complete": { "type": "number", "format": "double", "description": "Operation completion percentage from 0 to 100.", @@ -26711,11 +26086,11 @@ { "type": "string", "enum": [ - "InProgress", - "Deleting", - "Succeeded", - "Failed", - "Canceled" + "in_progress", + "deleting", + "succeeded", + "failed", + "canceled" ] } ], @@ -26755,17 +26130,17 @@ "description": "Output storage URI.", "readOnly": true }, - "assetName": { + "asset_name": { "type": "string", "description": "Registered asset name, if the output produced an asset.", "readOnly": true }, - "assetVersion": { + "asset_version": { "type": "string", "description": "Registered asset version, if the output produced an asset.", "readOnly": true }, - "baseModelId": { + "base_model_id": { "type": "string", "description": "Base model ID for model outputs.", "readOnly": true @@ -26781,18 +26156,18 @@ "JobProperties": { "type": "object", "required": [ - "jobType" + "job_type" ], "properties": { - "jobType": { + "job_type": { "type": "string", "description": "Job type." } }, "discriminator": { - "propertyName": "jobType", + "propertyName": "job_type", "mapping": { - "Command": "#/components/schemas/CommandJob" + "command": "#/components/schemas/CommandJob" } }, "description": "Base properties of a Job." @@ -26800,12 +26175,12 @@ "JobResourceConfiguration": { "type": "object", "properties": { - "instanceCount": { + "instance_count": { "type": "integer", "format": "int32", "description": "Optional number of instances or nodes used by the compute target." }, - "instanceType": { + "instance_type": { "type": "string", "description": "Optional type of VM used as supported by the compute target." }, @@ -26814,17 +26189,32 @@ "additionalProperties": {}, "description": "Additional properties bag." }, - "shmSize": { + "shm_size": { "type": "string", "description": "Size of the docker container's shared memory block. This should be in the format of (number)(unit) where number as to be greater than 0 and the unit can be one of b(bytes), k(kilobytes), m(megabytes), or g(gigabytes)." }, - "dockerArgs": { + "docker_args": { "type": "string", "description": "Extra arguments to pass to the Docker run command. This would override any parameters that have already been set by the system, or in this section. This parameter is only supported for Azure ML compute types." } }, "description": "Compute Resource configuration for the job." }, + "JobServiceType": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "studio", + "tracking" + ] + } + ], + "description": "Job service endpoint type." + }, "JobType": { "anyOf": [ { @@ -26833,7 +26223,7 @@ { "type": "string", "enum": [ - "Command" + "command" ] } ], @@ -26922,7 +26312,7 @@ ], "description": "Mapping from KTO logical fields to actual dataset column names. KTO requires 'prompt', 'response', and 'label'." }, - "dataFormat": { + "data_format": { "allOf": [ { "$ref": "#/components/schemas/TrainingDataFormatConfiguration" @@ -26987,12 +26377,12 @@ "additionalProperties": {}, "description": "Algorithm-specific hyperparameters passed through to the selected framework." }, - "desirableWeight": { + "desirable_weight": { "type": "number", "format": "double", "description": "Weight applied to desirable examples." }, - "undesirableWeight": { + "undesirable_weight": { "type": "number", "format": "double", "description": "Weight applied to undesirable examples." @@ -27032,9 +26422,9 @@ { "type": "string", "enum": [ - "ActiveOnly", - "ArchivedOnly", - "All" + "active_only", + "archived_only", + "all" ] } ], @@ -27991,12 +27381,12 @@ "description": "URI of the registered model artifact.", "readOnly": true }, - "baseModel": { + "base_model": { "type": "string", "description": "Base model used to create this model, when the model was produced by managed training.", "readOnly": true }, - "trainingJob": { + "training_job": { "type": "string", "description": "Backing training job that produced this model, when available.", "readOnly": true @@ -28143,7 +27533,7 @@ ], "description": "Compute resource configuration for the managed training job." }, - "gpuCount": { + "gpu_count": { "type": "integer", "format": "int32", "description": "Number of GPUs requested by the managed training job." @@ -28156,7 +27546,7 @@ ], "description": "Distribution configuration for the managed training job." }, - "queueSettings": { + "queue_settings": { "allOf": [ { "$ref": "#/components/schemas/QueueSettings" @@ -28164,7 +27554,7 @@ ], "description": "Queue settings for the managed training job." }, - "userAssignedIdentityId": { + "user_assigned_identity_id": { "type": "string", "description": "ARM resource ID of a user-assigned managed identity attached to the Foundry project." } @@ -28232,11 +27622,11 @@ "ModelTrainingOperation": { "type": "object", "required": [ - "operationId", + "operation_id", "status" ], "properties": { - "operationId": { + "operation_id": { "type": "string", "description": "Operation identifier for the managed model training request." }, @@ -28356,17 +27746,17 @@ "MpiDistribution": { "type": "object", "required": [ - "distributionType" + "distribution_type" ], "properties": { - "distributionType": { + "distribution_type": { "type": "string", "enum": [ - "Mpi" + "mpi" ], "description": "Specifies the type of distribution framework." }, - "processCountPerNode": { + "process_count_per_node": { "type": "integer", "format": "int32", "description": "Number of processes per MPI node." @@ -48298,10 +47688,10 @@ "Output": { "type": "object", "required": [ - "jobOutputType" + "job_output_type" ], "properties": { - "jobOutputType": { + "job_output_type": { "allOf": [ { "$ref": "#/components/schemas/AssetTypes" @@ -48317,11 +47707,11 @@ ], "description": "Output Asset Delivery Mode." }, - "assetName": { + "asset_name": { "type": "string", "description": "Name of the output data asset to register." }, - "assetVersion": { + "asset_version": { "type": "string", "description": "Version of the output data asset to register." }, @@ -48329,7 +47719,7 @@ "type": "string", "description": "Output Asset URI." }, - "baseModelId": { + "base_model_id": { "type": "string", "description": "Base model ID. Applies to safetensors_model outputs." }, @@ -48536,195 +47926,6 @@ }, "description": "Paged collection of Insight items" }, - "PagedJob": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Job" - }, - "description": "The Job items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of Job items" - }, - "PagedJobArtifact": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobArtifact" - }, - "description": "The JobArtifact items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobArtifact items" - }, - "PagedJobArtifactContentInfo": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobArtifactContentInfo" - }, - "description": "The JobArtifactContentInfo items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobArtifactContentInfo items" - }, - "PagedJobAttempt": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobAttempt" - }, - "description": "The JobAttempt items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobAttempt items" - }, - "PagedJobMetric": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetric" - }, - "description": "The JobMetric items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetric items" - }, - "PagedJobMetricAggregate": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetricAggregate" - }, - "description": "The JobMetricAggregate items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetricAggregate items" - }, - "PagedJobMetricLastValue": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetricLastValue" - }, - "description": "The JobMetricLastValue items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetricLastValue items" - }, - "PagedJobMetricPoint": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobMetricPoint" - }, - "description": "The JobMetricPoint items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobMetricPoint items" - }, - "PagedJobOutputReference": { - "type": "object", - "required": [ - "value" - ], - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/JobOutputReference" - }, - "description": "The JobOutputReference items on this page" - }, - "nextLink": { - "type": "string", - "format": "uri", - "description": "The link to the next page of items" - } - }, - "description": "Paged collection of JobOutputReference items" - }, "PagedManagedAgentIdentityBlueprint": { "type": "object", "required": [ @@ -48855,7 +48056,7 @@ ], "description": "Mapping from pairwise preference logical fields to actual dataset column names. DPO, ORPO, CPO, and SimPO require 'prompt', 'chosen', and 'rejected'." }, - "dataFormat": { + "data_format": { "allOf": [ { "$ref": "#/components/schemas/TrainingDataFormatConfiguration" @@ -48897,7 +48098,7 @@ ], "description": "Mapping from pairwise reward-model logical fields to actual dataset column names. Pairwise reward-model training requires 'prompt', 'chosen', and 'rejected'." }, - "dataFormat": { + "data_format": { "allOf": [ { "$ref": "#/components/schemas/TrainingDataFormatConfiguration" @@ -49131,7 +48332,7 @@ "type": "string", "description": "Optional critic model asset reference. If omitted, the service initializes the critic from the policy model." }, - "valueLossCoefficient": { + "value_loss_coefficient": { "type": "number", "format": "double", "description": "Value loss coefficient." @@ -49578,17 +48779,17 @@ "PyTorchDistribution": { "type": "object", "required": [ - "distributionType" + "distribution_type" ], "properties": { - "distributionType": { + "distribution_type": { "type": "string", "enum": [ - "PyTorch" + "pytorch" ], "description": "Specifies the type of distribution framework." }, - "processCountPerInstance": { + "process_count_per_instance": { "type": "integer", "format": "int32", "description": "Number of processes per node." @@ -49604,7 +48805,7 @@ "QueueSettings": { "type": "object", "properties": { - "jobTier": { + "job_tier": { "type": "string", "description": "Controls the compute job tier." } @@ -49627,13 +48828,13 @@ "RayDistribution": { "type": "object", "required": [ - "distributionType" + "distribution_type" ], "properties": { - "distributionType": { + "distribution_type": { "type": "string", "enum": [ - "Ray" + "ray" ], "description": "Specifies the type of distribution framework." }, @@ -49646,31 +48847,31 @@ "type": "string", "description": "The address of the Ray head node." }, - "includeDashboard": { + "include_dashboard": { "type": "boolean", "description": "Whether to start the Ray dashboard GUI." }, - "dashboardPort": { + "dashboard_port": { "type": "integer", "format": "int32", "description": "The port to bind the dashboard server to." }, - "headNodeAdditionalArgs": { + "head_node_additional_args": { "type": "string", "description": "Additional arguments passed to ray start on the head node." }, - "workerNodeAdditionalArgs": { + "worker_node_additional_args": { "type": "string", "description": "Additional arguments passed to ray start on worker nodes." }, - "enableRemoteAccessClientServer": { + "enable_remote_access_client_server": { "type": "boolean", "description": "Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally." }, - "clientServerPort": { + "client_server_port": { "type": "integer", "format": "int32", - "description": "The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true." + "description": "The port for the Ray Client server. Defaults to 10001. Only relevant when enable_remote_access_client_server is true." } }, "allOf": [ @@ -50650,7 +49851,7 @@ ], "description": "Mapping from scored reward-model logical fields to actual dataset column names. Scored reward-model training requires 'prompt', 'response', and 'score'." }, - "dataFormat": { + "data_format": { "allOf": [ { "$ref": "#/components/schemas/TrainingDataFormatConfiguration" @@ -50835,7 +50036,7 @@ ], "description": "Mapping from SFT logical fields to actual dataset column names. SFT requires the 'messages' logical field." }, - "dataFormat": { + "data_format": { "allOf": [ { "$ref": "#/components/schemas/TrainingDataFormatConfiguration" @@ -51371,35 +50572,41 @@ "SystemData": { "type": "object", "properties": { - "createdBy": { + "created_by": { "type": "string", "description": "The identity that created the resource.", "readOnly": true }, - "createdByType": { + "created_by_type": { "type": "string", "description": "The type of identity that created the resource.", "readOnly": true }, - "createdAt": { - "type": "string", - "format": "date-time", + "created_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "The timestamp of resource creation (UTC).", "readOnly": true }, - "lastModifiedBy": { + "last_modified_by": { "type": "string", "description": "The identity that last modified the resource.", "readOnly": true }, - "lastModifiedByType": { + "last_modified_by_type": { "type": "string", "description": "The type of identity that last modified the resource.", "readOnly": true }, - "lastModifiedAt": { - "type": "string", - "format": "date-time", + "last_modified_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], "description": "The timestamp of resource last modification (UTC).", "readOnly": true } @@ -51803,22 +51010,22 @@ "TensorFlowDistribution": { "type": "object", "required": [ - "distributionType" + "distribution_type" ], "properties": { - "distributionType": { + "distribution_type": { "type": "string", "enum": [ - "TensorFlow" + "tensorflow" ], "description": "Specifies the type of distribution framework." }, - "workerCount": { + "worker_count": { "type": "integer", "format": "int32", "description": "Number of workers. If not specified, will default to the instance count." }, - "parameterServerCount": { + "parameter_server_count": { "type": "integer", "format": "int32", "description": "Number of parameter server tasks." @@ -52177,7 +51384,7 @@ ], "description": "Training framework implementation. If omitted, the service selects a compatible framework for the algorithm and records the resolved framework on the job." }, - "resolvedFramework": { + "resolved_framework": { "allOf": [ { "$ref": "#/components/schemas/TrainingFramework" @@ -52186,7 +51393,7 @@ "description": "Training framework resolved by the service.", "readOnly": true }, - "frameworkVersion": { + "framework_version": { "type": "string", "description": "Version of the resolved training framework used by the service.", "readOnly": true @@ -52225,12 +51432,12 @@ "reward_model": "#/components/schemas/RewardModelTrainingConfiguration" } }, - "description": "Declarative training recipe. When specified, command must be omitted and environmentImageReference is optional." + "description": "Declarative training recipe. When specified, command must be omitted and environment_image_reference is optional." }, "TrainingDataFormatConfiguration": { "type": "object", "properties": { - "chatTemplate": { + "chat_template": { "allOf": [ { "$ref": "#/components/schemas/ChatTemplate" @@ -52238,7 +51445,7 @@ ], "description": "Built-in chat template to apply to the dataset." }, - "chatTemplatePath": { + "chat_template_path": { "type": "string", "description": "Path to a custom chat template relative to the job's code directory." } @@ -52267,7 +51474,7 @@ ], "description": "Mapping from training fields to dataset columns." }, - "dataFormat": { + "data_format": { "allOf": [ { "$ref": "#/components/schemas/TrainingDataFormatConfiguration" @@ -52311,10 +51518,10 @@ "TrainingEntryPointReference": { "type": "object", "required": [ - "entryPoint" + "entry_point" ], "properties": { - "entryPoint": { + "entry_point": { "type": "string", "description": "Path to the Python callable in module/file.py:function format." } @@ -52355,7 +51562,7 @@ "type": "string", "description": "Custom evaluation dataset asset reference. Mutually exclusive with benchmark." }, - "everyNSteps": { + "every_n_steps": { "type": "integer", "format": "int32", "description": "Evaluation frequency in training steps. Omit for end-of-training only." @@ -52381,7 +51588,7 @@ "type": "string", "description": "Evaluator asset reference." }, - "inputMapping": { + "input_mapping": { "type": "object", "additionalProperties": { "type": "string" @@ -52513,7 +51720,11 @@ "type": "object", "properties": { "type": { - "type": "string", + "allOf": [ + { + "$ref": "#/components/schemas/JobServiceType" + } + ], "description": "Service type.", "readOnly": true }, @@ -52536,6 +51747,7 @@ }, "endpoint": { "type": "string", + "format": "uri", "description": "Service endpoint URI.", "readOnly": true }, @@ -52581,7 +51793,8 @@ "alpha": { "type": "integer", "format": "int32", - "description": "LoRA scaling factor." + "description": "LoRA scaling factor.", + "default": 16 }, "dropout": { "type": "number", @@ -52589,7 +51802,7 @@ "description": "Dropout applied to adapter inputs.", "default": 0.05 }, - "targetModules": { + "target_modules": { "type": "string", "description": "Linear layers that receive adapters. Use 'auto' to let the framework choose defaults.", "default": "auto" @@ -52635,7 +51848,11 @@ ], "properties": { "kind": { - "type": "string", + "allOf": [ + { + "$ref": "#/components/schemas/TrainingRewardKind" + } + ], "description": "Reward or judge signal kind." } }, @@ -52653,6 +51870,26 @@ }, "description": "Reward or judge signal configuration for reinforcement or reward model training." }, + "TrainingRewardKind": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "model", + "function", + "inline_function", + "builtin", + "evaluator", + "deployment", + "composite" + ] + } + ], + "description": "Reward or judge signal kind." + }, "TrainingRolloutConfiguration": { "type": "object", "required": [ @@ -52667,17 +51904,17 @@ ], "description": "Rollout inference engine." }, - "numGenerations": { + "num_generations": { "type": "integer", "format": "int32", "description": "Number of completions to generate for each prompt." }, - "maxPromptLength": { + "max_prompt_length": { "type": "integer", "format": "int32", "description": "Maximum prompt length in tokens." }, - "maxCompletionLength": { + "max_completion_length": { "type": "integer", "format": "int32", "description": "Maximum completion length in tokens." @@ -52687,7 +51924,7 @@ "format": "double", "description": "Sampling temperature for rollout generation." }, - "topP": { + "top_p": { "type": "number", "format": "double", "description": "Nucleus sampling probability for rollout generation." @@ -52699,7 +51936,7 @@ }, "description": "Stop sequences for rollout generation." }, - "batchSize": { + "batch_size": { "type": "integer", "format": "int32", "description": "Rollout batch size." @@ -52709,13 +51946,13 @@ "format": "int32", "description": "Random seed for rollout generation." }, - "tensorParallelSize": { + "tensor_parallel_size": { "type": "integer", "format": "int32", "description": "Tensor parallel size used by the rollout engine.", "default": 1 }, - "gpuMemoryUtilization": { + "gpu_memory_utilization": { "type": "number", "format": "double", "description": "GPU memory utilization target for the rollout engine, between 0.0 and 1.0." diff --git a/specification/ai-foundry/data-plane/Foundry/src/common/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/common/models.tsp index d22b8821885c..bb100e0da927 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/common/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/common/models.tsp @@ -68,7 +68,7 @@ union FoundryFeaturesOptInKeys { memory_stores_v1_preview: "MemoryStores=V1Preview", toolset_v1_preview: "Toolsets=V1Preview", agent_endpoint_v1_preview: "AgentEndpoints=V1Preview", - jobs_v1_preview: "Jobs=V1Preview", + training_jobs_v1_preview: "TrainingJobs=V1Preview", } alias WithRequiredFoundryPreviewHeader = { diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp deleted file mode 100644 index 7a1acaccdafa..000000000000 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/routes.tsp +++ /dev/null @@ -1,711 +0,0 @@ -import "./models.tsp"; -import "../common/models.tsp"; - -using TypeSpec.Http; -using TypeSpec.Rest; -using Azure.Core.Traits; - -namespace Azure.AI.Projects; - -alias JobsPreviewHeader = WithRequiredFoundryPreviewHeader; - -alias JobsFilterQueryParams = { - @doc("Filter by job type (e.g. 'Command').") - @query - jobType?: JobType; - - @doc("Filter jobs by tag in the format 'key=value' (e.g., 'framework=pytorch').") - @query - tag?: string; - - @doc("Specifies which view type to apply when listing jobs.") - @query - listViewType?: ListViewType; - - @doc("Comma-separated user property names and optionally values. Example: prop1,prop2=value2.") - @query - properties?: string; -}; - -@tag("TrainingJobs") -interface TrainingJobs { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "We need explicit definition for header support" - @doc("List training jobs.") - @Rest.listsResource(Job) - list is Azure.Core.Foundations.ResourceList< - Job, - JobsFilterQueryParams & JobsPreviewHeader, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "We need explicit definition for header support" - @doc("Get a training job by name.") - @get - get is Azure.Core.Foundations.ResourceOperation< - Job, - { - ...JobsPreviewHeader; - }, - Azure.Core.Foundations.ResourceOkResponse - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job services are projected from run history service instances." - @doc("List service endpoints for the current view of a training job.") - @get - @route("/training_jobs/{jobName}/services") - showServices is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - ...JobServicesQueryParameters; - }, - TrainingJobServiceCollection - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Jobs use Operation-Id based idempotent submission." - @doc("Create and execute a model training job.") - @post - @route("/training_jobs") - create is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("Idempotency key used to safely retry job creation.") - @header("Operation-Id") - operationId?: string; - - @doc("The training job to create.") - @bodyRoot - job: JobCreate; - }, - ResourceCreatedResponse - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "LRO delete returns 202 with Location and Operation-Location headers for polling, or 204 when job not found" - #suppress "@azure-tools/typespec-azure-core/no-response-body" "Delete LRO returns 202 with Location header, 204 with no body" - @doc("Delete a training job by name. Returns 202 Accepted with Location and Operation-Location headers to poll for completion, or 204 if the job does not exist.") - @delete - beginDelete is Azure.Core.Foundations.ResourceOperation< - Job, - { - ...JobsPreviewHeader; - }, - JobDeleteAcceptedResponse | Http.NoContentResponse - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "LRO cancel returns 200 synchronously or 202 with Location and Operation-Location headers for async polling" - #suppress "@azure-tools/typespec-azure-core/no-response-body" "Cancel LRO returns 200 or 202 with Location header, no body" - @doc("Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with Location and Operation-Location headers to poll for completion.") - @post - @Rest.action("cancel") - @actionSeparator(":") - beginCancel is Azure.Core.Foundations.ResourceOperation< - Job, - { - ...JobsPreviewHeader; - }, - Http.OkResponse | JobCancelAcceptedResponse - >; -} // interface TrainingJobs - -@tag("TrainingJobs") -interface TrainingJobOperations { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Foundry job operations are exposed as data-plane polling routes under training_jobs." - #suppress "@azure-tools/typespec-azure-core/no-response-body" "The operation result route can return 202/200 with no body or a terminal operation resource." - @doc("Poll the result of an asynchronous training job operation.") - @get - @route("/training_jobs/operations/{operationId}/result") - getOperationResult is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The operation identifier returned by a training job create, cancel, or delete request.") - @path - operationId: string; - }, - JobOperationResource | JobOperationAcceptedResponse | Http.OkResponse - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Foundry job operations are exposed as data-plane polling routes under training_jobs." - #suppress "@azure-tools/typespec-azure-core/no-response-body" "The operation status route can return 200 with no body or an operation resource." - @doc("Poll the status of an asynchronous training job operation.") - @get - @route("/training_jobs/operations/{operationId}/status") - getOperationStatus is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The operation identifier returned by a training job create, cancel, or delete request.") - @path - operationId: string; - }, - JobOperationResource | Http.OkResponse - >; -} - -@tag("TrainingJobs") -interface TrainingJobAttempts { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job attempts are projected from job execution history." - @doc("List attempts for a training job.") - @get - @route("/training_jobs/{jobName}/attempts") - listAttempts is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - ...JobContinuationListQueryParameters; - }, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job attempts are projected from job execution history." - @doc("Get one attempt for a training job.") - @get - @route("/training_jobs/{jobName}/attempts/{attemptId}") - getAttempt is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The attempt identifier.") - @path - attemptId: int32; - }, - JobAttempt - >; -} - -@tag("TrainingJobs") -interface TrainingJobArtifacts { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." - @doc("List artifacts for the latest attempt of a training job.") - @get - @route("/training_jobs/{jobName}/attempts/latest/artifacts") - listArtifacts is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - ...JobArtifactListQueryParameters; - }, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." - @doc("Get metadata for an artifact from the latest attempt of a training job.") - @get - @route("/training_jobs/{jobName}/attempts/latest/artifacts:metadata") - getArtifactMetadata is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The artifact path.") - @query - path: string; - }, - JobArtifact - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." - @doc("Get download information for an artifact from the latest attempt of a training job.") - @get - @route("/training_jobs/{jobName}/attempts/latest/artifacts:contentInfo") - getArtifactContentInfo is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The artifact path.") - @query - path: string; - }, - JobArtifactContentInfo - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." - @doc("List download information for artifacts under a path prefix from the latest attempt of a training job.") - @get - @route("/training_jobs/{jobName}/attempts/latest/artifacts:contentInfoByPrefix") - getArtifactContentInfoByPrefix is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - ...JobArtifactContentInfoByPrefixQueryParameters; - }, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job artifacts are projected from the job data container." - #suppress "@azure-tools/typespec-azure-core/byos" "Job artifact content is produced by the job and streamed back to the caller." - @doc("Download artifact content from the latest attempt of a training job.") - @get - @route("/training_jobs/{jobName}/attempts/latest/artifacts:content") - downloadArtifact is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The artifact path.") - @query - path: string; - }, - bytes - >; -} - -@tag("TrainingJobs") -interface TrainingJobAttemptArtifacts { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." - @doc("List artifacts for a specific training job attempt.") - @get - @route("/training_jobs/{jobName}/attempts/{attemptId}/artifacts") - listAttemptArtifacts is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The attempt identifier.") - @path - attemptId: int32; - - ...JobArtifactListQueryParameters; - }, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." - @doc("Get metadata for an artifact from a specific training job attempt.") - @get - @route("/training_jobs/{jobName}/attempts/{attemptId}/artifacts:metadata") - getAttemptArtifactMetadata is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The attempt identifier.") - @path - attemptId: int32; - - @doc("The artifact path.") - @query - path: string; - }, - JobArtifact - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." - @doc("Get download information for an artifact from a specific training job attempt.") - @get - @route("/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfo") - getAttemptArtifactContentInfo is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The attempt identifier.") - @path - attemptId: int32; - - @doc("The artifact path.") - @query - path: string; - }, - JobArtifactContentInfo - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." - @doc("List download information for artifacts under a path prefix from a specific training job attempt.") - @get - @route("/training_jobs/{jobName}/attempts/{attemptId}/artifacts:contentInfoByPrefix") - getAttemptArtifactContentInfoByPrefix is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The attempt identifier.") - @path - attemptId: int32; - - ...JobArtifactContentInfoByPrefixQueryParameters; - }, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." - #suppress "@azure-tools/typespec-azure-core/byos" "Job artifact content is produced by the job and streamed back to the caller." - @doc("Download artifact content from a specific training job attempt.") - @get - @route("/training_jobs/{jobName}/attempts/{attemptId}/artifacts:content") - downloadAttemptArtifact is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The attempt identifier.") - @path - attemptId: int32; - - @doc("The artifact path.") - @query - path: string; - }, - bytes - >; -} - -@tag("TrainingJobs") -interface TrainingJobMetrics { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("List metrics emitted by the latest attempt of a training job.") - @get - @route("/training_jobs/{jobName}/attempts/latest/metrics") - listMetrics is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - ...JobMetricListQueryParameters; - }, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("Get the latest values for metrics emitted by the latest attempt of a training job.") - @get - @route("/training_jobs/{jobName}/attempts/latest/metrics:lastValues") - getMetricLastValues is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - }, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("Get the full history for a metric from the latest attempt of a training job.") - @get - @route("/training_jobs/{jobName}/attempts/latest/metrics/{metricName}") - getMetric is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The metric name.") - @path - metricName: string; - - ...JobMetricQueryParameters; - }, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("Get aggregate metric values from the latest attempt of a training job.") - @get - @route("/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:aggregates") - getMetricAggregates is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The metric name.") - @path - metricName: string; - - ...JobMetricQueryParameters; - }, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("Get sampled metric values from the latest attempt of a training job.") - @get - @route("/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:samples") - getMetricSamples is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The metric name.") - @path - metricName: string; - - ...JobMetricQueryParameters; - }, - JobMetricSample - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job metrics are projected from the job data container." - @doc("Get one sampled value or window from the latest attempt of a training job.") - @get - @route("/training_jobs/{jobName}/attempts/latest/metrics/{metricName}:sample") - getMetricSample is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The metric name.") - @path - metricName: string; - - ...JobMetricQueryParameters; - }, - JobMetricSample - >; -} - -@tag("TrainingJobs") -interface TrainingJobAttemptMetrics { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." - @doc("List metrics emitted by a specific training job attempt.") - @get - @route("/training_jobs/{jobName}/attempts/{attemptId}/metrics") - listAttemptMetrics is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The attempt identifier.") - @path - attemptId: int32; - - ...JobMetricListQueryParameters; - }, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." - @doc("Get latest metric values for a specific training job attempt.") - @get - @route("/training_jobs/{jobName}/attempts/{attemptId}/metrics:lastValues") - getAttemptMetricLastValues is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The attempt identifier.") - @path - attemptId: int32; - }, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." - @doc("Get the full history for a metric from a specific training job attempt.") - @get - @route("/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}") - getAttemptMetric is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The attempt identifier.") - @path - attemptId: int32; - - @doc("The metric name.") - @path - metricName: string; - - ...JobMetricQueryParameters; - }, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." - @doc("Get aggregate metric values from a specific training job attempt.") - @get - @route("/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:aggregates") - getAttemptMetricAggregates is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The attempt identifier.") - @path - attemptId: int32; - - @doc("The metric name.") - @path - metricName: string; - - ...JobMetricQueryParameters; - }, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." - @doc("Get sampled metric values from a specific training job attempt.") - @get - @route("/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:samples") - getAttemptMetricSamples is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The attempt identifier.") - @path - attemptId: int32; - - @doc("The metric name.") - @path - metricName: string; - - ...JobMetricQueryParameters; - }, - JobMetricSample - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." - @doc("Get one sampled value or window from a specific training job attempt.") - @get - @route("/training_jobs/{jobName}/attempts/{attemptId}/metrics/{metricName}:sample") - getAttemptMetricSample is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The attempt identifier.") - @path - attemptId: int32; - - @doc("The metric name.") - @path - metricName: string; - - ...JobMetricQueryParameters; - }, - JobMetricSample - >; -} - -@tag("TrainingJobs") -interface TrainingJobOutputs { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job outputs are projected from job outputs and asset relationships." - @doc("List outputs produced by a training job.") - @get - @route("/training_jobs/{jobName}/outputs") - listOutputs is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - }, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job outputs are projected from job outputs and asset relationships." - @doc("Get one output produced by a training job.") - @get - @route("/training_jobs/{jobName}/outputs/{outputName}") - getOutput is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The output name.") - @path - outputName: string; - }, - JobOutputReference - >; -} - -@tag("TrainingJobs") -interface TrainingJobAttemptOutputs { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt outputs are projected from attempt output state and asset relationships." - @doc("List outputs produced by a specific training job attempt.") - @get - @route("/training_jobs/{jobName}/attempts/{attemptId}/outputs") - listAttemptOutputs is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The attempt identifier.") - @path - attemptId: int32; - - }, - Azure.Core.Page - >; - - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt outputs are projected from attempt output state and asset relationships." - @doc("Get one output produced by a specific training job attempt.") - @get - @route("/training_jobs/{jobName}/attempts/{attemptId}/outputs/{outputName}") - getAttemptOutput is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, - { - @doc("The training job name.") - @path - jobName: string; - - @doc("The attempt identifier.") - @path - attemptId: int32; - - @doc("The output name.") - @path - outputName: string; - }, - JobOutputReference - >; -} diff --git a/specification/ai-foundry/data-plane/Foundry/src/models/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/models/models.tsp index 1f29bbf0f1cc..b82629bf2ee3 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/models/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/models/models.tsp @@ -1,5 +1,5 @@ import "../common/models.tsp"; -import "../jobs/models.tsp"; +import "../training_jobs/models.tsp"; using TypeSpec.Rest; @@ -14,16 +14,16 @@ model ModelTrainingComputeConfiguration { resources?: JobResourceConfiguration; @doc("Number of GPUs requested by the managed training job.") - gpuCount?: int32; + gpu_count?: int32; @doc("Distribution configuration for the managed training job.") distribution?: DistributionConfiguration; @doc("Queue settings for the managed training job.") - queueSettings?: QueueSettings; + queue_settings?: QueueSettings; @doc("ARM resource ID of a user-assigned managed identity attached to the Foundry project.") - userAssignedIdentityId?: string; + user_assigned_identity_id?: string; } #suppress "@azure-tools/typespec-azure-core/composition-over-inheritance" @@ -57,11 +57,11 @@ model Model { @doc("Base model used to create this model, when the model was produced by managed training.") @visibility(Lifecycle.Read) - baseModel?: string; + base_model?: string; @doc("Backing training job that produced this model, when available.") @visibility(Lifecycle.Read) - trainingJob?: string; + training_job?: string; } @doc("Status of a managed model training operation.") @@ -82,7 +82,7 @@ union ModelTrainingOperationStatus { @doc("Status resource for a managed model training operation.") model ModelTrainingOperation { @doc("Operation identifier for the managed model training request.") - operationId: string; + operation_id: string; @doc("Managed model training operation status.") @Azure.Core.lroStatus @@ -115,7 +115,7 @@ model SftTrainingDatasetConfiguration { columns: SftTrainingColumnMapping; @doc("Conversational data formatting options.") - dataFormat?: TrainingDataFormatConfiguration; + data_format?: TrainingDataFormatConfiguration; } @doc("Column mapping for managed online RL prompt datasets. Keys are logical fields expected by GRPO, RLOO, REINFORCE++, and PPO; values are the exact column names in the referenced dataset asset. The training dataset must contain prompts; reference answers or reward context can be passed to the judge.") @@ -139,7 +139,7 @@ model GrpoTrainingDatasetConfiguration { columns: GrpoTrainingColumnMapping; @doc("Conversational data formatting options.") - dataFormat?: TrainingDataFormatConfiguration; + data_format?: TrainingDataFormatConfiguration; } @doc("Preference optimization algorithm used by managed pairwise preference training.") @@ -190,7 +190,7 @@ model PairwisePreferenceDatasetConfiguration { columns: PairwisePreferenceColumnMapping; @doc("Conversational data formatting options.") - dataFormat?: TrainingDataFormatConfiguration; + data_format?: TrainingDataFormatConfiguration; } @doc("Column mapping for KTO feedback datasets. Keys are logical fields expected by KTO; values are the exact column names in the referenced dataset asset.") @@ -217,7 +217,7 @@ model KtoTrainingDatasetConfiguration { columns: KtoFeedbackColumnMapping; @doc("Conversational data formatting options.") - dataFormat?: TrainingDataFormatConfiguration; + data_format?: TrainingDataFormatConfiguration; } @doc("Column mapping for scored reward-model datasets. Keys are logical fields expected by scored reward-model training; values are the exact column names in the referenced dataset asset.") @@ -256,7 +256,7 @@ model PairwiseRewardModelTrainingDatasetConfiguration columns: PairwisePreferenceColumnMapping; @doc("Conversational data formatting options.") - dataFormat?: TrainingDataFormatConfiguration; + data_format?: TrainingDataFormatConfiguration; } @doc("Scored response dataset for managed reward-model training.") @@ -275,7 +275,7 @@ model ScoredRewardModelTrainingDatasetConfiguration columns: ScoredRewardModelColumnMapping; @doc("Conversational data formatting options.") - dataFormat?: TrainingDataFormatConfiguration; + data_format?: TrainingDataFormatConfiguration; } #suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "Use an extensible union for forward-compatible reference policy kinds." @@ -344,7 +344,7 @@ model PpoCriticConfiguration { `model`?: string; @doc("Value loss coefficient.") - valueLossCoefficient?: float64; + value_loss_coefficient?: float64; @doc("GAE discount factor.") gamma?: float64; @@ -401,10 +401,10 @@ model KtoTrainingRuntimeConfiguration { hyperparameters?: Record; @doc("Weight applied to desirable examples.") - desirableWeight?: float64; + desirable_weight?: float64; @doc("Weight applied to undesirable examples.") - undesirableWeight?: float64; + undesirable_weight?: float64; @doc("LoRA adapter configuration.") lora?: TrainingLoraConfiguration; diff --git a/specification/ai-foundry/data-plane/Foundry/src/models/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/models/routes.tsp index 653037cdfbb6..a0c5c174256a 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/models/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/models/routes.tsp @@ -1,6 +1,6 @@ import "./models.tsp"; import "../common/models.tsp"; -import "../jobs/models.tsp"; +import "../training_jobs/models.tsp"; using TypeSpec.Http; using Azure.Core; @@ -19,11 +19,11 @@ interface Models { @route("/models:create_training_job") @pollingOperation(Models.getTrainingOperationResult) createTrainingJob is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, + FoundryFeaturesOptInKeys.training_jobs_v1_preview, { @doc("Idempotency key used to safely retry managed model training.") @header("Operation-Id") - operationId?: string; + operation_id?: string; @doc("The managed model training job to create.") @bodyRoot @@ -37,11 +37,11 @@ interface Models { @overload(Models.createTrainingJob) @pollingOperation(Models.getTrainingOperationResult) createSftTrainingJob is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, + FoundryFeaturesOptInKeys.training_jobs_v1_preview, { @doc("Idempotency key used to safely retry managed model training.") @header("Operation-Id") - operationId?: string; + operation_id?: string; @doc("The managed SFT model training job to create.") @bodyRoot @@ -55,11 +55,11 @@ interface Models { @overload(Models.createTrainingJob) @pollingOperation(Models.getTrainingOperationResult) createPreferenceTrainingJob is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, + FoundryFeaturesOptInKeys.training_jobs_v1_preview, { @doc("Idempotency key used to safely retry managed model training.") @header("Operation-Id") - operationId?: string; + operation_id?: string; @doc("The managed pairwise preference model training request.") @bodyRoot @@ -73,11 +73,11 @@ interface Models { @overload(Models.createTrainingJob) @pollingOperation(Models.getTrainingOperationResult) createKtoTrainingJob is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, + FoundryFeaturesOptInKeys.training_jobs_v1_preview, { @doc("Idempotency key used to safely retry managed model training.") @header("Operation-Id") - operationId?: string; + operation_id?: string; @doc("The managed KTO model training request.") @bodyRoot @@ -91,11 +91,11 @@ interface Models { @overload(Models.createTrainingJob) @pollingOperation(Models.getTrainingOperationResult) createRewardModelTrainingJob is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, + FoundryFeaturesOptInKeys.training_jobs_v1_preview, { @doc("Idempotency key used to safely retry managed model training.") @header("Operation-Id") - operationId?: string; + operation_id?: string; @doc("The managed reward-model training request.") @bodyRoot @@ -109,11 +109,11 @@ interface Models { @overload(Models.createTrainingJob) @pollingOperation(Models.getTrainingOperationResult) createGrpoTrainingJob is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, + FoundryFeaturesOptInKeys.training_jobs_v1_preview, { @doc("Idempotency key used to safely retry managed model training.") @header("Operation-Id") - operationId?: string; + operation_id?: string; @doc("The managed GRPO model training request.") @bodyRoot @@ -127,11 +127,11 @@ interface Models { @overload(Models.createTrainingJob) @pollingOperation(Models.getTrainingOperationResult) createPolicyGradientTrainingJob is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, + FoundryFeaturesOptInKeys.training_jobs_v1_preview, { @doc("Idempotency key used to safely retry managed model training.") @header("Operation-Id") - operationId?: string; + operation_id?: string; @doc("The managed online policy-gradient model training request.") @bodyRoot @@ -145,11 +145,11 @@ interface Models { @overload(Models.createTrainingJob) @pollingOperation(Models.getTrainingOperationResult) createPpoTrainingJob is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, + FoundryFeaturesOptInKeys.training_jobs_v1_preview, { @doc("Idempotency key used to safely retry managed model training.") @header("Operation-Id") - operationId?: string; + operation_id?: string; @doc("The managed PPO model training request.") @bodyRoot @@ -161,13 +161,13 @@ interface Models { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Foundry model training operations are exposed as product-action polling routes under models." @doc("Poll the result of a managed model training operation.") @get - @route("/models/operations/{operationId}/result") + @route("/models/operations/{operation_id}/result") getTrainingOperationResult is FoundryDataPlaneRequiredPreviewOperation< - FoundryFeaturesOptInKeys.jobs_v1_preview, + FoundryFeaturesOptInKeys.training_jobs_v1_preview, { @doc("The managed model training operation identifier.") @path - operationId: string; + operation_id: string; }, ModelTrainingOperation >; diff --git a/specification/ai-foundry/data-plane/Foundry/src/servicepatterns.tsp b/specification/ai-foundry/data-plane/Foundry/src/servicepatterns.tsp index 3d90d8860881..c4cbaf3d4408 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/servicepatterns.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/servicepatterns.tsp @@ -2,6 +2,10 @@ using Azure.ClientGenerator.Core; namespace Azure.AI.Projects; +@doc("Unix timestamp in seconds used by Foundry data-plane resources.") +@encode(DateTimeKnownEncoding.unixTimestamp, int64) +scalar FoundryTimestamp extends utcDateTime; + @doc("Defines the request parameters for the createOrUpdateVersion operations.") model InputParameters< TEntityType extends Reflection.Model, diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp similarity index 85% rename from specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp rename to specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp index 1936add3c9e7..d3730eaed221 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp @@ -2,6 +2,7 @@ import "../common/models.tsp"; import "../common/service.tsp"; +import "../servicepatterns.tsp"; using TypeSpec.Http; @@ -9,46 +10,46 @@ namespace Azure.AI.Projects; #suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "Use an extensible union instead of a plain string" @doc("Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, Ray, or null.") -@discriminator("distributionType") +@discriminator("distribution_type") model DistributionConfiguration { @doc("Specifies the type of distribution framework.") - distributionType: string; + distribution_type: string; } @doc("PyTorch distribution configuration.") model PyTorchDistribution extends DistributionConfiguration { @doc("Specifies the type of distribution framework.") - distributionType: "PyTorch"; + distribution_type: "pytorch"; @doc("Number of processes per node.") - processCountPerInstance?: int32; + process_count_per_instance?: int32; } @doc("MPI distribution configuration.") model MpiDistribution extends DistributionConfiguration { @doc("Specifies the type of distribution framework.") - distributionType: "Mpi"; + distribution_type: "mpi"; @doc("Number of processes per MPI node.") - processCountPerNode?: int32; + process_count_per_node?: int32; } @doc("TensorFlow distribution configuration.") model TensorFlowDistribution extends DistributionConfiguration { @doc("Specifies the type of distribution framework.") - distributionType: "TensorFlow"; + distribution_type: "tensorflow"; @doc("Number of workers. If not specified, will default to the instance count.") - workerCount?: int32; + worker_count?: int32; @doc("Number of parameter server tasks.") - parameterServerCount?: int32; + parameter_server_count?: int32; } @doc("Ray distribution configuration.") model RayDistribution extends DistributionConfiguration { @doc("Specifies the type of distribution framework.") - distributionType: "Ray"; + distribution_type: "ray"; @doc("The port of the head Ray process.") port?: int32; @@ -57,22 +58,22 @@ model RayDistribution extends DistributionConfiguration { address?: string; @doc("Whether to start the Ray dashboard GUI.") - includeDashboard?: boolean; + include_dashboard?: boolean; @doc("The port to bind the dashboard server to.") - dashboardPort?: int32; + dashboard_port?: int32; @doc("Additional arguments passed to ray start on the head node.") - headNodeAdditionalArgs?: string; + head_node_additional_args?: string; @doc("Additional arguments passed to ray start on worker nodes.") - workerNodeAdditionalArgs?: string; + worker_node_additional_args?: string; @doc("Whether to expose the Ray Client server port through the AML proxy for remote access. When true, the Ray Client port is registered as an interactive endpoint, enabling remote ray.init() connections via the WebSocket-TCP bridge. When false or omitted, the Ray Client port is not accessible externally.") - enableRemoteAccessClientServer?: boolean; + enable_remote_access_client_server?: boolean; - @doc("The port for the Ray Client server. Defaults to 10001. Only relevant when enableRemoteAccessClientServer is true.") - clientServerPort?: int32; + @doc("The port for the Ray Client server. Defaults to 10001. Only relevant when enable_remote_access_client_server is true.") + client_server_port?: int32; } @doc("Enum to determine the input/output data delivery mode.") @@ -80,19 +81,19 @@ union InputOutputModes { string, @doc("Read-only mount mode.") - ReadOnlyMount: "ReadOnlyMount", + read_only_mount: "read_only_mount", @doc("Read-write mount mode.") - ReadWriteMount: "ReadWriteMount", + read_write_mount: "read_write_mount", @doc("Download mode.") - Download: "Download", + download: "download", @doc("Direct mode.") - Direct: "Direct", + direct: "direct", @doc("Upload mode.") - Upload: "Upload", + upload: "upload", } @doc("Type of job input/output asset.") @@ -100,27 +101,25 @@ union AssetTypes { string, @doc("URI file asset.") - UriFile: "uri_file", + uri_file: "uri_file", @doc("URI folder asset.") - UriFolder: "uri_folder", + uri_folder: "uri_folder", @doc("Safetensors model asset.") - SafetensorsModel: "safetensors_model", + safetensors_model: "safetensors_model", @doc("Literal value (inputs only).") - Literal: "literal", + literal: "literal", } @doc("Job input definition.") model Input { @doc("Specifies the type of job input.") - @encodedName("application/json", "jobInputType") - type: AssetTypes; + job_input_type: AssetTypes; @doc("Input Asset URI. Required for uri_file, uri_folder, and safetensors_model types.") - @encodedName("application/json", "uri") - path?: string; + uri?: string; @doc("Input Asset Delivery Mode. Applies to uri-based inputs.") mode?: InputOutputModes; @@ -132,23 +131,22 @@ model Input { @doc("Job output definition.") model Output { @doc("Specifies the type of job output.") - @encodedName("application/json", "jobOutputType") - type: AssetTypes; + job_output_type: AssetTypes; @doc("Output Asset Delivery Mode.") mode?: InputOutputModes; @doc("Name of the output data asset to register.") - assetName?: string; + asset_name?: string; @doc("Version of the output data asset to register.") - assetVersion?: string; + asset_version?: string; @doc("Output Asset URI.") uri?: string; @doc("Base model ID. Applies to safetensors_model outputs.") - baseModelId?: string; + base_model_id?: string; @doc("Description for the output.") description?: string; @@ -156,28 +154,39 @@ model Output { #suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "Use an extensible union instead of a plain string" @doc("Nodes that user would like to start the service on.") -@discriminator("nodesValueType") +@discriminator("nodes_value_type") model NodeCollection { @doc("Type of the Nodes value.") - nodesValueType: string; + nodes_value_type: string; } @doc("All nodes means the service will be running on all of the nodes of the job.") model AllNodes extends NodeCollection { @doc("Type of the Nodes value.") - nodesValueType: "All"; + nodes_value_type: "all"; +} + +@doc("Job service endpoint type.") +union JobServiceType { + string, + + @doc("Studio endpoint.") + studio: "studio", + + @doc("Experiment tracking endpoint.") + tracking: "tracking", } @doc("Job endpoint definition.") model JobService { @doc("Endpoint type.") - jobServiceType?: string; + job_service_type?: JobServiceType; @doc("Port for endpoint.") port?: int32; @doc("Url for endpoint.") - endpoint?: string; + endpoint?: url; @doc("Additional properties to set on the endpoint.") properties?: Record; @@ -191,40 +200,41 @@ model JobService { @doc("Any error in the service.") @visibility(Lifecycle.Read) - errorMessage?: string; + error_message?: string; } @doc("Compute Resource configuration for the job.") model JobResourceConfiguration { @doc("Optional number of instances or nodes used by the compute target.") - instanceCount?: int32; + instance_count?: int32; @doc("Optional type of VM used as supported by the compute target.") - instanceType?: string; + instance_type?: string; @doc("Additional properties bag.") properties?: Record; @doc("Size of the docker container's shared memory block. This should be in the format of (number)(unit) where number as to be greater than 0 and the unit can be one of b(bytes), k(kilobytes), m(megabytes), or g(gigabytes).") - shmSize?: string; + shm_size?: string; @doc("Extra arguments to pass to the Docker run command. This would override any parameters that have already been set by the system, or in this section. This parameter is only supported for Azure ML compute types.") - dockerArgs?: string; + docker_args?: string; } @doc("Command Job limit class.") model CommandJobLimits { @doc("JobLimit type.") - jobLimitsType: "Command"; + job_limits_type: "command"; @doc("The max run duration in ISO 8601 format, after which the job will be cancelled. Only supports duration with precision as low as Seconds.") + @encode(DurationKnownEncoding.ISO8601) timeout?: duration; } @doc("Queue settings for the job.") model QueueSettings { @doc("Controls the compute job tier.") - jobTier?: string; + job_tier?: string; } @doc("Training algorithm used by a declarative training job.") @@ -232,37 +242,37 @@ union TrainingAlgorithm { string, @doc("Supervised fine tuning.") - Sft: "sft", + sft: "sft", @doc("Direct preference optimization.") - Dpo: "dpo", + dpo: "dpo", @doc("Kahneman-Tversky optimization.") - Kto: "kto", + kto: "kto", @doc("Odds ratio preference optimization.") - Orpo: "orpo", + orpo: "orpo", @doc("Contrastive preference optimization.") - Cpo: "cpo", + cpo: "cpo", @doc("Simple preference optimization.") - SimPo: "simpo", + simpo: "simpo", @doc("Group relative policy optimization.") - Grpo: "grpo", + grpo: "grpo", @doc("Proximal policy optimization.") - Ppo: "ppo", + ppo: "ppo", @doc("REINFORCE leave-one-out.") - Rloo: "rloo", + rloo: "rloo", @doc("REINFORCE++.") - ReinforcePp: "reinforce_pp", + reinforce_pp: "reinforce_pp", @doc("Reward model training.") - RewardModel: "reward_model", + reward_model: "reward_model", } @doc("Training framework used to lower a declarative training job into an execution command.") @@ -270,22 +280,22 @@ union TrainingFramework { string, @doc("TRL framework.") - Trl: "trl", + trl: "trl", @doc("VERL framework.") - Verl: "verl", + verl: "verl", @doc("OpenRLHF framework.") - OpenRlhf: "open_rlhf", + open_rlhf: "open_rlhf", @doc("NeMo RL framework.") - NemoRl: "nemo_rl", + nemo_rl: "nemo_rl", @doc("Slime framework.") - Slime: "slime", + slime: "slime", @doc("TorchForge framework.") - TorchForge: "torch_forge", + torch_forge: "torch_forge", } @doc("Chat template used to format conversational training data.") @@ -293,19 +303,19 @@ union ChatTemplate { string, @doc("ChatML template.") - Chatml: "chatml", + chatml: "chatml", @doc("Llama 3 chat template.") - Llama3: "llama-3", + llama_3: "llama_3", @doc("Zephyr chat template.") - Zephyr: "zephyr", + zephyr: "zephyr", @doc("Gemma chat template.") - Gemma: "gemma", + gemma: "gemma", @doc("Phi 3 chat template.") - Phi3: "phi-3", + phi_3: "phi_3", } @doc("Mapping from logical training fields to columns in the dataset.") @@ -338,10 +348,10 @@ model TrainingColumnMapping { @doc("Formatting options for conversational training data.") model TrainingDataFormatConfiguration { @doc("Built-in chat template to apply to the dataset.") - chatTemplate?: ChatTemplate; + chat_template?: ChatTemplate; @doc("Path to a custom chat template relative to the job's code directory.") - chatTemplatePath?: string; + chat_template_path?: string; } @doc("Dataset configuration for a declarative training job.") @@ -356,13 +366,13 @@ model TrainingDatasetConfiguration { columns?: TrainingColumnMapping; @doc("Conversational data formatting options.") - dataFormat?: TrainingDataFormatConfiguration; + data_format?: TrainingDataFormatConfiguration; } @doc("Reference to a Python callable relative to the job's code directory.") model TrainingEntryPointReference { @doc("Path to the Python callable in module/file.py:function format.") - entryPoint: string; + entry_point: string; } @doc("Python runtime dependencies for an inline function.") @@ -380,12 +390,37 @@ model TrainingInlineFunctionConfiguration { runtime?: TrainingInlineFunctionRuntime; } -#suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "Use an extensible union for forward-compatible reward and judge kinds." +@doc("Reward or judge signal kind.") +union TrainingRewardKind { + string, + + @doc("Learned reward model judge.") + `model`: "model", + + @doc("Python callable judge.") + function: "function", + + @doc("Inline Python callable judge.") + inline_function: "inline_function", + + @doc("Built-in reward or verifier judge.") + builtin: "builtin", + + @doc("Foundry evaluator judge.") + evaluator: "evaluator", + + @doc("Model deployment judge.") + deployment: "deployment", + + @doc("Composite judge.") + composite: "composite", +} + @doc("Reward or judge signal configuration for reinforcement or reward model training.") @discriminator("kind") model TrainingRewardConfiguration { @doc("Reward or judge signal kind.") - kind: string; + kind: TrainingRewardKind; } @doc("Learned reward model used as a judge.") @@ -413,8 +448,7 @@ model TrainingInlineFunctionRewardConfiguration kind: "inline_function"; @doc("Inline Python function used to compute reward scores.") - @encodedName("application/json", "inline_function") - inlineFunction: TrainingInlineFunctionConfiguration; + inline_function: TrainingInlineFunctionConfiguration; } @doc("Built-in reward or verifier type.") @@ -455,7 +489,7 @@ model TrainingEvaluatorRewardConfiguration extends TrainingRewardConfiguration { evaluator: string; @doc("Optional evaluator input mapping.") - inputMapping?: Record; + input_mapping?: Record; } @doc("Model deployment used as an LLM judge.") @@ -495,13 +529,13 @@ model TrainingLoraConfiguration { rank: int32; @doc("LoRA scaling factor.") - alpha?: int32; + alpha?: int32 = 16; @doc("Dropout applied to adapter inputs.") dropout?: float64 = 0.05; @doc("Linear layers that receive adapters. Use 'auto' to let the framework choose defaults.") - targetModules?: string = "auto"; + target_modules?: string = "auto"; @doc("Whether to enable QLoRA 4-bit base weight loading.") quantize?: boolean = false; @@ -512,16 +546,16 @@ union TrainingRolloutEngine { string, @doc("vLLM inference engine.") - Vllm: "vllm", + vllm: "vllm", @doc("SGLang inference engine.") - Sglang: "sglang", + sglang: "sglang", @doc("Hugging Face generate-based inference.") - Hf: "hf", + hf: "hf", @doc("Megatron-Core native inference.") - MegatronInference: "megatron_inference", + megatron_inference: "megatron_inference", } @doc("Rollout generation configuration for online reinforcement learning.") @@ -530,34 +564,34 @@ model TrainingRolloutConfiguration { engine: TrainingRolloutEngine; @doc("Number of completions to generate for each prompt.") - numGenerations?: int32; + num_generations?: int32; @doc("Maximum prompt length in tokens.") - maxPromptLength?: int32; + max_prompt_length?: int32; @doc("Maximum completion length in tokens.") - maxCompletionLength?: int32; + max_completion_length?: int32; @doc("Sampling temperature for rollout generation.") temperature?: float64; @doc("Nucleus sampling probability for rollout generation.") - topP?: float64; + top_p?: float64; @doc("Stop sequences for rollout generation.") stop?: string[]; @doc("Rollout batch size.") - batchSize?: int32; + batch_size?: int32; @doc("Random seed for rollout generation.") seed?: int32; @doc("Tensor parallel size used by the rollout engine.") - tensorParallelSize?: int32 = 1; + tensor_parallel_size?: int32 = 1; @doc("GPU memory utilization target for the rollout engine, between 0.0 and 1.0.") - gpuMemoryUtilization?: float64; + gpu_memory_utilization?: float64; } @doc("Built-in evaluation benchmark.") @@ -565,22 +599,22 @@ union TrainingEvalBenchmark { string, @doc("Grade School Math 8K benchmark.") - Gsm8k: "gsm8k", + gsm8k: "gsm8k", @doc("Massive Multitask Language Understanding benchmark.") - Mmlu: "mmlu", + mmlu: "mmlu", @doc("Human-written code generation benchmark.") - Humaneval: "humaneval", + humaneval: "humaneval", @doc("Mostly Basic Python Programs benchmark.") - Mbpp: "mbpp", + mbpp: "mbpp", @doc("AI2 Reasoning Challenge benchmark.") - Arc: "arc", + arc: "arc", @doc("HellaSwag commonsense inference benchmark.") - Hellaswag: "hellaswag", + hellaswag: "hellaswag", } @doc("Evaluation configuration for a declarative training job.") @@ -592,11 +626,11 @@ model TrainingEvalConfiguration { dataset?: string; @doc("Evaluation frequency in training steps. Omit for end-of-training only.") - everyNSteps?: int32; + every_n_steps?: int32; } #suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "Use an extensible union for forward-compatible training algorithms." -@doc("Declarative training recipe. When specified, command must be omitted and environmentImageReference is optional.") +@doc("Declarative training recipe. When specified, command must be omitted and environment_image_reference is optional.") @discriminator("algorithm") model TrainingConfiguration { @doc("Training algorithm.") @@ -607,11 +641,11 @@ model TrainingConfiguration { @doc("Training framework resolved by the service.") @visibility(Lifecycle.Read) - resolvedFramework?: TrainingFramework; + resolved_framework?: TrainingFramework; @doc("Version of the resolved training framework used by the service.") @visibility(Lifecycle.Read) - frameworkVersion?: string; + framework_version?: string; @doc("Base model asset reference.") `model`: string; @@ -783,27 +817,27 @@ model RewardModelTrainingConfiguration extends TrainingConfiguration { model SystemData { @doc("The identity that created the resource.") @visibility(Lifecycle.Read) - createdBy?: string; + created_by?: string; @doc("The type of identity that created the resource.") @visibility(Lifecycle.Read) - createdByType?: string; + created_by_type?: string; @doc("The timestamp of resource creation (UTC).") @visibility(Lifecycle.Read) - createdAt?: utcDateTime; + created_at?: FoundryTimestamp; @doc("The identity that last modified the resource.") @visibility(Lifecycle.Read) - lastModifiedBy?: string; + last_modified_by?: string; @doc("The type of identity that last modified the resource.") @visibility(Lifecycle.Read) - lastModifiedByType?: string; + last_modified_by_type?: string; @doc("The timestamp of resource last modification (UTC).") @visibility(Lifecycle.Read) - lastModifiedAt?: utcDateTime; + last_modified_at?: FoundryTimestamp; } @doc("Type of a job.") @@ -811,33 +845,33 @@ union JobType { string, @doc("Command job.") - Command: "Command", + command: "command", } #suppress "@azure-tools/typespec-azure-core/no-string-discriminator" "Use an extensible union instead of a plain string" @doc("Base properties of a Job.") -@discriminator("jobType") +@discriminator("job_type") model JobProperties { @doc("Job type.") - jobType: string; + job_type: string; } @doc("Properties of a Command Job.") model CommandJob extends JobProperties { @doc("Job type.") - jobType: "Command"; + job_type: "command"; @doc("The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified.") command?: string; @doc("ACR path or Azure ML environment reference. Required when training is not specified.") - environmentImageReference?: string; + environment_image_reference?: string; @doc("Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution.") training?: TrainingConfiguration; @doc("Display name of job.") - displayName?: string; + display_name?: string; @doc("The asset description text.") description?: string; @@ -849,12 +883,10 @@ model CommandJob extends JobProperties { properties?: Record; @doc("Code asset reference.") - @encodedName("application/json", "codeId") - code?: string; + code_id?: string; @doc("Compute resource ID.") - @encodedName("application/json", "computeId") - compute: string; + compute_id: string; @doc("Mapping of input data bindings used in the job.") inputs?: Record; @@ -863,13 +895,13 @@ model CommandJob extends JobProperties { outputs?: Record; @doc("Environment variables included in the job.") - environmentVariables?: Record; + environment_variables?: Record; @doc("Compute Resource configuration for the job.") resources?: JobResourceConfiguration; @doc("Number of GPUs requested by the training job.") - gpuCount?: int32; + gpu_count?: int32; @doc("Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null.") distribution?: DistributionConfiguration; @@ -878,10 +910,10 @@ model CommandJob extends JobProperties { limits?: CommandJobLimits; @doc("Queue settings for the job.") - queueSettings?: QueueSettings; + queue_settings?: QueueSettings; @doc("user-assigned managed identity") - userAssignedIdentityId?: string; + user_assigned_identity_id?: string; @doc("Status of the job.") @visibility(Lifecycle.Read) @@ -909,7 +941,7 @@ model Job { @doc("Metadata pertaining to creation and last modification of the resource.") @visibility(Lifecycle.Read) - systemData?: SystemData; + system_data?: SystemData; } @doc("Request body for creating a training job.") @@ -931,11 +963,11 @@ model JobDeleteAcceptedResponse { @doc("URL to poll for the status of the delete operation.") @header("Operation-Location") - operationLocation?: string; + operation_location?: string; @doc("Suggested delay in seconds before polling.") @header("Retry-After") - retryAfter?: int32; + retry_after?: int32; } @doc("Response returned when a job cancel operation is accepted asynchronously.") @@ -948,11 +980,11 @@ model JobCancelAcceptedResponse { @doc("URL to poll for the status of the cancel operation.") @header("Operation-Location") - operationLocation?: string; + operation_location?: string; @doc("Suggested delay in seconds before polling.") @header("Retry-After") - retryAfter?: int32; + retry_after?: int32; } @doc("Status of an asynchronous training job operation.") @@ -960,19 +992,19 @@ union JobOperationStatus { string, @doc("Operation is being processed.") - InProgress: "InProgress", + in_progress: "in_progress", @doc("Operation is deleting resources.") - Deleting: "Deleting", + deleting: "deleting", @doc("Operation completed successfully.") - Succeeded: "Succeeded", + succeeded: "succeeded", @doc("Operation failed.") - Failed: "Failed", + failed: "failed", @doc("Operation was canceled.") - Canceled: "Canceled", + canceled: "canceled", } @doc("Error details for an asynchronous training job operation.") @@ -1007,15 +1039,15 @@ model JobOperationResource { @doc("Operation start time.") @visibility(Lifecycle.Read) - startTime?: utcDateTime; + started_at?: FoundryTimestamp; @doc("Operation end time.") @visibility(Lifecycle.Read) - endTime?: utcDateTime; + ended_at?: FoundryTimestamp; @doc("Operation completion percentage from 0 to 100.") @visibility(Lifecycle.Read) - percentComplete?: float64; + percent_complete?: float64; @doc("Operation error information.") @visibility(Lifecycle.Read) @@ -1032,7 +1064,7 @@ model JobOperationAcceptedResponse { @doc("URL to poll for the operation status.") @header("Operation-Location") - operationLocation?: string; + operation_location?: string; } @doc("Specifies which jobs to include in a list result based on their lifecycle state.") @@ -1040,13 +1072,13 @@ union ListViewType { string, @doc("Show only active (non-archived) jobs.") - ActiveOnly: "ActiveOnly", + active_only: "active_only", @doc("Show only archived jobs.") - ArchivedOnly: "ArchivedOnly", + archived_only: "archived_only", @doc("Show all jobs regardless of archived state.") - All: "All", + all: "all", } @doc("Status of a job execution attempt.") @@ -1054,19 +1086,19 @@ union JobAttemptStatus { string, @doc("The attempt is queued.") - Queued: "Queued", + queued: "queued", @doc("The attempt is running.") - Running: "Running", + running: "running", @doc("The attempt completed successfully.") - Completed: "Completed", + completed: "completed", @doc("The attempt failed.") - Failed: "Failed", + failed: "failed", @doc("The attempt was canceled.") - Canceled: "Canceled", + canceled: "canceled", } @doc("Warning emitted during a job attempt.") @@ -1097,7 +1129,7 @@ model JobAttemptError { model TrainingJobService { @doc("Service type.") @visibility(Lifecycle.Read) - type?: string; + type?: JobServiceType; @doc("Service port.") @visibility(Lifecycle.Read) @@ -1113,7 +1145,7 @@ model TrainingJobService { @doc("Service endpoint URI.") @visibility(Lifecycle.Read) - endpoint?: string; + endpoint?: url; @doc("Additional service properties.") @visibility(Lifecycle.Read) @@ -1131,19 +1163,19 @@ model TrainingJobServiceCollection { model JobAttemptComputeDetails { @doc("Virtual machine size used for this attempt.") @visibility(Lifecycle.Read) - vmSize?: string; + vm_size?: string; @doc("Instance type used for this attempt.") @visibility(Lifecycle.Read) - instanceType?: string; + instance_type?: string; @doc("Number of instances allocated to this attempt.") @visibility(Lifecycle.Read) - instanceCount?: int32; + instance_count?: int32; @doc("Number of GPUs allocated to this attempt.") @visibility(Lifecycle.Read) - gpuCount?: int32; + gpu_count?: int32; @doc("Region where this attempt was placed.") @visibility(Lifecycle.Read) @@ -1162,7 +1194,7 @@ model JobAttempt { @doc("The job name this attempt belongs to.") @visibility(Lifecycle.Read) - jobName: string; + job_name: string; @doc("The attempt status.") @visibility(Lifecycle.Read) @@ -1170,31 +1202,32 @@ model JobAttempt { @doc("Additional status reason.") @visibility(Lifecycle.Read) - statusReason?: string; + status_reason?: string; @doc("Time the attempt started.") @visibility(Lifecycle.Read) - startTimeUtc?: utcDateTime; + started_at?: FoundryTimestamp; @doc("Time the attempt ended.") @visibility(Lifecycle.Read) - endTimeUtc?: utcDateTime; + ended_at?: FoundryTimestamp; @doc("Most recent time the attempt started running.") @visibility(Lifecycle.Read) - lastStartTimeUtc?: utcDateTime; + last_started_at?: FoundryTimestamp; @doc("Total compute duration consumed by the attempt.") @visibility(Lifecycle.Read) - computeDuration?: duration; + @encode(DurationKnownEncoding.ISO8601) + compute_duration?: duration; @doc("Queueing details associated with the attempt.") @visibility(Lifecycle.Read) - queueingInfo?: Record; + queueing_info?: Record; @doc("Compute details associated with the attempt.") @visibility(Lifecycle.Read) - computeDetails?: JobAttemptComputeDetails; + compute_details?: JobAttemptComputeDetails; @doc("Terminal error for the attempt, if any.") @visibility(Lifecycle.Read) @@ -1206,7 +1239,7 @@ model JobAttempt { @doc("Whether this attempt is the current attempt for the job.") @visibility(Lifecycle.Read) - isCurrent?: boolean; + is_latest?: boolean; } @doc("Type of a job artifact.") @@ -1214,10 +1247,10 @@ union JobArtifactType { string, @doc("A file artifact.") - File: "File", + file: "file", @doc("A directory artifact.") - Directory: "Directory", + directory: "directory", } @doc("Metadata for an artifact produced by or attached to a job.") @@ -1228,7 +1261,7 @@ model JobArtifact { @doc("Artifact type.") @visibility(Lifecycle.Read) - type?: JobArtifactType; + type: JobArtifactType; @doc("Artifact size in bytes.") @visibility(Lifecycle.Read) @@ -1236,11 +1269,11 @@ model JobArtifact { @doc("Time the artifact was created.") @visibility(Lifecycle.Read) - createdTimeUtc?: utcDateTime; + created_at?: FoundryTimestamp; @doc("Time the artifact was last updated.") @visibility(Lifecycle.Read) - updatedTimeUtc?: utcDateTime; + updated_at?: FoundryTimestamp; } @doc("Content access information for a job artifact.") @@ -1251,15 +1284,15 @@ model JobArtifactContentInfo { @doc("Download URI for the artifact content.") @visibility(Lifecycle.Read) - contentUri?: url; + content_uri: url; @doc("MIME type of the content.") @visibility(Lifecycle.Read) - contentType?: string; + content_type?: string; @doc("Time the content URI expires.") @visibility(Lifecycle.Read) - expiresAtUtc?: utcDateTime; + expires_at?: FoundryTimestamp; } @doc("The kind of metric emitted by a job.") @@ -1267,13 +1300,13 @@ union JobMetricType { string, @doc("Scalar metric values.") - Scalar: "Scalar", + `scalar`: "scalar", @doc("Table metric values.") - Table: "Table", + table: "table", @doc("Image metric values.") - Image: "Image", + image: "image", } @doc("Metadata for a metric emitted by a job or run.") @@ -1284,7 +1317,7 @@ model JobMetric { @doc("Metric type.") @visibility(Lifecycle.Read) - metricType?: JobMetricType; + metric_type?: JobMetricType; @doc("Column metadata for structured metric values.") @visibility(Lifecycle.Read) @@ -1295,7 +1328,7 @@ model JobMetric { model JobMetricPoint { @doc("Metric identifier.") @visibility(Lifecycle.Read) - metricId?: string; + metric_id?: string; @doc("Metric step.") @visibility(Lifecycle.Read) @@ -1303,7 +1336,7 @@ model JobMetricPoint { @doc("Time the metric point was created.") @visibility(Lifecycle.Read) - createdUtc?: utcDateTime; + created_at?: FoundryTimestamp; @doc("Metric data values.") @visibility(Lifecycle.Read) @@ -1329,11 +1362,11 @@ model JobMetricAggregate { @doc("Aggregate window start.") @visibility(Lifecycle.Read) - startUtc?: utcDateTime; + started_at?: FoundryTimestamp; @doc("Aggregate window end.") @visibility(Lifecycle.Read) - endUtc?: utcDateTime; + ended_at?: FoundryTimestamp; @doc("Aggregate values.") @visibility(Lifecycle.Read) @@ -1371,43 +1404,29 @@ model JobOutputReference { @doc("Registered asset name, if the output produced an asset.") @visibility(Lifecycle.Read) - assetName?: string; + asset_name?: string; @doc("Registered asset version, if the output produced an asset.") @visibility(Lifecycle.Read) - assetVersion?: string; + asset_version?: string; @doc("Base model ID for model outputs.") @visibility(Lifecycle.Read) - baseModelId?: string; + base_model_id?: string; @doc("Output description.") @visibility(Lifecycle.Read) description?: string; } -alias JobPagedListQueryParameters = { - @doc("Maximum number of items to return.") - @query - limit?: int32; +alias JobPagedListQueryParameters = CommonPageQueryParameters; - @doc("Continuation token returned by a previous list request.") - @query - @continuationToken - skipToken?: string; -}; - -alias JobContinuationListQueryParameters = { - @doc("Continuation token returned by a previous list request.") - @query - @continuationToken - skipToken?: string; -}; +alias JobContinuationListQueryParameters = CommonPageQueryParameters; alias JobArtifactListQueryParameters = JobPagedListQueryParameters & { @doc("Artifact path prefix to list.") @query - pathPrefix?: string; + path_prefix?: string; }; alias JobMetricListQueryParameters = JobPagedListQueryParameters; @@ -1415,36 +1434,33 @@ alias JobMetricListQueryParameters = JobPagedListQueryParameters; alias JobArtifactContentInfoByPrefixQueryParameters = { @doc("Artifact path prefix to list download information for. If omitted, download information is returned for the artifact root.") @query - pathPrefix?: string; + path_prefix?: string; - @doc("Continuation token returned by a previous list request.") - @query - @continuationToken - skipToken?: string; + ...CommonPageQueryParameters; }; alias JobServicesQueryParameters = { @doc("Node identifier whose service endpoints should be returned. If omitted, leader-node services are returned.") @query - nodeId?: int32; + node_id?: int32; }; alias JobMetricQueryParameters = { @doc("Start of the metric time range.") @query - startTimeUtc?: utcDateTime; + started_at?: FoundryTimestamp; @doc("End of the metric time range.") @query - endTimeUtc?: utcDateTime; + ended_at?: FoundryTimestamp; @doc("Minimum metric step to include.") @query - minStep?: int64; + min_step?: int64; @doc("Maximum metric step to include.") @query - maxStep?: int64; + max_step?: int64; @doc("Maximum number of metric points to return.") @query diff --git a/specification/ai-foundry/data-plane/Foundry/src/jobs/readme.md b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/readme.md similarity index 81% rename from specification/ai-foundry/data-plane/Foundry/src/jobs/readme.md rename to specification/ai-foundry/data-plane/Foundry/src/training_jobs/readme.md index 7f253036f682..129b4b5355e9 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/jobs/readme.md +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/readme.md @@ -1,6 +1,6 @@ -# Foundry Jobs TypeSpec +# Foundry Training Jobs TypeSpec > see https://aka.ms/autorest diff --git a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp new file mode 100644 index 000000000000..18e0948cf039 --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp @@ -0,0 +1,518 @@ +import "./models.tsp"; +import "../common/models.tsp"; + +using TypeSpec.Http; +using TypeSpec.Rest; +using Azure.Core.Traits; + +namespace Azure.AI.Projects; + +alias TrainingJobsPreviewHeader = WithRequiredFoundryPreviewHeader; + +alias JobsFilterQueryParams = { + @doc("Filter by job type (e.g. 'Command').") + @query + job_type?: JobType; + + @doc("Filter jobs by tag in the format 'key=value' (e.g., 'framework=pytorch').") + @query + tag?: string; + + @doc("Specifies which view type to apply when listing jobs.") + @query + list_view_type?: ListViewType; + + @doc("Comma-separated user property names and optionally values. Example: prop1,prop2=value2.") + @query + properties?: string; + + ...CommonPageQueryParameters; +}; + +@doc("Training job attempt identifier. Use 'latest' for the latest attempt.") +union JobAttemptIdentifier { + string, + + @doc("The latest training job attempt.") + latest: "latest", +} + +@tag("TrainingJobs") +interface TrainingJobs { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "We need explicit definition for header support" + @doc("List training jobs.") + @get + @route("/training_jobs") + @list + list is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + JobsFilterQueryParams, + AgentsPagedResult + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "We need explicit definition for header support" + @doc("Get a training job by name.") + @get + get is Azure.Core.Foundations.ResourceOperation< + Job, + { + ...TrainingJobsPreviewHeader; + }, + Azure.Core.Foundations.ResourceOkResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job services are projected from run history service instances." + @doc("List service endpoints for the current view of a training job.") + @get + @route("/training_jobs/{job_name}/services") + showServices is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + ...JobServicesQueryParameters; + }, + TrainingJobServiceCollection + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Jobs use Operation-Id based idempotent submission." + @doc("Create and execute a model training job.") + @post + @route("/training_jobs") + create is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("Idempotency key used to safely retry job creation.") + @header("Operation-Id") + operation_id?: string; + + @doc("The training job to create.") + @bodyRoot + job: JobCreate; + }, + ResourceCreatedResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "LRO delete returns 202 with Location and Operation-Location headers for polling, or 204 when job not found" + #suppress "@azure-tools/typespec-azure-core/no-response-body" "Delete LRO returns 202 with Location header, 204 with no body" + @doc("Delete a training job by name. Returns 202 Accepted with Location and Operation-Location headers to poll for completion, or 204 if the job does not exist.") + @delete + beginDelete is Azure.Core.Foundations.ResourceOperation< + Job, + { + ...TrainingJobsPreviewHeader; + }, + JobDeleteAcceptedResponse | Http.NoContentResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "LRO cancel returns 200 synchronously or 202 with Location and Operation-Location headers for async polling" + #suppress "@azure-tools/typespec-azure-core/no-response-body" "Cancel LRO returns 200 or 202 with Location header, no body" + @doc("Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with Location and Operation-Location headers to poll for completion.") + @post + @Rest.action("cancel") + @actionSeparator(":") + beginCancel is Azure.Core.Foundations.ResourceOperation< + Job, + { + ...TrainingJobsPreviewHeader; + }, + Http.OkResponse | JobCancelAcceptedResponse + >; +} // interface TrainingJobs + +@tag("TrainingJobs") +interface TrainingJobOperations { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Foundry job operations are exposed as data-plane polling routes under training_jobs." + #suppress "@azure-tools/typespec-azure-core/no-response-body" "The operation result route can return 202/200 with no body or a terminal operation resource." + @doc("Poll the result of an asynchronous training job operation.") + @get + @route("/training_jobs/operations/{operation_id}/result") + getOperationResult is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The operation identifier returned by a training job create, cancel, or delete request.") + @path + operation_id: string; + }, + JobOperationResource | JobOperationAcceptedResponse | Http.OkResponse + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Foundry job operations are exposed as data-plane polling routes under training_jobs." + #suppress "@azure-tools/typespec-azure-core/no-response-body" "The operation status route can return 200 with no body or an operation resource." + @doc("Poll the status of an asynchronous training job operation.") + @get + @route("/training_jobs/operations/{operation_id}/status") + getOperationStatus is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The operation identifier returned by a training job create, cancel, or delete request.") + @path + operation_id: string; + }, + JobOperationResource | Http.OkResponse + >; +} + +@tag("TrainingJobs") +interface TrainingJobAttempts { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job attempts are projected from job execution history." + @doc("List attempts for a training job.") + @get + @route("/training_jobs/{job_name}/attempts") + listAttempts is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + ...JobContinuationListQueryParameters; + }, + AgentsPagedResult + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job attempts are projected from job execution history." + @doc("Get one attempt for a training job.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}") + getAttempt is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier.") + @path + attempt_id: string; + }, + JobAttempt + >; +} + +@tag("TrainingJobs") +interface TrainingJobAttemptArtifacts { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." + @doc("List artifacts for a training job attempt. Use 'latest' for the latest attempt.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}/artifacts") + listAttemptArtifacts is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier, or 'latest' for the latest attempt.") + @path + attempt_id: JobAttemptIdentifier; + + ...JobArtifactListQueryParameters; + }, + AgentsPagedResult + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." + @doc("Get metadata for an artifact from a training job attempt. Use 'latest' for the latest attempt.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}/artifacts/metadata") + getAttemptArtifactMetadata is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier, or 'latest' for the latest attempt.") + @path + attempt_id: JobAttemptIdentifier; + + @doc("The artifact path.") + @query + path: string; + }, + JobArtifact + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." + @doc("Get download information for an artifact from a training job attempt. Use 'latest' for the latest attempt.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}/artifacts/content_info") + getAttemptArtifactContentInfo is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier, or 'latest' for the latest attempt.") + @path + attempt_id: JobAttemptIdentifier; + + @doc("The artifact path.") + @query + path: string; + }, + JobArtifactContentInfo + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." + @doc("List download information for artifacts under a path prefix from a training job attempt. Use 'latest' for the latest attempt.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}/artifacts/content_info_by_prefix") + getAttemptArtifactContentInfoByPrefix is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier, or 'latest' for the latest attempt.") + @path + attempt_id: JobAttemptIdentifier; + + ...JobArtifactContentInfoByPrefixQueryParameters; + }, + AgentsPagedResult + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." + #suppress "@azure-tools/typespec-azure-core/byos" "Job artifact content is produced by the job and streamed back to the caller." + @doc("Download artifact content from a training job attempt. Use 'latest' for the latest attempt.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}/artifacts/content") + downloadAttemptArtifact is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier, or 'latest' for the latest attempt.") + @path + attempt_id: JobAttemptIdentifier; + + @doc("The artifact path.") + @query + path: string; + }, + bytes + >; +} + +@tag("TrainingJobs") +interface TrainingJobAttemptMetrics { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("List metrics emitted by a training job attempt. Use 'latest' for the latest attempt.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}/metrics") + listAttemptMetrics is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier, or 'latest' for the latest attempt.") + @path + attempt_id: JobAttemptIdentifier; + + ...JobMetricListQueryParameters; + }, + AgentsPagedResult + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("Get latest metric values for a training job attempt. Use 'latest' for the latest attempt.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}/metrics/last_values") + getAttemptMetricLastValues is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier, or 'latest' for the latest attempt.") + @path + attempt_id: JobAttemptIdentifier; + }, + AgentsPagedResult + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("Get the full history for a metric from a training job attempt. Use 'latest' for the latest attempt.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}/metrics/{metric_name}") + getAttemptMetric is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier, or 'latest' for the latest attempt.") + @path + attempt_id: JobAttemptIdentifier; + + @doc("The metric name.") + @path + metric_name: string; + + ...JobMetricQueryParameters; + }, + AgentsPagedResult + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("Get aggregate metric values from a training job attempt. Use 'latest' for the latest attempt.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}/metrics/{metric_name}/aggregates") + getAttemptMetricAggregates is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier, or 'latest' for the latest attempt.") + @path + attempt_id: JobAttemptIdentifier; + + @doc("The metric name.") + @path + metric_name: string; + + ...JobMetricQueryParameters; + }, + AgentsPagedResult + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("Get sampled metric values from a training job attempt. Use 'latest' for the latest attempt.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}/metrics/{metric_name}/samples") + getAttemptMetricSamples is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier, or 'latest' for the latest attempt.") + @path + attempt_id: JobAttemptIdentifier; + + @doc("The metric name.") + @path + metric_name: string; + + ...JobMetricQueryParameters; + }, + JobMetricSample + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." + @doc("Get one sampled value or window from a training job attempt. Use 'latest' for the latest attempt.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}/metrics/{metric_name}/sample") + getAttemptMetricSample is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier, or 'latest' for the latest attempt.") + @path + attempt_id: JobAttemptIdentifier; + + @doc("The metric name.") + @path + metric_name: string; + + ...JobMetricQueryParameters; + }, + JobMetricSample + >; +} + +@tag("TrainingJobs") +interface TrainingJobOutputs { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job outputs are projected from job outputs and asset relationships." + @doc("List outputs produced by a training job.") + @get + @route("/training_jobs/{job_name}/outputs") + listOutputs is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + }, + AgentsPagedResult + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job outputs are projected from job outputs and asset relationships." + @doc("Get one output produced by a training job.") + @get + @route("/training_jobs/{job_name}/outputs/{output_name}") + getOutput is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The output name.") + @path + output_name: string; + }, + JobOutputReference + >; +} + +@tag("TrainingJobs") +interface TrainingJobAttemptOutputs { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt outputs are projected from attempt output state and asset relationships." + @doc("List outputs produced by a specific training job attempt.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}/outputs") + listAttemptOutputs is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier.") + @path + attempt_id: string; + }, + AgentsPagedResult + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt outputs are projected from attempt output state and asset relationships." + @doc("Get one output produced by a specific training job attempt.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}/outputs/{output_name}") + getAttemptOutput is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier.") + @path + attempt_id: string; + + @doc("The output name.") + @path + output_name: string; + }, + JobOutputReference + >; +} From 17e90204711df95a4e5cf2620ac1511669768f96 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Thu, 7 May 2026 01:17:24 -0700 Subject: [PATCH 24/37] feat(foundry): add interactive Ray SDK job model Add an SDK-only InteractiveRayJob input shape for creating Ray-backed command jobs through the existing training jobs create operation. Limit the convenience framework enum to Slime and VERL, and remove stale SDK relocation hooks for artifact and metric operation groups that no longer exist. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ai-foundry/data-plane/Foundry/client.tsp | 9 ++ .../Foundry/relocate-beta-operations.tsp | 32 ------ .../Foundry/src/training_jobs/models.tsp | 108 ++++++++++++++++++ 3 files changed, 117 insertions(+), 32 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/client.tsp b/specification/ai-foundry/data-plane/Foundry/client.tsp index a2b590e6e7df..531ac31af0f0 100644 --- a/specification/ai-foundry/data-plane/Foundry/client.tsp +++ b/specification/ai-foundry/data-plane/Foundry/client.tsp @@ -250,6 +250,15 @@ using Azure.AI.Projects; @@clientName(Azure.AI.Projects.TrainingJobs.list, "list", "python"); @@clientName(Azure.AI.Projects.TrainingJobs.create, "create", "python"); @@clientName(Azure.AI.Projects.TrainingJobs.create, "create", "javascript"); +@@alternateType(JobCreate, InteractiveRayJob); +@@usage(InteractiveRayJob, Usage.input); +@@access(InteractiveRayJob, Access.public); +@@usage(InteractiveRayJobProperties, Usage.input); +@@access(InteractiveRayJobProperties, Access.public); +@@usage(InteractiveRayJobTrainingConfiguration, Usage.input); +@@access(InteractiveRayJobTrainingConfiguration, Access.public); +@@usage(InteractiveRayJobFramework, Usage.input); +@@access(InteractiveRayJobFramework, Access.public); @@clientName(Azure.AI.Projects.Beta.Model, "model", "python"); @@clientName(Azure.AI.Projects.Beta.Model, "model", "javascript"); @@clientName(Azure.AI.Projects.Beta.Model.TrainingJobs, diff --git a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp index 4a8e6f3c4cd0..62eeab9440ad 100644 --- a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp +++ b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp @@ -97,19 +97,6 @@ namespace Model { Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobArtifacts.listArtifacts, - Model.TrainingJobs -); -@@clientLocation(Azure.AI.Projects.TrainingJobArtifacts.getArtifactMetadata, - Model.TrainingJobs -); -@@clientLocation(Azure.AI.Projects.TrainingJobArtifacts.getArtifactContentInfo, - Model.TrainingJobs -); -@@clientLocation(Azure.AI.Projects.TrainingJobArtifacts.downloadArtifact, - Model.TrainingJobs -); - @@clientLocation(Azure.AI.Projects.TrainingJobAttemptArtifacts.listAttemptArtifacts, Model.TrainingJobs ); @@ -123,25 +110,6 @@ namespace Model { Model.TrainingJobs ); -@@clientLocation(Azure.AI.Projects.TrainingJobMetrics.listMetrics, - Model.TrainingJobs -); -@@clientLocation(Azure.AI.Projects.TrainingJobMetrics.getMetricLastValues, - Model.TrainingJobs -); -@@clientLocation(Azure.AI.Projects.TrainingJobMetrics.getMetric, - Model.TrainingJobs -); -@@clientLocation(Azure.AI.Projects.TrainingJobMetrics.getMetricAggregates, - Model.TrainingJobs -); -@@clientLocation(Azure.AI.Projects.TrainingJobMetrics.getMetricSamples, - Model.TrainingJobs -); -@@clientLocation(Azure.AI.Projects.TrainingJobMetrics.getMetricSample, - Model.TrainingJobs -); - @@clientLocation(Azure.AI.Projects.TrainingJobAttemptMetrics.listAttemptMetrics, Model.TrainingJobs ); diff --git a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp index d3730eaed221..5dbe02a540e3 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp @@ -298,6 +298,15 @@ union TrainingFramework { torch_forge: "torch_forge", } +@doc("Training framework supported by the interactive Ray job convenience model.") +union InteractiveRayJobFramework { + @doc("Slime framework.") + slime: "slime", + + @doc("VERL framework.") + verl: "verl", +} + @doc("Chat template used to format conversational training data.") union ChatTemplate { string, @@ -813,6 +822,36 @@ model RewardModelTrainingConfiguration extends TrainingConfiguration { eval?: TrainingEvalConfiguration; } +@doc("Declarative training recipe for an interactive Ray job. The framework is limited to Slime and VERL.") +model InteractiveRayJobTrainingConfiguration { + @doc("Training algorithm.") + algorithm: TrainingAlgorithm; + + @doc("Training framework implementation for the interactive Ray job.") + framework: InteractiveRayJobFramework; + + @doc("Base model asset reference.") + `model`: string; + + @doc("Training and optional evaluation datasets.") + dataset: TrainingDatasetConfiguration; + + @doc("Algorithm-specific hyperparameters.") + hyperparameters?: Record; + + @doc("Reward or judge signal configuration for reinforcement or reward model training.") + reward?: TrainingRewardConfiguration; + + @doc("LoRA adapter configuration.") + lora?: TrainingLoraConfiguration; + + @doc("Rollout generation configuration.") + rollout?: TrainingRolloutConfiguration; + + @doc("Evaluation configuration.") + eval?: TrainingEvalConfiguration; +} + @doc("Metadata pertaining to creation and last modification of the resource.") model SystemData { @doc("The identity that created the resource.") @@ -920,6 +959,66 @@ model CommandJob extends JobProperties { status?: string; } +@doc("Properties of an interactive Ray training job. This is an SDK convenience shape for creating a command job with Ray distribution.") +model InteractiveRayJobProperties { + @doc("Job type, always 'command'.") + job_type: "command"; + + @doc("The command to execute on startup of the interactive Ray job. Required when training is not specified, and must be omitted when training is specified.") + command?: string; + + @doc("ACR path or Azure ML environment reference. Required when training is not specified.") + environment_image_reference?: string; + + @doc("Declarative training recipe for Slime or VERL running on Ray.") + training?: InteractiveRayJobTrainingConfiguration; + + @doc("Display name of job.") + display_name?: string; + + @doc("The asset description text.") + description?: string; + + @doc("Tag dictionary. Tags can be added, removed, and updated.") + tags?: Record; + + @doc("The asset property dictionary.") + properties?: Record; + + @doc("Code asset reference.") + code_id?: string; + + @doc("Compute resource ID.") + compute_id: string; + + @doc("Mapping of input data bindings used in the job.") + inputs?: Record; + + @doc("Mapping of output data bindings used in the job.") + outputs?: Record; + + @doc("Environment variables included in the job.") + environment_variables?: Record; + + @doc("Compute Resource configuration for the job.") + resources?: JobResourceConfiguration; + + @doc("Number of GPUs requested by the training job.") + gpu_count?: int32; + + @doc("Ray distribution configuration for the interactive job.") + distribution: RayDistribution; + + @doc("Command Job limit.") + limits?: CommandJobLimits; + + @doc("Queue settings for the job.") + queue_settings?: QueueSettings; + + @doc("User-assigned managed identity.") + user_assigned_identity_id?: string; +} + @doc("Training job resource.") @Rest.resource("training_jobs") model Job { @@ -953,6 +1052,15 @@ model JobCreate { properties: JobProperties; } +@doc("Request body for creating an interactive Ray training job. This SDK convenience model uses the same /training_jobs create operation as other command jobs.") +model InteractiveRayJob { + @doc("The name of the interactive Ray job. This is case-sensitive.") + name: string; + + @doc("Properties of the interactive Ray job.") + properties: InteractiveRayJobProperties; +} + @doc("Response returned when a job delete operation is accepted asynchronously.") model JobDeleteAcceptedResponse { @statusCode statusCode: 202; From 0491dda4dcfd1d874f71149712ef51bcf7ddd9e3 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Thu, 7 May 2026 02:21:15 -0700 Subject: [PATCH 25/37] fix(foundry): place training jobs under beta client Move the preview training jobs SDK surface from beta.model.training_jobs to the direct beta.training_jobs client, matching the surrounding preview resource clients. Relocate showServices with the rest of the training jobs operations so the generated SDK no longer splits the resource surface. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ai-foundry/data-plane/Foundry/client.tsp | 12 +---- .../Foundry/relocate-beta-operations.tsp | 53 ++++++++----------- 2 files changed, 25 insertions(+), 40 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/client.tsp b/specification/ai-foundry/data-plane/Foundry/client.tsp index 531ac31af0f0..2477639966ef 100644 --- a/specification/ai-foundry/data-plane/Foundry/client.tsp +++ b/specification/ai-foundry/data-plane/Foundry/client.tsp @@ -259,16 +259,8 @@ using Azure.AI.Projects; @@access(InteractiveRayJobTrainingConfiguration, Access.public); @@usage(InteractiveRayJobFramework, Usage.input); @@access(InteractiveRayJobFramework, Access.public); -@@clientName(Azure.AI.Projects.Beta.Model, "model", "python"); -@@clientName(Azure.AI.Projects.Beta.Model, "model", "javascript"); -@@clientName(Azure.AI.Projects.Beta.Model.TrainingJobs, - "training_jobs", - "python" -); -@@clientName(Azure.AI.Projects.Beta.Model.TrainingJobs, - "trainingJobs", - "javascript" -); +@@clientName(Azure.AI.Projects.Beta.TrainingJobs, "training_jobs", "python"); +@@clientName(Azure.AI.Projects.Beta.TrainingJobs, "trainingJobs", "javascript"); @@clientName(Azure.AI.Projects.TrainingJobs.beginDelete, "begin_delete", "python" diff --git a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp index 62eeab9440ad..ad818031d689 100644 --- a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp +++ b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp @@ -76,69 +76,62 @@ interface Toolsets {} @@clientLocation(Azure.AI.Projects.Toolsets.listToolsets, Toolsets); @@clientLocation(Azure.AI.Projects.Toolsets.deleteToolset, Toolsets); -namespace Model { - interface TrainingJobs {} -} +interface TrainingJobs {} -@@clientLocation(Azure.AI.Projects.TrainingJobs.create, Model.TrainingJobs); -@@clientLocation(Azure.AI.Projects.TrainingJobs.list, Model.TrainingJobs); -@@clientLocation(Azure.AI.Projects.TrainingJobs.get, Model.TrainingJobs); -@@clientLocation(Azure.AI.Projects.TrainingJobs.beginDelete, - Model.TrainingJobs -); -@@clientLocation(Azure.AI.Projects.TrainingJobs.beginCancel, - Model.TrainingJobs -); +@@clientLocation(Azure.AI.Projects.TrainingJobs.create, TrainingJobs); +@@clientLocation(Azure.AI.Projects.TrainingJobs.list, TrainingJobs); +@@clientLocation(Azure.AI.Projects.TrainingJobs.get, TrainingJobs); +@@clientLocation(Azure.AI.Projects.TrainingJobs.beginDelete, TrainingJobs); +@@clientLocation(Azure.AI.Projects.TrainingJobs.beginCancel, TrainingJobs); +@@clientLocation(Azure.AI.Projects.TrainingJobs.showServices, TrainingJobs); @@clientLocation(Azure.AI.Projects.TrainingJobAttempts.listAttempts, - Model.TrainingJobs + TrainingJobs ); @@clientLocation(Azure.AI.Projects.TrainingJobAttempts.getAttempt, - Model.TrainingJobs + TrainingJobs ); @@clientLocation(Azure.AI.Projects.TrainingJobAttemptArtifacts.listAttemptArtifacts, - Model.TrainingJobs + TrainingJobs ); @@clientLocation(Azure.AI.Projects.TrainingJobAttemptArtifacts.getAttemptArtifactMetadata, - Model.TrainingJobs + TrainingJobs ); @@clientLocation(Azure.AI.Projects.TrainingJobAttemptArtifacts.getAttemptArtifactContentInfo, - Model.TrainingJobs + TrainingJobs ); @@clientLocation(Azure.AI.Projects.TrainingJobAttemptArtifacts.downloadAttemptArtifact, - Model.TrainingJobs + TrainingJobs ); @@clientLocation(Azure.AI.Projects.TrainingJobAttemptMetrics.listAttemptMetrics, - Model.TrainingJobs + TrainingJobs ); @@clientLocation(Azure.AI.Projects.TrainingJobAttemptMetrics.getAttemptMetricLastValues, - Model.TrainingJobs + TrainingJobs ); @@clientLocation(Azure.AI.Projects.TrainingJobAttemptMetrics.getAttemptMetric, - Model.TrainingJobs + TrainingJobs ); @@clientLocation(Azure.AI.Projects.TrainingJobAttemptMetrics.getAttemptMetricAggregates, - Model.TrainingJobs + TrainingJobs ); @@clientLocation(Azure.AI.Projects.TrainingJobAttemptMetrics.getAttemptMetricSamples, - Model.TrainingJobs + TrainingJobs ); @@clientLocation(Azure.AI.Projects.TrainingJobAttemptMetrics.getAttemptMetricSample, - Model.TrainingJobs + TrainingJobs ); @@clientLocation(Azure.AI.Projects.TrainingJobOutputs.listOutputs, - Model.TrainingJobs -); -@@clientLocation(Azure.AI.Projects.TrainingJobOutputs.getOutput, - Model.TrainingJobs + TrainingJobs ); +@@clientLocation(Azure.AI.Projects.TrainingJobOutputs.getOutput, TrainingJobs); @@clientLocation(Azure.AI.Projects.TrainingJobAttemptOutputs.listAttemptOutputs, - Model.TrainingJobs + TrainingJobs ); @@clientLocation(Azure.AI.Projects.TrainingJobAttemptOutputs.getAttemptOutput, - Model.TrainingJobs + TrainingJobs ); From 0643fa80d791f2713b80b7b2d0e545bfc80e809f Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Thu, 7 May 2026 03:26:28 -0700 Subject: [PATCH 26/37] fix(foundry): relocate all training job SDK operations Relocate the remaining required-preview training job operation routes into the beta.training_jobs SDK client so artifact prefix helpers and polling routes do not generate stray clients. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../data-plane/Foundry/relocate-beta-operations.tsp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp index ad818031d689..1dd374696e2f 100644 --- a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp +++ b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp @@ -85,6 +85,13 @@ interface TrainingJobs {} @@clientLocation(Azure.AI.Projects.TrainingJobs.beginCancel, TrainingJobs); @@clientLocation(Azure.AI.Projects.TrainingJobs.showServices, TrainingJobs); +@@clientLocation(Azure.AI.Projects.TrainingJobOperations.getOperationResult, + TrainingJobs +); +@@clientLocation(Azure.AI.Projects.TrainingJobOperations.getOperationStatus, + TrainingJobs +); + @@clientLocation(Azure.AI.Projects.TrainingJobAttempts.listAttempts, TrainingJobs ); @@ -101,6 +108,9 @@ interface TrainingJobs {} @@clientLocation(Azure.AI.Projects.TrainingJobAttemptArtifacts.getAttemptArtifactContentInfo, TrainingJobs ); +@@clientLocation(Azure.AI.Projects.TrainingJobAttemptArtifacts.getAttemptArtifactContentInfoByPrefix, + TrainingJobs +); @@clientLocation(Azure.AI.Projects.TrainingJobAttemptArtifacts.downloadAttemptArtifact, TrainingJobs ); From dcc6b2a631a24bd4122997d06c5c7b8cb48cd8b4 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Thu, 7 May 2026 03:46:17 -0700 Subject: [PATCH 27/37] fix(foundry): move mlflow SDK surface under beta Relocate MLflow operation groups into the beta SDK client surface while preserving the existing MLflow wire routes. Keep the MLflow routes grouped with beta SDK APIs without adding a preview feature header requirement or changing MFE/APIM route contracts. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ai-foundry/data-plane/Foundry/client.tsp | 4 +- .../Foundry/relocate-beta-operations.tsp | 123 +++++++++++++++++- 2 files changed, 124 insertions(+), 3 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/client.tsp b/specification/ai-foundry/data-plane/Foundry/client.tsp index 2477639966ef..3cbbf638867c 100644 --- a/specification/ai-foundry/data-plane/Foundry/client.tsp +++ b/specification/ai-foundry/data-plane/Foundry/client.tsp @@ -12,9 +12,11 @@ import "./src/connections/routes.tsp"; import "./src/datasets/routes.tsp"; import "./src/deployments/routes.tsp"; import "./src/indexes/routes.tsp"; -import "./src/mlflow/routes.tsp"; import "./src/models/routes.tsp"; +// Beta SDK operations without preview feature headers +import "./src/mlflow/routes.tsp"; + // Beta operations (preview routes, requiring opt-in request header) import "./src/evaluation-taxonomies/routes.tsp"; import "./src/evaluators/routes.tsp"; diff --git a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp index 1dd374696e2f..d338839e964c 100644 --- a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp +++ b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp @@ -1,5 +1,5 @@ -// This file moves all beta operations (preview routes) from the Azure.AI.Projects namespace to -// a new namespace Azure.AI.Projects.Beta, thus creating a sub-client ".beta" in the emitted SDKs. +// This file moves operations assigned to the beta SDK surface from the Azure.AI.Projects namespace +// to a new namespace Azure.AI.Projects.Beta, thus creating a sub-client ".beta" in the emitted SDKs. // It is imported by the client.tsp file, which is used for emitting the Python and JS clients. // See https://azure.github.io/typespec-azure/docs/howtos/generate-client-libraries/03client/#move-all-operations-to-root-client @@ -76,6 +76,125 @@ interface Toolsets {} @@clientLocation(Azure.AI.Projects.Toolsets.listToolsets, Toolsets); @@clientLocation(Azure.AI.Projects.Toolsets.deleteToolset, Toolsets); +namespace Mlflow { + interface Experiments {} + interface Runs {} + interface Metrics {} + interface Artifacts {} + interface RegisteredModels {} + interface ModelVersions {} +} + +@@clientLocation(Azure.AI.Projects.Mlflow.Experiments.create, + Mlflow.Experiments +); +@@clientLocation(Azure.AI.Projects.Mlflow.Experiments.get, Mlflow.Experiments); +@@clientLocation(Azure.AI.Projects.Mlflow.Experiments.getByName, + Mlflow.Experiments +); +@@clientLocation(Azure.AI.Projects.Mlflow.Experiments.list, Mlflow.Experiments); +@@clientLocation(Azure.AI.Projects.Mlflow.Experiments.search, + Mlflow.Experiments +); +@@clientLocation(Azure.AI.Projects.Mlflow.Experiments.update, + Mlflow.Experiments +); +@@clientLocation(Azure.AI.Projects.Mlflow.Experiments.delete, + Mlflow.Experiments +); +@@clientLocation(Azure.AI.Projects.Mlflow.Experiments.restore, + Mlflow.Experiments +); +@@clientLocation(Azure.AI.Projects.Mlflow.Experiments.setTag, + Mlflow.Experiments +); + +@@clientLocation(Azure.AI.Projects.Mlflow.Runs.create, Mlflow.Runs); +@@clientLocation(Azure.AI.Projects.Mlflow.Runs.get, Mlflow.Runs); +@@clientLocation(Azure.AI.Projects.Mlflow.Runs.search, Mlflow.Runs); +@@clientLocation(Azure.AI.Projects.Mlflow.Runs.update, Mlflow.Runs); +@@clientLocation(Azure.AI.Projects.Mlflow.Runs.delete, Mlflow.Runs); +@@clientLocation(Azure.AI.Projects.Mlflow.Runs.restore, Mlflow.Runs); +@@clientLocation(Azure.AI.Projects.Mlflow.Runs.logBatch, Mlflow.Runs); +@@clientLocation(Azure.AI.Projects.Mlflow.Runs.logMetric, Mlflow.Runs); +@@clientLocation(Azure.AI.Projects.Mlflow.Runs.logParameter, Mlflow.Runs); +@@clientLocation(Azure.AI.Projects.Mlflow.Runs.setTag, Mlflow.Runs); +@@clientLocation(Azure.AI.Projects.Mlflow.Runs.deleteTag, Mlflow.Runs); +@@clientLocation(Azure.AI.Projects.Mlflow.Runs.logModel, Mlflow.Runs); +@@clientLocation(Azure.AI.Projects.Mlflow.Runs.logInputs, Mlflow.Runs); + +@@clientLocation(Azure.AI.Projects.Mlflow.Metrics.getHistory, Mlflow.Metrics); + +@@clientLocation(Azure.AI.Projects.Mlflow.Artifacts.list, Mlflow.Artifacts); + +@@clientLocation(Azure.AI.Projects.Mlflow.RegisteredModels.create, + Mlflow.RegisteredModels +); +@@clientLocation(Azure.AI.Projects.Mlflow.RegisteredModels.update, + Mlflow.RegisteredModels +); +@@clientLocation(Azure.AI.Projects.Mlflow.RegisteredModels.delete, + Mlflow.RegisteredModels +); +@@clientLocation(Azure.AI.Projects.Mlflow.RegisteredModels.get, + Mlflow.RegisteredModels +); +@@clientLocation(Azure.AI.Projects.Mlflow.RegisteredModels.list, + Mlflow.RegisteredModels +); +@@clientLocation(Azure.AI.Projects.Mlflow.RegisteredModels.search, + Mlflow.RegisteredModels +); +@@clientLocation(Azure.AI.Projects.Mlflow.RegisteredModels.setTag, + Mlflow.RegisteredModels +); +@@clientLocation(Azure.AI.Projects.Mlflow.RegisteredModels.deleteTag, + Mlflow.RegisteredModels +); +@@clientLocation(Azure.AI.Projects.Mlflow.RegisteredModels.getLatestVersions, + Mlflow.RegisteredModels +); +@@clientLocation(Azure.AI.Projects.Mlflow.RegisteredModels.getLatestVersionsNameInBody, + Mlflow.RegisteredModels +); +@@clientLocation(Azure.AI.Projects.Mlflow.RegisteredModels.rename, + Mlflow.RegisteredModels +); + +@@clientLocation(Azure.AI.Projects.Mlflow.ModelVersions.create, + Mlflow.ModelVersions +); +@@clientLocation(Azure.AI.Projects.Mlflow.ModelVersions.update, + Mlflow.ModelVersions +); +@@clientLocation(Azure.AI.Projects.Mlflow.ModelVersions.transitionStage, + Mlflow.ModelVersions +); +@@clientLocation(Azure.AI.Projects.Mlflow.ModelVersions.delete, + Mlflow.ModelVersions +); +@@clientLocation(Azure.AI.Projects.Mlflow.ModelVersions.get, + Mlflow.ModelVersions +); +@@clientLocation(Azure.AI.Projects.Mlflow.ModelVersions.search, + Mlflow.ModelVersions +); +@@clientLocation(Azure.AI.Projects.Mlflow.ModelVersions.searchWithFilter, + Mlflow.ModelVersions +); +@@clientLocation(Azure.AI.Projects.Mlflow.ModelVersions.getDownloadUri, + Mlflow.ModelVersions +); +@@clientLocation(Azure.AI.Projects.Mlflow.ModelVersions.setTag, + Mlflow.ModelVersions +); +@@clientLocation(Azure.AI.Projects.Mlflow.ModelVersions.deleteTag, + Mlflow.ModelVersions +); +@@clientLocation(Azure.AI.Projects.Mlflow.ModelVersions.getStorageLocationUri, + Mlflow.ModelVersions +); + interface TrainingJobs {} @@clientLocation(Azure.AI.Projects.TrainingJobs.create, TrainingJobs); From b46afc94853a492c28312c79fd1c27cb8acb8ce1 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Thu, 7 May 2026 19:30:51 -0700 Subject: [PATCH 28/37] feat(foundry): flatten training jobs contract Flatten training job create and read schemas by spreading command job fields onto the top-level resource shape. Regenerate OpenAPI and examples for the flattened data-plane payloads. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot (github-copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- ...bs_CreateRayCommandJob_MaximumSet_Gen.json | 74 ++-- .../TrainingJobs_Create_MaximumSet_Gen.json | 285 +++++++------ .../TrainingJobs_Create_MinimumSet_Gen.json | 37 +- .../v1/TrainingJobs_Get_MaximumSet_Gen.json | 127 +++--- .../v1/TrainingJobs_Get_MinimumSet_Gen.json | 8 +- .../v1/TrainingJobs_List_MaximumSet_Gen.json | 133 +++--- .../v1/TrainingJobs_List_MinimumSet_Gen.json | 15 +- .../v1/microsoft-foundry-openapi3.json | 392 +++++++++++------- .../microsoft-foundry-openapi3.json | 392 +++++++++++------- .../Foundry/src/training_jobs/models.tsp | 9 +- 10 files changed, 789 insertions(+), 683 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_CreateRayCommandJob_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_CreateRayCommandJob_MaximumSet_Gen.json index 894a84e58080..4703fba6d5e1 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_CreateRayCommandJob_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_CreateRayCommandJob_MaximumSet_Gen.json @@ -7,56 +7,52 @@ "Foundry-Features": "TrainingJobs=V1Preview", "job": { "name": "ray-command-job-01", - "properties": { + "job_type": "command", + "display_name": "interactive-ray-4node", + "description": "Interactive Ray command job (4 nodes)", + "tags": { + "scenario": "interactive-ray" + }, + "compute_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "command": "python -c \"import time; print('Ray cluster ready'); time.sleep(86400)\"", + "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04", + "distribution": { + "distribution_type": "ray", + "port": 6379, + "include_dashboard": true, + "dashboard_port": 8265, + "enable_remote_access_client_server": true, + "client_server_port": 10001 + }, + "resources": { + "instance_count": 4 + } + } + }, + "responses": { + "201": { + "body": { + "name": "ray-command-job-01", + "type": "Microsoft.MachineLearningServices/workspaces/training_jobs", "job_type": "command", - "displayName": "interactive-ray-4node", + "display_name": "interactive-ray-4node", "description": "Interactive Ray command job (4 nodes)", "tags": { "scenario": "interactive-ray" }, - "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "compute_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", "command": "python -c \"import time; print('Ray cluster ready'); time.sleep(86400)\"", "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04", "distribution": { - "distributionType": "ray", + "distribution_type": "ray", "port": 6379, - "includeDashboard": true, - "dashboardPort": 8265, - "enableRemoteAccessClientServer": true, - "clientServerPort": 10001 + "include_dashboard": true, + "dashboard_port": 8265, + "enable_remote_access_client_server": true, + "client_server_port": 10001 }, "resources": { - "instanceCount": 4 - } - } - } - }, - "responses": { - "201": { - "body": { - "name": "ray-command-job-01", - "type": "Microsoft.MachineLearningServices/workspaces/training_jobs", - "properties": { - "job_type": "command", - "displayName": "interactive-ray-4node", - "description": "Interactive Ray command job (4 nodes)", - "tags": { - "scenario": "interactive-ray" - }, - "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", - "command": "python -c \"import time; print('Ray cluster ready'); time.sleep(86400)\"", - "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04", - "distribution": { - "distributionType": "ray", - "port": 6379, - "includeDashboard": true, - "dashboardPort": 8265, - "enableRemoteAccessClientServer": true, - "clientServerPort": 10001 - }, - "resources": { - "instanceCount": 4 - } + "instance_count": 4 } } } diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json index 81b93db1a71b..7a9be02825e5 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MaximumSet_Gen.json @@ -6,22 +6,143 @@ "Operation-Id": "create-my-training-job-01", "Foundry-Features": "TrainingJobs=V1Preview", "job": { + "name": "my_training_job_01", + "job_type": "command", + "display_name": "My Training Job", + "description": "A sample declarative training job", + "tags": { + "framework": "trl", + "algorithm": "grpo" + }, + "code_id": "azureai://accounts/my-account/projects/my-project/data/my-training-code/versions/1", + "compute_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "training": { + "algorithm": "grpo", + "framework": "trl", + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1", + "eval": "azureai://accounts/my-account/projects/my-project/data/eval-dataset/versions/1", + "columns": { + "prompt": "prompt", + "chosen": "chosen", + "rejected": "rejected", + "reference": "reference", + "messages": "messages", + "response": "response", + "label": "label", + "score": "score" + }, + "data_format": { + "chat_template": "chatml" + } + }, + "hyperparameters": { + "learning_rate": 0.0001, + "num_train_epochs": 3, + "per_device_train_batch_size": 2 + }, + "reward": { + "kind": "inline_function", + "inline_function": { + "def": "def score(samples, **kwargs):\n return [1.0 for _ in samples]", + "runtime": { + "pip": [ + "numpy>=1.26" + ] + } + } + }, + "lora": { + "rank": 16, + "alpha": 32, + "dropout": 0.05, + "target_modules": "auto", + "quantize": true + }, + "rollout": { + "engine": "vllm", + "tensor_parallel_size": 2, + "gpu_memory_utilization": 0.9 + }, + "eval": { + "benchmark": "gsm8k", + "every_n_steps": 100 + } + }, + "inputs": { + "extra_context": { + "job_input_type": "uri_folder", + "uri": "azureai://datastores/mystore/paths/data/context", + "mode": "read_only_mount" + }, + "learning_rate": { + "job_input_type": "literal", + "value": "0.001" + } + }, + "outputs": { + "model": { + "job_output_type": "safetensors_model", + "mode": "read_write_mount", + "asset_name": "my-trained-model", + "asset_version": "1", + "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", + "base_model_id": "azureai://registries/azureml/models/qwen-base/versions/1", + "description": "Trained model output" + } + }, + "environment_variables": { + "AZUREML_DATASET_FILE": "/mnt/data/train.csv" + }, + "resources": { + "instance_count": 2, + "instance_type": "Standard_NC6s_v3", + "shm_size": "2g", + "docker_args": "--privileged" + }, + "gpu_count": 4, + "limits": { + "job_limits_type": "command", + "timeout": "PT2H30M" + }, + "queue_settings": { + "job_tier": "Standard" + }, + "user_assigned_identity_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", "properties": { + "experimentName": "my-experiment" + } + } + }, + "responses": { + "201": { + "body": { + "id": "my_training_job_01", + "name": "my_training_job_01", + "type": "Microsoft.MachineLearningServices/workspaces/training_jobs", + "system_data": { + "created_at": 1577882096, + "created_by": "user@example.com", + "created_by_type": "User", + "last_modified_at": 1577882096, + "last_modified_by": "user@example.com", + "last_modified_by_type": "User" + }, "job_type": "command", - "displayName": "My Training Job", + "display_name": "My Training Job", "description": "A sample declarative training job", "tags": { "framework": "trl", "algorithm": "grpo" }, - "properties": { - "experimentName": "my-experiment" - }, - "codeId": "azureai://accounts/my-account/projects/my-project/data/my-training-code/versions/1", - "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", + "code_id": "azureai://accounts/my-account/projects/my-project/data/my-training-code/versions/1", + "compute_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", "training": { "algorithm": "grpo", "framework": "trl", + "resolved_framework": "trl", + "framework_version": "0.21.0", "model": "azureai://registries/azureml/models/qwen-base/versions/1", "dataset": { "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1", @@ -37,7 +158,7 @@ "score": "score" }, "data_format": { - "chatTemplate": "chatml" + "chat_template": "chatml" } }, "hyperparameters": { @@ -60,17 +181,17 @@ "rank": 16, "alpha": 32, "dropout": 0.05, - "targetModules": "auto", + "target_modules": "auto", "quantize": true }, "rollout": { "engine": "vllm", - "tensorParallelSize": 2, - "gpuMemoryUtilization": 0.9 + "tensor_parallel_size": 2, + "gpu_memory_utilization": 0.9 }, "eval": { "benchmark": "gsm8k", - "everyNSteps": 100 + "every_n_steps": 100 } }, "inputs": { @@ -95,14 +216,14 @@ "description": "Trained model output" } }, - "environmentVariables": { + "environment_variables": { "AZUREML_DATASET_FILE": "/mnt/data/train.csv" }, "resources": { - "instanceCount": 2, - "instanceType": "Standard_NC6s_v3", - "shmSize": "2g", - "dockerArgs": "--privileged" + "instance_count": 2, + "instance_type": "Standard_NC6s_v3", + "shm_size": "2g", + "docker_args": "--privileged" }, "gpu_count": 4, "limits": { @@ -110,136 +231,12 @@ "timeout": "PT2H30M" }, "queue_settings": { - "jobTier": "Standard" + "job_tier": "Standard" }, - "user_assigned_identity_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity" - } - } - }, - "responses": { - "201": { - "body": { - "id": "my_training_job_01", - "name": "my_training_job_01", - "type": "Microsoft.MachineLearningServices/workspaces/training_jobs", + "user_assigned_identity_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", + "status": "NotStarted", "properties": { - "job_type": "command", - "displayName": "My Training Job", - "description": "A sample declarative training job", - "tags": { - "framework": "trl", - "algorithm": "grpo" - }, - "properties": { - "experimentName": "my-experiment" - }, - "codeId": "azureai://accounts/my-account/projects/my-project/data/my-training-code/versions/1", - "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster", - "training": { - "algorithm": "grpo", - "framework": "trl", - "resolvedFramework": "trl", - "frameworkVersion": "0.21.0", - "model": "azureai://registries/azureml/models/qwen-base/versions/1", - "dataset": { - "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1", - "eval": "azureai://accounts/my-account/projects/my-project/data/eval-dataset/versions/1", - "columns": { - "prompt": "prompt", - "chosen": "chosen", - "rejected": "rejected", - "reference": "reference", - "messages": "messages", - "response": "response", - "label": "label", - "score": "score" - }, - "data_format": { - "chatTemplate": "chatml" - } - }, - "hyperparameters": { - "learning_rate": 0.0001, - "num_train_epochs": 3, - "per_device_train_batch_size": 2 - }, - "reward": { - "kind": "inline_function", - "inline_function": { - "def": "def score(samples, **kwargs):\n return [1.0 for _ in samples]", - "runtime": { - "pip": [ - "numpy>=1.26" - ] - } - } - }, - "lora": { - "rank": 16, - "alpha": 32, - "dropout": 0.05, - "targetModules": "auto", - "quantize": true - }, - "rollout": { - "engine": "vllm", - "tensorParallelSize": 2, - "gpuMemoryUtilization": 0.9 - }, - "eval": { - "benchmark": "gsm8k", - "everyNSteps": 100 - } - }, - "inputs": { - "extra_context": { - "job_input_type": "uri_folder", - "uri": "azureai://datastores/mystore/paths/data/context", - "mode": "read_only_mount" - }, - "learning_rate": { - "job_input_type": "literal", - "value": "0.001" - } - }, - "outputs": { - "model": { - "job_output_type": "safetensors_model", - "mode": "read_write_mount", - "asset_name": "my-trained-model", - "asset_version": "1", - "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", - "base_model_id": "azureai://registries/azureml/models/qwen-base/versions/1", - "description": "Trained model output" - } - }, - "environmentVariables": { - "AZUREML_DATASET_FILE": "/mnt/data/train.csv" - }, - "resources": { - "instanceCount": 2, - "instanceType": "Standard_NC6s_v3", - "shmSize": "2g", - "dockerArgs": "--privileged" - }, - "gpu_count": 4, - "limits": { - "job_limits_type": "command", - "timeout": "PT2H30M" - }, - "queue_settings": { - "jobTier": "Standard" - }, - "user_assigned_identity_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", - "status": "NotStarted" - }, - "system_data": { - "created_at": 1577882096, - "created_by": "user@example.com", - "created_by_type": "User", - "last_modified_at": 1577882096, - "last_modified_by": "user@example.com", - "last_modified_by_type": "User" + "experimentName": "my-experiment" } } } diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json index 422fdb1bbb5c..5251abead332 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Create_MinimumSet_Gen.json @@ -6,7 +6,22 @@ "Operation-Id": "create-my-training-job-01", "Foundry-Features": "TrainingJobs=V1Preview", "job": { - "properties": { + "name": "my_training_job_01", + "job_type": "command", + "training": { + "algorithm": "sft", + "model": "azureai://registries/azureml/models/qwen-base/versions/1", + "dataset": { + "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1" + } + }, + "compute_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster" + } + }, + "responses": { + "201": { + "body": { + "name": "my_training_job_01", "job_type": "command", "training": { "algorithm": "sft", @@ -15,25 +30,7 @@ "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1" } }, - "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster" - } - } - }, - "responses": { - "201": { - "body": { - "name": "my_training_job_01", - "properties": { - "job_type": "command", - "training": { - "algorithm": "sft", - "model": "azureai://registries/azureml/models/qwen-base/versions/1", - "dataset": { - "train": "azureai://accounts/my-account/projects/my-project/data/train-dataset/versions/1" - } - }, - "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster" - } + "compute_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.CognitiveServices/accounts/my-account/computes/my-cluster" } } } diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json index 61e94677462b..c7da1dce0852 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json @@ -13,76 +13,6 @@ "id": "my_training_job_01", "name": "my_training_job_01", "type": "Microsoft.MachineLearningServices/workspaces/training_jobs", - "properties": { - "job_type": "command", - "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", - "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", - "displayName": "My Training Job", - "description": "A sample command job for training", - "tags": { - "framework": "pytorch" - }, - "properties": { - "experimentName": "my-experiment" - }, - "codeId": "azureai:my-training-code:1", - "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster", - "inputs": { - "training_data": { - "job_input_type": "uri_folder", - "uri": "azureai://datastores/mystore/paths/data/train", - "mode": "read_only_mount" - }, - "learning_rate": { - "job_input_type": "literal", - "value": "0.001" - } - }, - "outputs": { - "model": { - "job_output_type": "uri_folder", - "mode": "read_write_mount", - "asset_name": "my-trained-model", - "asset_version": "1", - "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", - "base_model_id": "azureai:qwen-base-model:1", - "description": "Trained model output" - } - }, - "environmentVariables": { - "AZUREML_DATASET_FILE": "/mnt/data/train.csv" - }, - "distribution": { - "distributionType": "pytorch", - "processCountPerInstance": 4 - }, - "resources": { - "instanceCount": 2, - "instanceType": "Standard_NC6s_v3", - "shmSize": "2g", - "dockerArgs": "--privileged" - }, - "limits": { - "job_limits_type": "command", - "timeout": "PT2H30M" - }, - "services": { - "studio": { - "job_service_type": "studio", - "port": 8080, - "endpoint": "https://studio.example.com" - }, - "tracking": { - "job_service_type": "tracking" - } - }, - "queue_settings": { - "jobTier": "Standard" - }, - "user_assigned_identity_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", - "status": "running", - "isArchived": false - }, "system_data": { "created_at": 1577882096, "created_by": "user@example.com", @@ -90,6 +20,63 @@ "last_modified_at": 1577882096, "last_modified_by": "user@example.com", "last_modified_by_type": "User" + }, + "job_type": "command", + "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", + "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", + "display_name": "My Training Job", + "description": "A sample command job for training", + "tags": { + "framework": "pytorch" + }, + "code_id": "azureai:my-training-code:1", + "compute_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster", + "inputs": { + "training_data": { + "job_input_type": "uri_folder", + "uri": "azureai://datastores/mystore/paths/data/train", + "mode": "read_only_mount" + }, + "learning_rate": { + "job_input_type": "literal", + "value": "0.001" + } + }, + "outputs": { + "model": { + "job_output_type": "uri_folder", + "mode": "read_write_mount", + "asset_name": "my-trained-model", + "asset_version": "1", + "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", + "base_model_id": "azureai:qwen-base-model:1", + "description": "Trained model output" + } + }, + "environment_variables": { + "AZUREML_DATASET_FILE": "/mnt/data/train.csv" + }, + "distribution": { + "distribution_type": "pytorch", + "process_count_per_instance": 4 + }, + "resources": { + "instance_count": 2, + "instance_type": "Standard_NC6s_v3", + "shm_size": "2g", + "docker_args": "--privileged" + }, + "limits": { + "job_limits_type": "command", + "timeout": "PT2H30M" + }, + "queue_settings": { + "job_tier": "Standard" + }, + "user_assigned_identity_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", + "status": "running", + "properties": { + "experimentName": "my-experiment" } } } diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MinimumSet_Gen.json index 92570d9d8ab8..72069605f26c 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MinimumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MinimumSet_Gen.json @@ -9,11 +9,9 @@ "200": { "body": { "name": "my_training_job_01", - "properties": { - "job_type": "command", - "command": "python train.py", - "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest" - } + "job_type": "command", + "command": "python train.py", + "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest" } } } diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MaximumSet_Gen.json index 774812dc157e..dbbcfac374af 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MaximumSet_Gen.json @@ -13,81 +13,11 @@ "responses": { "200": { "body": { - "value": [ + "data": [ { "id": "my_training_job_01", "name": "my_training_job_01", "type": "Microsoft.MachineLearningServices/workspaces/training_jobs", - "properties": { - "job_type": "command", - "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", - "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", - "displayName": "My Training Job", - "description": "A sample command job for training", - "tags": { - "framework": "pytorch" - }, - "properties": { - "experimentName": "my-experiment" - }, - "codeId": "azureai:my-training-code:1", - "computeId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster", - "inputs": { - "training_data": { - "job_input_type": "uri_folder", - "uri": "azureai://datastores/mystore/paths/data/train", - "mode": "read_only_mount" - }, - "learning_rate": { - "job_input_type": "literal", - "value": "0.001" - } - }, - "outputs": { - "model": { - "job_output_type": "uri_folder", - "mode": "read_write_mount", - "asset_name": "my-trained-model", - "asset_version": "1", - "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", - "base_model_id": "azureai:qwen-base-model:1", - "description": "Trained model output" - } - }, - "environmentVariables": { - "AZUREML_DATASET_FILE": "/mnt/data/train.csv" - }, - "distribution": { - "distributionType": "pytorch", - "processCountPerInstance": 4 - }, - "resources": { - "instanceCount": 2, - "instanceType": "Standard_NC6s_v3", - "shmSize": "2g", - "dockerArgs": "--privileged" - }, - "limits": { - "job_limits_type": "command", - "timeout": "PT2H30M" - }, - "services": { - "studio": { - "job_service_type": "studio", - "port": 8080, - "endpoint": "https://studio.example.com" - }, - "tracking": { - "job_service_type": "tracking" - } - }, - "queue_settings": { - "jobTier": "Standard" - }, - "user_assigned_identity_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", - "status": "running", - "isArchived": false - }, "system_data": { "created_at": 1577882096, "created_by": "user@example.com", @@ -95,10 +25,69 @@ "last_modified_at": 1577882096, "last_modified_by": "user@example.com", "last_modified_by_type": "User" + }, + "job_type": "command", + "command": "python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}", + "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest", + "display_name": "My Training Job", + "description": "A sample command job for training", + "tags": { + "framework": "pytorch" + }, + "code_id": "azureai:my-training-code:1", + "compute_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.MachineLearningServices/workspaces/my-ws/computes/my-cluster", + "inputs": { + "training_data": { + "job_input_type": "uri_folder", + "uri": "azureai://datastores/mystore/paths/data/train", + "mode": "read_only_mount" + }, + "learning_rate": { + "job_input_type": "literal", + "value": "0.001" + } + }, + "outputs": { + "model": { + "job_output_type": "uri_folder", + "mode": "read_write_mount", + "asset_name": "my-trained-model", + "asset_version": "1", + "uri": "azureai://datastores/workspaceblobstore/paths/outputs/model", + "base_model_id": "azureai:qwen-base-model:1", + "description": "Trained model output" + } + }, + "environment_variables": { + "AZUREML_DATASET_FILE": "/mnt/data/train.csv" + }, + "distribution": { + "distribution_type": "pytorch", + "process_count_per_instance": 4 + }, + "resources": { + "instance_count": 2, + "instance_type": "Standard_NC6s_v3", + "shm_size": "2g", + "docker_args": "--privileged" + }, + "limits": { + "job_limits_type": "command", + "timeout": "PT2H30M" + }, + "queue_settings": { + "job_tier": "Standard" + }, + "user_assigned_identity_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity", + "status": "running", + "properties": { + "experimentName": "my-experiment" } } ], - "nextLink": "https://eastus.api.azureml.ms/jobs?api-version=v1&skip=100" + "first_id": "my_training_job_01", + "last_id": "my_training_job_01", + "has_more": true } } } diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MinimumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MinimumSet_Gen.json index 8912a5570fd7..3b4742449da0 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MinimumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_List_MinimumSet_Gen.json @@ -7,16 +7,17 @@ "responses": { "200": { "body": { - "value": [ + "data": [ { "name": "my_training_job_01", - "properties": { - "job_type": "command", - "command": "python train.py", - "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest" - } + "job_type": "command", + "command": "python train.py", + "environment_image_reference": "mcr.microsoft.com/azureml/openmpi4.1.0-cuda11.8-cudnn8-ubuntu22.04:latest" } - ] + ], + "first_id": "my_training_job_01", + "last_id": "my_training_job_01", + "has_more": false } } } diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 8ac58f1f62dd..130ef26ea582 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -17043,141 +17043,6 @@ ], "description": "Code-based evaluator definition using python code" }, - "CommandJob": { - "type": "object", - "required": [ - "job_type", - "compute_id" - ], - "properties": { - "job_type": { - "type": "string", - "enum": [ - "command" - ], - "description": "Job type." - }, - "command": { - "type": "string", - "description": "The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified." - }, - "environment_image_reference": { - "type": "string", - "description": "ACR path or Azure ML environment reference. Required when training is not specified." - }, - "training": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingConfiguration" - } - ], - "description": "Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution." - }, - "display_name": { - "type": "string", - "description": "Display name of job." - }, - "description": { - "type": "string", - "description": "The asset description text." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." - }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "The asset property dictionary." - }, - "code_id": { - "type": "string", - "description": "Code asset reference." - }, - "compute_id": { - "type": "string", - "description": "Compute resource ID." - }, - "inputs": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Input" - }, - "description": "Mapping of input data bindings used in the job." - }, - "outputs": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Output" - }, - "description": "Mapping of output data bindings used in the job." - }, - "environment_variables": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Environment variables included in the job." - }, - "resources": { - "allOf": [ - { - "$ref": "#/components/schemas/JobResourceConfiguration" - } - ], - "description": "Compute Resource configuration for the job." - }, - "gpu_count": { - "type": "integer", - "format": "int32", - "description": "Number of GPUs requested by the training job." - }, - "distribution": { - "allOf": [ - { - "$ref": "#/components/schemas/DistributionConfiguration" - } - ], - "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." - }, - "limits": { - "allOf": [ - { - "$ref": "#/components/schemas/CommandJobLimits" - } - ], - "description": "Command Job limit." - }, - "queue_settings": { - "allOf": [ - { - "$ref": "#/components/schemas/QueueSettings" - } - ], - "description": "Queue settings for the job." - }, - "user_assigned_identity_id": { - "type": "string", - "description": "user-assigned managed identity" - }, - "status": { - "type": "string", - "description": "Status of the job.", - "readOnly": true - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/JobProperties" - } - ], - "description": "Properties of a Command Job." - }, "CommandJobLimits": { "type": "object", "required": [ @@ -21032,7 +20897,8 @@ "type": "object", "required": [ "name", - "properties" + "job_type", + "compute_id" ], "properties": { "name": { @@ -21050,13 +20916,125 @@ "description": "The resource type.", "readOnly": true }, + "job_type": { + "type": "string", + "enum": [ + "command" + ], + "description": "Job type." + }, + "command": { + "type": "string", + "description": "The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified." + }, + "environment_image_reference": { + "type": "string", + "description": "ACR path or Azure ML environment reference. Required when training is not specified." + }, + "training": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution." + }, + "display_name": { + "type": "string", + "description": "Display name of job." + }, + "description": { + "type": "string", + "description": "The asset description text." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." + }, "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The asset property dictionary." + }, + "code_id": { + "type": "string", + "description": "Code asset reference." + }, + "compute_id": { + "type": "string", + "description": "Compute resource ID." + }, + "inputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Input" + }, + "description": "Mapping of input data bindings used in the job." + }, + "outputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Output" + }, + "description": "Mapping of output data bindings used in the job." + }, + "environment_variables": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Environment variables included in the job." + }, + "resources": { + "allOf": [ + { + "$ref": "#/components/schemas/JobResourceConfiguration" + } + ], + "description": "Compute Resource configuration for the job." + }, + "gpu_count": { + "type": "integer", + "format": "int32", + "description": "Number of GPUs requested by the training job." + }, + "distribution": { + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + }, + "limits": { "allOf": [ { - "$ref": "#/components/schemas/JobProperties" + "$ref": "#/components/schemas/CommandJobLimits" } ], - "description": "Properties of the job." + "description": "Command Job limit." + }, + "queue_settings": { + "allOf": [ + { + "$ref": "#/components/schemas/QueueSettings" + } + ], + "description": "Queue settings for the job." + }, + "user_assigned_identity_id": { + "type": "string", + "description": "user-assigned managed identity" + }, + "status": { + "type": "string", + "description": "Status of the job.", + "readOnly": true }, "system_data": { "allOf": [ @@ -21387,20 +21365,133 @@ "type": "object", "required": [ "name", - "properties" + "job_type", + "compute_id" ], "properties": { "name": { "type": "string", "description": "The name of the training job. This is case-sensitive." }, + "job_type": { + "type": "string", + "enum": [ + "command" + ], + "description": "Job type." + }, + "command": { + "type": "string", + "description": "The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified." + }, + "environment_image_reference": { + "type": "string", + "description": "ACR path or Azure ML environment reference. Required when training is not specified." + }, + "training": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution." + }, + "display_name": { + "type": "string", + "description": "Display name of job." + }, + "description": { + "type": "string", + "description": "The asset description text." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." + }, "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The asset property dictionary." + }, + "code_id": { + "type": "string", + "description": "Code asset reference." + }, + "compute_id": { + "type": "string", + "description": "Compute resource ID." + }, + "inputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Input" + }, + "description": "Mapping of input data bindings used in the job." + }, + "outputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Output" + }, + "description": "Mapping of output data bindings used in the job." + }, + "environment_variables": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Environment variables included in the job." + }, + "resources": { "allOf": [ { - "$ref": "#/components/schemas/JobProperties" + "$ref": "#/components/schemas/JobResourceConfiguration" } ], - "description": "Properties of the job." + "description": "Compute Resource configuration for the job." + }, + "gpu_count": { + "type": "integer", + "format": "int32", + "description": "Number of GPUs requested by the training job." + }, + "distribution": { + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + }, + "limits": { + "allOf": [ + { + "$ref": "#/components/schemas/CommandJobLimits" + } + ], + "description": "Command Job limit." + }, + "queue_settings": { + "allOf": [ + { + "$ref": "#/components/schemas/QueueSettings" + } + ], + "description": "Queue settings for the job." + }, + "user_assigned_identity_id": { + "type": "string", + "description": "user-assigned managed identity" + }, + "status": { + "type": "string", + "description": "Status of the job.", + "readOnly": true } }, "description": "Request body for creating a training job." @@ -21729,25 +21820,6 @@ }, "description": "Named output produced by a job." }, - "JobProperties": { - "type": "object", - "required": [ - "job_type" - ], - "properties": { - "job_type": { - "type": "string", - "description": "Job type." - } - }, - "discriminator": { - "propertyName": "job_type", - "mapping": { - "command": "#/components/schemas/CommandJob" - } - }, - "description": "Base properties of a Job." - }, "JobResourceConfiguration": { "type": "object", "properties": { diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 2b5143f0c414..1b8fcdf9aa1e 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -20772,141 +20772,6 @@ ], "description": "Code-based evaluator definition using python code" }, - "CommandJob": { - "type": "object", - "required": [ - "job_type", - "compute_id" - ], - "properties": { - "job_type": { - "type": "string", - "enum": [ - "command" - ], - "description": "Job type." - }, - "command": { - "type": "string", - "description": "The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified." - }, - "environment_image_reference": { - "type": "string", - "description": "ACR path or Azure ML environment reference. Required when training is not specified." - }, - "training": { - "allOf": [ - { - "$ref": "#/components/schemas/TrainingConfiguration" - } - ], - "description": "Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution." - }, - "display_name": { - "type": "string", - "description": "Display name of job." - }, - "description": { - "type": "string", - "description": "The asset description text." - }, - "tags": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Tag dictionary. Tags can be added, removed, and updated." - }, - "properties": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "The asset property dictionary." - }, - "code_id": { - "type": "string", - "description": "Code asset reference." - }, - "compute_id": { - "type": "string", - "description": "Compute resource ID." - }, - "inputs": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Input" - }, - "description": "Mapping of input data bindings used in the job." - }, - "outputs": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Output" - }, - "description": "Mapping of output data bindings used in the job." - }, - "environment_variables": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Environment variables included in the job." - }, - "resources": { - "allOf": [ - { - "$ref": "#/components/schemas/JobResourceConfiguration" - } - ], - "description": "Compute Resource configuration for the job." - }, - "gpu_count": { - "type": "integer", - "format": "int32", - "description": "Number of GPUs requested by the training job." - }, - "distribution": { - "allOf": [ - { - "$ref": "#/components/schemas/DistributionConfiguration" - } - ], - "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." - }, - "limits": { - "allOf": [ - { - "$ref": "#/components/schemas/CommandJobLimits" - } - ], - "description": "Command Job limit." - }, - "queue_settings": { - "allOf": [ - { - "$ref": "#/components/schemas/QueueSettings" - } - ], - "description": "Queue settings for the job." - }, - "user_assigned_identity_id": { - "type": "string", - "description": "user-assigned managed identity" - }, - "status": { - "type": "string", - "description": "Status of the job.", - "readOnly": true - } - }, - "allOf": [ - { - "$ref": "#/components/schemas/JobProperties" - } - ], - "description": "Properties of a Command Job." - }, "CommandJobLimits": { "type": "object", "required": [ @@ -25456,7 +25321,8 @@ "type": "object", "required": [ "name", - "properties" + "job_type", + "compute_id" ], "properties": { "name": { @@ -25474,13 +25340,125 @@ "description": "The resource type.", "readOnly": true }, + "job_type": { + "type": "string", + "enum": [ + "command" + ], + "description": "Job type." + }, + "command": { + "type": "string", + "description": "The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified." + }, + "environment_image_reference": { + "type": "string", + "description": "ACR path or Azure ML environment reference. Required when training is not specified." + }, + "training": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution." + }, + "display_name": { + "type": "string", + "description": "Display name of job." + }, + "description": { + "type": "string", + "description": "The asset description text." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." + }, "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The asset property dictionary." + }, + "code_id": { + "type": "string", + "description": "Code asset reference." + }, + "compute_id": { + "type": "string", + "description": "Compute resource ID." + }, + "inputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Input" + }, + "description": "Mapping of input data bindings used in the job." + }, + "outputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Output" + }, + "description": "Mapping of output data bindings used in the job." + }, + "environment_variables": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Environment variables included in the job." + }, + "resources": { + "allOf": [ + { + "$ref": "#/components/schemas/JobResourceConfiguration" + } + ], + "description": "Compute Resource configuration for the job." + }, + "gpu_count": { + "type": "integer", + "format": "int32", + "description": "Number of GPUs requested by the training job." + }, + "distribution": { + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + }, + "limits": { "allOf": [ { - "$ref": "#/components/schemas/JobProperties" + "$ref": "#/components/schemas/CommandJobLimits" } ], - "description": "Properties of the job." + "description": "Command Job limit." + }, + "queue_settings": { + "allOf": [ + { + "$ref": "#/components/schemas/QueueSettings" + } + ], + "description": "Queue settings for the job." + }, + "user_assigned_identity_id": { + "type": "string", + "description": "user-assigned managed identity" + }, + "status": { + "type": "string", + "description": "Status of the job.", + "readOnly": true }, "system_data": { "allOf": [ @@ -25811,20 +25789,133 @@ "type": "object", "required": [ "name", - "properties" + "job_type", + "compute_id" ], "properties": { "name": { "type": "string", "description": "The name of the training job. This is case-sensitive." }, + "job_type": { + "type": "string", + "enum": [ + "command" + ], + "description": "Job type." + }, + "command": { + "type": "string", + "description": "The command to execute on startup of the job. Required when training is not specified, and must be omitted when training is specified." + }, + "environment_image_reference": { + "type": "string", + "description": "ACR path or Azure ML environment reference. Required when training is not specified." + }, + "training": { + "allOf": [ + { + "$ref": "#/components/schemas/TrainingConfiguration" + } + ], + "description": "Declarative training recipe. When specified, the service compiles the recipe into the command and environment used for execution." + }, + "display_name": { + "type": "string", + "description": "Display name of job." + }, + "description": { + "type": "string", + "description": "The asset description text." + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Tag dictionary. Tags can be added, removed, and updated." + }, "properties": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The asset property dictionary." + }, + "code_id": { + "type": "string", + "description": "Code asset reference." + }, + "compute_id": { + "type": "string", + "description": "Compute resource ID." + }, + "inputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Input" + }, + "description": "Mapping of input data bindings used in the job." + }, + "outputs": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Output" + }, + "description": "Mapping of output data bindings used in the job." + }, + "environment_variables": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Environment variables included in the job." + }, + "resources": { "allOf": [ { - "$ref": "#/components/schemas/JobProperties" + "$ref": "#/components/schemas/JobResourceConfiguration" } ], - "description": "Properties of the job." + "description": "Compute Resource configuration for the job." + }, + "gpu_count": { + "type": "integer", + "format": "int32", + "description": "Number of GPUs requested by the training job." + }, + "distribution": { + "allOf": [ + { + "$ref": "#/components/schemas/DistributionConfiguration" + } + ], + "description": "Distribution configuration of the job. If set, this should be one of Mpi, Tensorflow, PyTorch, or null." + }, + "limits": { + "allOf": [ + { + "$ref": "#/components/schemas/CommandJobLimits" + } + ], + "description": "Command Job limit." + }, + "queue_settings": { + "allOf": [ + { + "$ref": "#/components/schemas/QueueSettings" + } + ], + "description": "Queue settings for the job." + }, + "user_assigned_identity_id": { + "type": "string", + "description": "user-assigned managed identity" + }, + "status": { + "type": "string", + "description": "Status of the job.", + "readOnly": true } }, "description": "Request body for creating a training job." @@ -26153,25 +26244,6 @@ }, "description": "Named output produced by a job." }, - "JobProperties": { - "type": "object", - "required": [ - "job_type" - ], - "properties": { - "job_type": { - "type": "string", - "description": "Job type." - } - }, - "discriminator": { - "propertyName": "job_type", - "mapping": { - "command": "#/components/schemas/CommandJob" - } - }, - "description": "Base properties of a Job." - }, "JobResourceConfiguration": { "type": "object", "properties": { diff --git a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp index 5dbe02a540e3..8e5c8b421160 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp @@ -1035,8 +1035,7 @@ model Job { @visibility(Lifecycle.Read) type?: string; - @doc("Properties of the job.") - properties: JobProperties; + ...CommandJob; @doc("Metadata pertaining to creation and last modification of the resource.") @visibility(Lifecycle.Read) @@ -1048,8 +1047,7 @@ model JobCreate { @doc("The name of the training job. This is case-sensitive.") name: string; - @doc("Properties of the job.") - properties: JobProperties; + ...CommandJob; } @doc("Request body for creating an interactive Ray training job. This SDK convenience model uses the same /training_jobs create operation as other command jobs.") @@ -1057,8 +1055,7 @@ model InteractiveRayJob { @doc("The name of the interactive Ray job. This is case-sensitive.") name: string; - @doc("Properties of the interactive Ray job.") - properties: InteractiveRayJobProperties; + ...InteractiveRayJobProperties; } @doc("Response returned when a job delete operation is accepted asynchronously.") From 1997193328e805fd064717825524eedfeefe328f Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Thu, 7 May 2026 19:40:26 -0700 Subject: [PATCH 29/37] fix(foundry): move model training operations to beta Relocate managed model training create overloads and polling results to the beta SDK client surface. Keep the client import grouping aligned with the preview feature requirement for these routes. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot (github-copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ai-foundry/data-plane/Foundry/client.tsp | 2 +- .../Foundry/relocate-beta-operations.tsp | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/specification/ai-foundry/data-plane/Foundry/client.tsp b/specification/ai-foundry/data-plane/Foundry/client.tsp index 3cbbf638867c..1d79c17be282 100644 --- a/specification/ai-foundry/data-plane/Foundry/client.tsp +++ b/specification/ai-foundry/data-plane/Foundry/client.tsp @@ -12,7 +12,6 @@ import "./src/connections/routes.tsp"; import "./src/datasets/routes.tsp"; import "./src/deployments/routes.tsp"; import "./src/indexes/routes.tsp"; -import "./src/models/routes.tsp"; // Beta SDK operations without preview feature headers import "./src/mlflow/routes.tsp"; @@ -22,6 +21,7 @@ import "./src/evaluation-taxonomies/routes.tsp"; import "./src/evaluators/routes.tsp"; import "./src/insights/routes.tsp"; import "./src/memory-stores/routes.tsp"; +import "./src/models/routes.tsp"; import "./src/red-teams/routes.tsp"; import "./src/schedules/routes.tsp"; import "./src/toolsets/routes.tsp"; diff --git a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp index d338839e964c..a2cea4b6f37b 100644 --- a/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp +++ b/specification/ai-foundry/data-plane/Foundry/relocate-beta-operations.tsp @@ -76,6 +76,21 @@ interface Toolsets {} @@clientLocation(Azure.AI.Projects.Toolsets.listToolsets, Toolsets); @@clientLocation(Azure.AI.Projects.Toolsets.deleteToolset, Toolsets); +interface Models {} +@@clientLocation(Azure.AI.Projects.Models.createTrainingJob, Models); +@@clientLocation(Azure.AI.Projects.Models.createSftTrainingJob, Models); +@@clientLocation(Azure.AI.Projects.Models.createPreferenceTrainingJob, Models); +@@clientLocation(Azure.AI.Projects.Models.createKtoTrainingJob, Models); +@@clientLocation(Azure.AI.Projects.Models.createRewardModelTrainingJob, + Models +); +@@clientLocation(Azure.AI.Projects.Models.createGrpoTrainingJob, Models); +@@clientLocation(Azure.AI.Projects.Models.createPolicyGradientTrainingJob, + Models +); +@@clientLocation(Azure.AI.Projects.Models.createPpoTrainingJob, Models); +@@clientLocation(Azure.AI.Projects.Models.getTrainingOperationResult, Models); + namespace Mlflow { interface Experiments {} interface Runs {} From b3349fdb95dec047d32bccc0d6a9ed7702a5d26f Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Thu, 7 May 2026 19:45:46 -0700 Subject: [PATCH 30/37] fix(foundry): collapse training job sdk overloads Expose a single beta model-training LRO method in Python and JavaScript while keeping algorithm-specific request bodies as job types. Hide algorithm-specific create overload operations from Python and JavaScript SDK generation. Authored-by: GitHub Copilot for VS Code v0.45.1 Model: GitHub Copilot (github-copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../ai-foundry/data-plane/Foundry/client.tsp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/client.tsp b/specification/ai-foundry/data-plane/Foundry/client.tsp index 1d79c17be282..4801007176e0 100644 --- a/specification/ai-foundry/data-plane/Foundry/client.tsp +++ b/specification/ai-foundry/data-plane/Foundry/client.tsp @@ -179,8 +179,15 @@ using Azure.AI.Projects; // Models sub-client // -------------------------------------------------------------------------------- -@@clientName(Models.createTrainingJob, "create_training_job", "python"); -@@clientName(Models.createTrainingJob, "createTrainingJob", "javascript"); +@@clientName(Models.createTrainingJob, "training_job", "python"); +@@clientName(Models.createTrainingJob, "trainingJob", "javascript"); +@@scope(Models.createSftTrainingJob, "!(python,javascript)"); +@@scope(Models.createPreferenceTrainingJob, "!(python,javascript)"); +@@scope(Models.createKtoTrainingJob, "!(python,javascript)"); +@@scope(Models.createRewardModelTrainingJob, "!(python,javascript)"); +@@scope(Models.createGrpoTrainingJob, "!(python,javascript)"); +@@scope(Models.createPolicyGradientTrainingJob, "!(python,javascript)"); +@@scope(Models.createPpoTrainingJob, "!(python,javascript)"); // -------------------------------------------------------------------------------- // Datasets sub-client From c45f9a7e075917ecb1b7e3e6ea8eead9aaad36e8 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Thu, 7 May 2026 21:16:49 -0700 Subject: [PATCH 31/37] feat(foundry): enrich training jobs response data Expose next_after and UX-visible attempt, artifact, and metric metadata on training_jobs while preserving existing route shapes. Regenerate Foundry OpenAPI. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot (github-copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../v1/microsoft-foundry-openapi3.json | 322 +++++++++++++++++- .../microsoft-foundry-openapi3.json | 322 +++++++++++++++++- .../Foundry/src/training_jobs/models.tsp | 171 ++++++++++ .../Foundry/src/training_jobs/routes.tsp | 32 +- 4 files changed, 799 insertions(+), 48 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 130ef26ea582..0da514e31152 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -11838,9 +11838,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -12190,9 +12195,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -12243,9 +12253,9 @@ "name": "attempt_id", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The attempt identifier, or 'latest' for the latest attempt.", "schema": { - "type": "string" + "$ref": "#/components/schemas/JobAttemptIdentifier" } }, { @@ -12414,9 +12424,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -12732,9 +12747,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -12956,9 +12976,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -13055,9 +13080,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -13216,9 +13246,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -13377,9 +13412,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -13700,9 +13740,9 @@ "name": "attempt_id", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The attempt identifier, or 'latest' for the latest attempt.", "schema": { - "type": "string" + "$ref": "#/components/schemas/JobAttemptIdentifier" } }, { @@ -13746,9 +13786,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -13799,9 +13844,9 @@ "name": "attempt_id", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The attempt identifier, or 'latest' for the latest attempt.", "schema": { - "type": "string" + "$ref": "#/components/schemas/JobAttemptIdentifier" } }, { @@ -13918,9 +13963,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -21055,11 +21105,31 @@ "type" ], "properties": { + "artifact_id": { + "type": "string", + "description": "Backend artifact identifier.", + "readOnly": true + }, + "origin": { + "type": "string", + "description": "Artifact origin.", + "readOnly": true + }, + "container": { + "type": "string", + "description": "Artifact container name.", + "readOnly": true + }, "path": { "type": "string", "description": "Artifact path relative to the job artifact root.", "readOnly": true }, + "etag": { + "type": "string", + "description": "Artifact entity tag.", + "readOnly": true + }, "type": { "allOf": [ { @@ -21092,6 +21162,23 @@ ], "description": "Time the artifact was last updated.", "readOnly": true + }, + "data_path": { + "allOf": [ + { + "$ref": "#/components/schemas/JobArtifactDataPath" + } + ], + "description": "Storage path details for the artifact.", + "readOnly": true + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Artifact tags.", + "readOnly": true } }, "description": "Metadata for an artifact produced by or attached to a job." @@ -21103,6 +21190,16 @@ "content_uri" ], "properties": { + "origin": { + "type": "string", + "description": "Artifact origin.", + "readOnly": true + }, + "container": { + "type": "string", + "description": "Artifact container name.", + "readOnly": true + }, "path": { "type": "string", "description": "Artifact path relative to the job artifact root.", @@ -21119,6 +21216,12 @@ "description": "MIME type of the content.", "readOnly": true }, + "content_length": { + "type": "integer", + "format": "int64", + "description": "Content length in bytes, when known.", + "readOnly": true + }, "expires_at": { "allOf": [ { @@ -21127,10 +21230,40 @@ ], "description": "Time the content URI expires.", "readOnly": true + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Artifact tags.", + "readOnly": true } }, "description": "Content access information for a job artifact." }, + "JobArtifactDataPath": { + "type": "object", + "properties": { + "datastore_name": { + "type": "string", + "description": "Datastore containing the artifact content.", + "readOnly": true + }, + "relative_path": { + "type": "string", + "description": "Path relative to the datastore root.", + "readOnly": true + }, + "sql_data_path": { + "type": "object", + "additionalProperties": {}, + "description": "SQL path information, when the artifact is backed by SQL storage.", + "readOnly": true + } + }, + "description": "Storage path details for an artifact." + }, "JobArtifactType": { "anyOf": [ { @@ -21158,11 +21291,27 @@ "description": "The attempt identifier.", "readOnly": true }, + "run_id": { + "type": "string", + "description": "The RunHistory run identifier backing this attempt.", + "readOnly": true + }, "job_name": { "type": "string", "description": "The job name this attempt belongs to.", "readOnly": true }, + "data_container_id": { + "type": "string", + "description": "The data container identifier backing this attempt's artifacts and metrics.", + "readOnly": true + }, + "sequence_number": { + "type": "integer", + "format": "int64", + "description": "Backend attempt sequence number.", + "readOnly": true + }, "status": { "allOf": [ { @@ -21210,6 +21359,12 @@ "description": "Total compute duration consumed by the attempt.", "readOnly": true }, + "current_compute_time": { + "type": "string", + "format": "duration", + "description": "Current active compute duration for a running attempt.", + "readOnly": true + }, "queueing_info": { "type": "object", "additionalProperties": {}, @@ -21507,6 +21662,16 @@ "description": "Metric name.", "readOnly": true }, + "run_id": { + "type": "string", + "description": "Run identifier that emitted the metric.", + "readOnly": true + }, + "data_container_id": { + "type": "string", + "description": "Data container identifier that stores the metric.", + "readOnly": true + }, "metric_type": { "allOf": [ { @@ -21516,6 +21681,27 @@ "description": "Metric type.", "readOnly": true }, + "description": { + "type": "string", + "description": "Metric description.", + "readOnly": true + }, + "label": { + "type": "string", + "description": "Metric label.", + "readOnly": true + }, + "num_cells": { + "type": "integer", + "format": "int32", + "description": "Number of metric cells.", + "readOnly": true + }, + "data_location": { + "type": "string", + "description": "Metric data location.", + "readOnly": true + }, "columns": { "type": "object", "additionalProperties": { @@ -21523,6 +21709,15 @@ }, "description": "Column metadata for structured metric values.", "readOnly": true + }, + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/JobMetricSchema" + } + ], + "description": "Full metric schema metadata.", + "readOnly": true } }, "description": "Metadata for a metric emitted by a job or run." @@ -21596,6 +21791,60 @@ "description": "Metric identifier.", "readOnly": true }, + "name": { + "type": "string", + "description": "Metric name.", + "readOnly": true + }, + "run_id": { + "type": "string", + "description": "Run identifier that emitted the metric.", + "readOnly": true + }, + "data_container_id": { + "type": "string", + "description": "Data container identifier that stores the metric.", + "readOnly": true + }, + "metric_type": { + "allOf": [ + { + "$ref": "#/components/schemas/JobMetricType" + } + ], + "description": "Metric type.", + "readOnly": true + }, + "description": { + "type": "string", + "description": "Metric description.", + "readOnly": true + }, + "label": { + "type": "string", + "description": "Metric label.", + "readOnly": true + }, + "num_cells": { + "type": "integer", + "format": "int32", + "description": "Number of metric cells.", + "readOnly": true + }, + "data_location": { + "type": "string", + "description": "Metric data location.", + "readOnly": true + }, + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/JobMetricSchema" + } + ], + "description": "Full metric schema metadata.", + "readOnly": true + }, "step": { "type": "integer", "format": "int64", @@ -21643,6 +21892,47 @@ }, "description": "Sampled values for a metric." }, + "JobMetricSchema": { + "type": "object", + "properties": { + "num_properties": { + "type": "integer", + "format": "int32", + "description": "Number of properties in the schema.", + "readOnly": true + }, + "properties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricSchemaProperty" + }, + "description": "Metric schema properties.", + "readOnly": true + } + }, + "description": "Full metric schema metadata." + }, + "JobMetricSchemaProperty": { + "type": "object", + "properties": { + "property_id": { + "type": "string", + "description": "Metric schema property identifier.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Metric schema property name.", + "readOnly": true + }, + "type": { + "type": "string", + "description": "Metric schema property type.", + "readOnly": true + } + }, + "description": "One property in a metric schema." + }, "JobMetricType": { "anyOf": [ { diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 1b8fcdf9aa1e..efcc86fe8cc2 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -14556,9 +14556,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -14908,9 +14913,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -14961,9 +14971,9 @@ "name": "attempt_id", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The attempt identifier, or 'latest' for the latest attempt.", "schema": { - "type": "string" + "$ref": "#/components/schemas/JobAttemptIdentifier" } }, { @@ -15132,9 +15142,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -15450,9 +15465,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -15674,9 +15694,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -15773,9 +15798,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -15934,9 +15964,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -16095,9 +16130,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -16418,9 +16458,9 @@ "name": "attempt_id", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The attempt identifier, or 'latest' for the latest attempt.", "schema": { - "type": "string" + "$ref": "#/components/schemas/JobAttemptIdentifier" } }, { @@ -16464,9 +16504,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -16517,9 +16562,9 @@ "name": "attempt_id", "in": "path", "required": true, - "description": "The attempt identifier.", + "description": "The attempt identifier, or 'latest' for the latest attempt.", "schema": { - "type": "string" + "$ref": "#/components/schemas/JobAttemptIdentifier" } }, { @@ -16636,9 +16681,14 @@ "has_more": { "type": "boolean", "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true } }, - "description": "The response data for a requested list of items." + "description": "The response data for a requested list of training job items." } } } @@ -25479,11 +25529,31 @@ "type" ], "properties": { + "artifact_id": { + "type": "string", + "description": "Backend artifact identifier.", + "readOnly": true + }, + "origin": { + "type": "string", + "description": "Artifact origin.", + "readOnly": true + }, + "container": { + "type": "string", + "description": "Artifact container name.", + "readOnly": true + }, "path": { "type": "string", "description": "Artifact path relative to the job artifact root.", "readOnly": true }, + "etag": { + "type": "string", + "description": "Artifact entity tag.", + "readOnly": true + }, "type": { "allOf": [ { @@ -25516,6 +25586,23 @@ ], "description": "Time the artifact was last updated.", "readOnly": true + }, + "data_path": { + "allOf": [ + { + "$ref": "#/components/schemas/JobArtifactDataPath" + } + ], + "description": "Storage path details for the artifact.", + "readOnly": true + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Artifact tags.", + "readOnly": true } }, "description": "Metadata for an artifact produced by or attached to a job." @@ -25527,6 +25614,16 @@ "content_uri" ], "properties": { + "origin": { + "type": "string", + "description": "Artifact origin.", + "readOnly": true + }, + "container": { + "type": "string", + "description": "Artifact container name.", + "readOnly": true + }, "path": { "type": "string", "description": "Artifact path relative to the job artifact root.", @@ -25543,6 +25640,12 @@ "description": "MIME type of the content.", "readOnly": true }, + "content_length": { + "type": "integer", + "format": "int64", + "description": "Content length in bytes, when known.", + "readOnly": true + }, "expires_at": { "allOf": [ { @@ -25551,10 +25654,40 @@ ], "description": "Time the content URI expires.", "readOnly": true + }, + "tags": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Artifact tags.", + "readOnly": true } }, "description": "Content access information for a job artifact." }, + "JobArtifactDataPath": { + "type": "object", + "properties": { + "datastore_name": { + "type": "string", + "description": "Datastore containing the artifact content.", + "readOnly": true + }, + "relative_path": { + "type": "string", + "description": "Path relative to the datastore root.", + "readOnly": true + }, + "sql_data_path": { + "type": "object", + "additionalProperties": {}, + "description": "SQL path information, when the artifact is backed by SQL storage.", + "readOnly": true + } + }, + "description": "Storage path details for an artifact." + }, "JobArtifactType": { "anyOf": [ { @@ -25582,11 +25715,27 @@ "description": "The attempt identifier.", "readOnly": true }, + "run_id": { + "type": "string", + "description": "The RunHistory run identifier backing this attempt.", + "readOnly": true + }, "job_name": { "type": "string", "description": "The job name this attempt belongs to.", "readOnly": true }, + "data_container_id": { + "type": "string", + "description": "The data container identifier backing this attempt's artifacts and metrics.", + "readOnly": true + }, + "sequence_number": { + "type": "integer", + "format": "int64", + "description": "Backend attempt sequence number.", + "readOnly": true + }, "status": { "allOf": [ { @@ -25634,6 +25783,12 @@ "description": "Total compute duration consumed by the attempt.", "readOnly": true }, + "current_compute_time": { + "type": "string", + "format": "duration", + "description": "Current active compute duration for a running attempt.", + "readOnly": true + }, "queueing_info": { "type": "object", "additionalProperties": {}, @@ -25931,6 +26086,16 @@ "description": "Metric name.", "readOnly": true }, + "run_id": { + "type": "string", + "description": "Run identifier that emitted the metric.", + "readOnly": true + }, + "data_container_id": { + "type": "string", + "description": "Data container identifier that stores the metric.", + "readOnly": true + }, "metric_type": { "allOf": [ { @@ -25940,6 +26105,27 @@ "description": "Metric type.", "readOnly": true }, + "description": { + "type": "string", + "description": "Metric description.", + "readOnly": true + }, + "label": { + "type": "string", + "description": "Metric label.", + "readOnly": true + }, + "num_cells": { + "type": "integer", + "format": "int32", + "description": "Number of metric cells.", + "readOnly": true + }, + "data_location": { + "type": "string", + "description": "Metric data location.", + "readOnly": true + }, "columns": { "type": "object", "additionalProperties": { @@ -25947,6 +26133,15 @@ }, "description": "Column metadata for structured metric values.", "readOnly": true + }, + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/JobMetricSchema" + } + ], + "description": "Full metric schema metadata.", + "readOnly": true } }, "description": "Metadata for a metric emitted by a job or run." @@ -26020,6 +26215,60 @@ "description": "Metric identifier.", "readOnly": true }, + "name": { + "type": "string", + "description": "Metric name.", + "readOnly": true + }, + "run_id": { + "type": "string", + "description": "Run identifier that emitted the metric.", + "readOnly": true + }, + "data_container_id": { + "type": "string", + "description": "Data container identifier that stores the metric.", + "readOnly": true + }, + "metric_type": { + "allOf": [ + { + "$ref": "#/components/schemas/JobMetricType" + } + ], + "description": "Metric type.", + "readOnly": true + }, + "description": { + "type": "string", + "description": "Metric description.", + "readOnly": true + }, + "label": { + "type": "string", + "description": "Metric label.", + "readOnly": true + }, + "num_cells": { + "type": "integer", + "format": "int32", + "description": "Number of metric cells.", + "readOnly": true + }, + "data_location": { + "type": "string", + "description": "Metric data location.", + "readOnly": true + }, + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/JobMetricSchema" + } + ], + "description": "Full metric schema metadata.", + "readOnly": true + }, "step": { "type": "integer", "format": "int64", @@ -26067,6 +26316,47 @@ }, "description": "Sampled values for a metric." }, + "JobMetricSchema": { + "type": "object", + "properties": { + "num_properties": { + "type": "integer", + "format": "int32", + "description": "Number of properties in the schema.", + "readOnly": true + }, + "properties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobMetricSchemaProperty" + }, + "description": "Metric schema properties.", + "readOnly": true + } + }, + "description": "Full metric schema metadata." + }, + "JobMetricSchemaProperty": { + "type": "object", + "properties": { + "property_id": { + "type": "string", + "description": "Metric schema property identifier.", + "readOnly": true + }, + "name": { + "type": "string", + "description": "Metric schema property name.", + "readOnly": true + }, + "type": { + "type": "string", + "description": "Metric schema property type.", + "readOnly": true + } + }, + "description": "One property in a metric schema." + }, "JobMetricType": { "anyOf": [ { diff --git a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp index 8e5c8b421160..6eedff305d6c 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp @@ -1264,6 +1264,15 @@ model TrainingJobServiceCollection { services: Record; } +@doc("The response data for a requested list of training job items.") +model TrainingJobPagedResult { + ...AgentsPagedResult; + + @doc("Opaque cursor to pass as the next request's after value when has_more is true.") + @visibility(Lifecycle.Read) + next_after?: string; +} + @doc("Compute placement details for a job attempt.") model JobAttemptComputeDetails { @doc("Virtual machine size used for this attempt.") @@ -1297,10 +1306,22 @@ model JobAttempt { @visibility(Lifecycle.Read) id: string; + @doc("The RunHistory run identifier backing this attempt.") + @visibility(Lifecycle.Read) + run_id?: string; + @doc("The job name this attempt belongs to.") @visibility(Lifecycle.Read) job_name: string; + @doc("The data container identifier backing this attempt's artifacts and metrics.") + @visibility(Lifecycle.Read) + data_container_id?: string; + + @doc("Backend attempt sequence number.") + @visibility(Lifecycle.Read) + sequence_number?: int64; + @doc("The attempt status.") @visibility(Lifecycle.Read) status?: JobAttemptStatus; @@ -1326,6 +1347,11 @@ model JobAttempt { @encode(DurationKnownEncoding.ISO8601) compute_duration?: duration; + @doc("Current active compute duration for a running attempt.") + @visibility(Lifecycle.Read) + @encode(DurationKnownEncoding.ISO8601) + current_compute_time?: duration; + @doc("Queueing details associated with the attempt.") @visibility(Lifecycle.Read) queueing_info?: Record; @@ -1358,12 +1384,43 @@ union JobArtifactType { directory: "directory", } +@doc("Storage path details for an artifact.") +model JobArtifactDataPath { + @doc("Datastore containing the artifact content.") + @visibility(Lifecycle.Read) + datastore_name?: string; + + @doc("Path relative to the datastore root.") + @visibility(Lifecycle.Read) + relative_path?: string; + + @doc("SQL path information, when the artifact is backed by SQL storage.") + @visibility(Lifecycle.Read) + sql_data_path?: Record; +} + @doc("Metadata for an artifact produced by or attached to a job.") model JobArtifact { + @doc("Backend artifact identifier.") + @visibility(Lifecycle.Read) + artifact_id?: string; + + @doc("Artifact origin.") + @visibility(Lifecycle.Read) + origin?: string; + + @doc("Artifact container name.") + @visibility(Lifecycle.Read) + container?: string; + @doc("Artifact path relative to the job artifact root.") @visibility(Lifecycle.Read) path: string; + @doc("Artifact entity tag.") + @visibility(Lifecycle.Read) + etag?: string; + @doc("Artifact type.") @visibility(Lifecycle.Read) type: JobArtifactType; @@ -1379,10 +1436,26 @@ model JobArtifact { @doc("Time the artifact was last updated.") @visibility(Lifecycle.Read) updated_at?: FoundryTimestamp; + + @doc("Storage path details for the artifact.") + @visibility(Lifecycle.Read) + data_path?: JobArtifactDataPath; + + @doc("Artifact tags.") + @visibility(Lifecycle.Read) + tags?: Record; } @doc("Content access information for a job artifact.") model JobArtifactContentInfo { + @doc("Artifact origin.") + @visibility(Lifecycle.Read) + origin?: string; + + @doc("Artifact container name.") + @visibility(Lifecycle.Read) + container?: string; + @doc("Artifact path relative to the job artifact root.") @visibility(Lifecycle.Read) path: string; @@ -1395,9 +1468,17 @@ model JobArtifactContentInfo { @visibility(Lifecycle.Read) content_type?: string; + @doc("Content length in bytes, when known.") + @visibility(Lifecycle.Read) + content_length?: int64; + @doc("Time the content URI expires.") @visibility(Lifecycle.Read) expires_at?: FoundryTimestamp; + + @doc("Artifact tags.") + @visibility(Lifecycle.Read) + tags?: Record; } @doc("The kind of metric emitted by a job.") @@ -1414,19 +1495,73 @@ union JobMetricType { image: "image", } +@doc("One property in a metric schema.") +model JobMetricSchemaProperty { + @doc("Metric schema property identifier.") + @visibility(Lifecycle.Read) + property_id?: string; + + @doc("Metric schema property name.") + @visibility(Lifecycle.Read) + name?: string; + + @doc("Metric schema property type.") + @visibility(Lifecycle.Read) + type?: string; +} + +@doc("Full metric schema metadata.") +model JobMetricSchema { + @doc("Number of properties in the schema.") + @visibility(Lifecycle.Read) + num_properties?: int32; + + @doc("Metric schema properties.") + @visibility(Lifecycle.Read) + properties?: JobMetricSchemaProperty[]; +} + @doc("Metadata for a metric emitted by a job or run.") model JobMetric { @doc("Metric name.") @visibility(Lifecycle.Read) name: string; + @doc("Run identifier that emitted the metric.") + @visibility(Lifecycle.Read) + run_id?: string; + + @doc("Data container identifier that stores the metric.") + @visibility(Lifecycle.Read) + data_container_id?: string; + @doc("Metric type.") @visibility(Lifecycle.Read) metric_type?: JobMetricType; + @doc("Metric description.") + @visibility(Lifecycle.Read) + description?: string; + + @doc("Metric label.") + @visibility(Lifecycle.Read) + label?: string; + + @doc("Number of metric cells.") + @visibility(Lifecycle.Read) + num_cells?: int32; + + @doc("Metric data location.") + @visibility(Lifecycle.Read) + data_location?: string; + @doc("Column metadata for structured metric values.") @visibility(Lifecycle.Read) columns?: Record; + + @doc("Full metric schema metadata.") + @visibility(Lifecycle.Read) + schema?: JobMetricSchema; } @doc("A metric data point.") @@ -1435,6 +1570,42 @@ model JobMetricPoint { @visibility(Lifecycle.Read) metric_id?: string; + @doc("Metric name.") + @visibility(Lifecycle.Read) + name?: string; + + @doc("Run identifier that emitted the metric.") + @visibility(Lifecycle.Read) + run_id?: string; + + @doc("Data container identifier that stores the metric.") + @visibility(Lifecycle.Read) + data_container_id?: string; + + @doc("Metric type.") + @visibility(Lifecycle.Read) + metric_type?: JobMetricType; + + @doc("Metric description.") + @visibility(Lifecycle.Read) + description?: string; + + @doc("Metric label.") + @visibility(Lifecycle.Read) + label?: string; + + @doc("Number of metric cells.") + @visibility(Lifecycle.Read) + num_cells?: int32; + + @doc("Metric data location.") + @visibility(Lifecycle.Read) + data_location?: string; + + @doc("Full metric schema metadata.") + @visibility(Lifecycle.Read) + schema?: JobMetricSchema; + @doc("Metric step.") @visibility(Lifecycle.Read) step?: int64; diff --git a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp index 18e0948cf039..16bbd46f5413 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp @@ -47,7 +47,7 @@ interface TrainingJobs { list is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.training_jobs_v1_preview, JobsFilterQueryParams, - AgentsPagedResult + TrainingJobPagedResult >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "We need explicit definition for header support" @@ -170,7 +170,7 @@ interface TrainingJobAttempts { ...JobContinuationListQueryParameters; }, - AgentsPagedResult + TrainingJobPagedResult >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job attempts are projected from job execution history." @@ -184,9 +184,9 @@ interface TrainingJobAttempts { @path job_name: string; - @doc("The attempt identifier.") + @doc("The attempt identifier, or 'latest' for the latest attempt.") @path - attempt_id: string; + attempt_id: JobAttemptIdentifier; }, JobAttempt >; @@ -211,7 +211,7 @@ interface TrainingJobAttemptArtifacts { ...JobArtifactListQueryParameters; }, - AgentsPagedResult + TrainingJobPagedResult >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." @@ -275,7 +275,7 @@ interface TrainingJobAttemptArtifacts { ...JobArtifactContentInfoByPrefixQueryParameters; }, - AgentsPagedResult + TrainingJobPagedResult >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt artifacts are projected from the attempt data container." @@ -321,7 +321,7 @@ interface TrainingJobAttemptMetrics { ...JobMetricListQueryParameters; }, - AgentsPagedResult + TrainingJobPagedResult >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." @@ -339,7 +339,7 @@ interface TrainingJobAttemptMetrics { @path attempt_id: JobAttemptIdentifier; }, - AgentsPagedResult + TrainingJobPagedResult >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." @@ -363,7 +363,7 @@ interface TrainingJobAttemptMetrics { ...JobMetricQueryParameters; }, - AgentsPagedResult + TrainingJobPagedResult >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." @@ -387,7 +387,7 @@ interface TrainingJobAttemptMetrics { ...JobMetricQueryParameters; }, - AgentsPagedResult + TrainingJobPagedResult >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt metrics are projected from the attempt data container." @@ -452,7 +452,7 @@ interface TrainingJobOutputs { @path job_name: string; }, - AgentsPagedResult + TrainingJobPagedResult >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job outputs are projected from job outputs and asset relationships." @@ -487,11 +487,11 @@ interface TrainingJobAttemptOutputs { @path job_name: string; - @doc("The attempt identifier.") + @doc("The attempt identifier, or 'latest' for the latest attempt.") @path - attempt_id: string; + attempt_id: JobAttemptIdentifier; }, - AgentsPagedResult + TrainingJobPagedResult >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt outputs are projected from attempt output state and asset relationships." @@ -505,9 +505,9 @@ interface TrainingJobAttemptOutputs { @path job_name: string; - @doc("The attempt identifier.") + @doc("The attempt identifier, or 'latest' for the latest attempt.") @path - attempt_id: string; + attempt_id: JobAttemptIdentifier; @doc("The output name.") @path From 9857a44bd2935dc700003fec85078585518dc16d Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Fri, 8 May 2026 01:12:21 -0700 Subject: [PATCH 32/37] feat(foundry): add latest attempt include Expose include=latest_attempt on training job get, document the read-only latest_attempt projection, and keep examples plus generated OpenAPI in sync. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot (unknown) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- ...gJobs_GetAttemptLatest_MaximumSet_Gen.json | 34 +++++++++++++++++++ .../v1/TrainingJobs_Get_MaximumSet_Gen.json | 20 +++++++++++ .../v1/microsoft-foundry-openapi3.json | 33 ++++++++++++++++++ .../microsoft-foundry-openapi3.json | 33 ++++++++++++++++++ .../Foundry/src/training_jobs/models.tsp | 4 +++ .../Foundry/src/training_jobs/routes.tsp | 20 +++++++++-- 6 files changed, 141 insertions(+), 3 deletions(-) create mode 100644 specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_GetAttemptLatest_MaximumSet_Gen.json diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_GetAttemptLatest_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_GetAttemptLatest_MaximumSet_Gen.json new file mode 100644 index 000000000000..ab2cf1658d6a --- /dev/null +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_GetAttemptLatest_MaximumSet_Gen.json @@ -0,0 +1,34 @@ +{ + "title": "TrainingJobs_GetAttemptLatest_MaximumSet", + "operationId": "TrainingJobs_GetAttempt", + "parameters": { + "api-version": "v1", + "job_name": "my_training_job_01", + "attempt_id": "latest", + "x-ms-client-request-id": "cf35b680-dc80-4815-ab83-9364acc3bce6", + "Foundry-Features": "TrainingJobs=V1Preview" + }, + "responses": { + "200": { + "body": { + "id": "2", + "run_id": "my_training_job_01", + "job_name": "my_training_job_01", + "data_container_id": "dcid.my_training_job_01.2", + "sequence_number": 2, + "status": "running", + "status_reason": "Preparing compute", + "started_at": 1577882096, + "last_started_at": 1577882096, + "current_compute_time": "PT5M", + "compute_details": { + "instance_type": "Standard_NC6s_v3", + "instance_count": 2, + "gpu_count": 2, + "region": "westus2" + }, + "is_latest": true + } + } + } +} diff --git a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json index c7da1dce0852..d55d422f4b1a 100644 --- a/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json +++ b/specification/ai-foundry/data-plane/Foundry/examples/v1/TrainingJobs_Get_MaximumSet_Gen.json @@ -4,6 +4,7 @@ "parameters": { "api-version": "v1", "name": "my_training_job_01", + "include": "latest_attempt", "x-ms-client-request-id": "cf35b680-dc80-4815-ab83-9364acc3bce6", "Foundry-Features": "TrainingJobs=V1Preview" }, @@ -77,6 +78,25 @@ "status": "running", "properties": { "experimentName": "my-experiment" + }, + "latest_attempt": { + "id": "2", + "run_id": "my_training_job_01", + "job_name": "my_training_job_01", + "data_container_id": "dcid.my_training_job_01.2", + "sequence_number": 2, + "status": "running", + "status_reason": "Preparing compute", + "started_at": 1577882096, + "last_started_at": 1577882096, + "current_compute_time": "PT5M", + "compute_details": { + "instance_type": "Standard_NC6s_v3", + "instance_count": 2, + "gpu_count": 2, + "region": "westus2" + }, + "is_latest": true } } } diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 0da514e31152..288c5a96dcc6 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -14167,6 +14167,16 @@ "TrainingJobs=V1Preview" ] } + }, + { + "name": "include", + "in": "query", + "required": false, + "description": "Additional related data to include in the response. Use latest_attempt to inline the latest execution attempt.", + "schema": { + "$ref": "#/components/schemas/TrainingJobInclude" + }, + "explode": false } ], "responses": { @@ -21086,6 +21096,15 @@ "description": "Status of the job.", "readOnly": true }, + "latest_attempt": { + "allOf": [ + { + "$ref": "#/components/schemas/JobAttempt" + } + ], + "description": "The latest execution attempt for the job. This field is omitted unless requested with include=latest_attempt. The same attempt resource is available from /training_jobs/{job_name}/attempts/latest.", + "readOnly": true + }, "system_data": { "allOf": [ { @@ -47089,6 +47108,20 @@ }, "description": "Python runtime dependencies for an inline function." }, + "TrainingJobInclude": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "latest_attempt" + ] + } + ], + "description": "Optional related training job data to include in a get response." + }, "TrainingJobService": { "type": "object", "properties": { diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index efcc86fe8cc2..64643d393d35 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -16885,6 +16885,16 @@ "TrainingJobs=V1Preview" ] } + }, + { + "name": "include", + "in": "query", + "required": false, + "description": "Additional related data to include in the response. Use latest_attempt to inline the latest execution attempt.", + "schema": { + "$ref": "#/components/schemas/TrainingJobInclude" + }, + "explode": false } ], "responses": { @@ -25510,6 +25520,15 @@ "description": "Status of the job.", "readOnly": true }, + "latest_attempt": { + "allOf": [ + { + "$ref": "#/components/schemas/JobAttempt" + } + ], + "description": "The latest execution attempt for the job. This field is omitted unless requested with include=latest_attempt. The same attempt resource is available from /training_jobs/{job_name}/attempts/latest.", + "readOnly": true + }, "system_data": { "allOf": [ { @@ -52078,6 +52097,20 @@ }, "description": "Python runtime dependencies for an inline function." }, + "TrainingJobInclude": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "string", + "enum": [ + "latest_attempt" + ] + } + ], + "description": "Optional related training job data to include in a get response." + }, "TrainingJobService": { "type": "object", "properties": { diff --git a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp index 6eedff305d6c..7b5ac56e9aa4 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp @@ -1037,6 +1037,10 @@ model Job { ...CommandJob; + @doc("The latest execution attempt for the job. This field is omitted unless requested with include=latest_attempt. The same attempt resource is available from /training_jobs/{job_name}/attempts/latest.") + @visibility(Lifecycle.Read) + latest_attempt?: JobAttempt; + @doc("Metadata pertaining to creation and last modification of the resource.") @visibility(Lifecycle.Read) system_data?: SystemData; diff --git a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp index 16bbd46f5413..403ca1879499 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp @@ -29,6 +29,22 @@ alias JobsFilterQueryParams = { ...CommonPageQueryParameters; }; +@doc("Optional related training job data to include in a get response.") +union TrainingJobInclude { + string, + + @doc("Inline the latest execution attempt. The same data is available from /training_jobs/{job_name}/attempts/latest.") + latest_attempt: "latest_attempt", +} + +alias TrainingJobGetQueryParams = { + ...TrainingJobsPreviewHeader; + + @doc("Additional related data to include in the response. Use latest_attempt to inline the latest execution attempt.") + @query + include?: TrainingJobInclude; +}; + @doc("Training job attempt identifier. Use 'latest' for the latest attempt.") union JobAttemptIdentifier { string, @@ -55,9 +71,7 @@ interface TrainingJobs { @get get is Azure.Core.Foundations.ResourceOperation< Job, - { - ...TrainingJobsPreviewHeader; - }, + TrainingJobGetQueryParams, Azure.Core.Foundations.ResourceOkResponse >; From f0d74eabc784aff0949f2d701c1e56ccebe66fb5 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Fri, 8 May 2026 03:04:50 -0700 Subject: [PATCH 33/37] fix(foundry): align training job path parameter name Use explicit required-preview operations for top-level training job member routes so generated OpenAPI uses job_name like the child routes. Regenerate OpenAPI for v1 and virtual-public-preview. Authored-by: GitHub Copilot for VS Code Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../v1/microsoft-foundry-openapi3.json | 342 +++++++++--------- .../microsoft-foundry-openapi3.json | 342 +++++++++--------- .../Foundry/src/training_jobs/routes.tsp | 37 +- 3 files changed, 361 insertions(+), 360 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 288c5a96dcc6..278afea7b292 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -12086,6 +12086,162 @@ ] } }, + "/training_jobs/{job_name}": { + "get": { + "operationId": "TrainingJobs_get", + "description": "Get a training job by name.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] + } + }, + { + "name": "job_name", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "include", + "in": "query", + "required": false, + "description": "Additional related data to include in the response. Use latest_attempt to inline the latest execution attempt.", + "schema": { + "$ref": "#/components/schemas/TrainingJobInclude" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Job" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + }, + "delete": { + "operationId": "TrainingJobs_beginDelete", + "description": "Delete a training job by name. Returns 202 Accepted with Location and Operation-Location headers to poll for completion, or 204 if the job does not exist.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] + } + }, + { + "name": "job_name", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "Response returned when a job delete operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the final result of the delete operation.", + "schema": { + "type": "string" + } + }, + "Operation-Location": { + "required": false, + "description": "URL to poll for the status of the delete operation.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "204": { + "description": "There is no content to send for this request, but the headers may be useful." + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, "/training_jobs/{job_name}/attempts": { "get": { "operationId": "TrainingJobAttempts_listAttempts", @@ -14139,23 +14295,11 @@ ] } }, - "/training_jobs/{name}": { - "get": { - "operationId": "TrainingJobs_get", - "description": "Get a training job by name.", + "/training_jobs/{job_name}:cancel": { + "post": { + "operationId": "TrainingJobs_beginCancel", + "description": "Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with Location and Operation-Location headers to poll for completion.", "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the training job. This is case-sensitive.", - "schema": { - "type": "string" - } - }, { "name": "Foundry-Features", "in": "header", @@ -14169,164 +14313,23 @@ } }, { - "name": "include", - "in": "query", - "required": false, - "description": "Additional related data to include in the response. Use latest_attempt to inline the latest execution attempt.", - "schema": { - "$ref": "#/components/schemas/TrainingJobInclude" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Job" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - }, - "delete": { - "operationId": "TrainingJobs_beginDelete", - "description": "Delete a training job by name. Returns 202 Accepted with Location and Operation-Location headers to poll for completion, or 204 if the job does not exist.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", + "name": "job_name", "in": "path", "required": true, - "description": "The name of the training job. This is case-sensitive.", + "description": "The training job name.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "TrainingJobs=V1Preview" - ] - } - } - ], - "responses": { - "202": { - "description": "Response returned when a job delete operation is accepted asynchronously.", - "headers": { - "Location": { - "required": true, - "description": "URL to poll for the final result of the delete operation.", - "schema": { - "type": "string" - } - }, - "Operation-Location": { - "required": false, - "description": "URL to poll for the status of the delete operation.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "required": false, - "description": "Suggested delay in seconds before polling.", - "schema": { - "type": "integer", - "format": "int32" - } - } - } - }, - "204": { - "description": "There is no content to send for this request, but the headers may be useful." - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{name}:cancel": { - "post": { - "operationId": "TrainingJobs_beginCancel", - "description": "Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with Location and Operation-Location headers to poll for completion.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The name of the training job. This is case-sensitive.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "TrainingJobs=V1Preview" - ] - } + }, + "explode": false } ], "responses": { @@ -14362,19 +14365,10 @@ }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 64643d393d35..cfc68bafb7cb 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -14804,6 +14804,162 @@ ] } }, + "/training_jobs/{job_name}": { + "get": { + "operationId": "TrainingJobs_get", + "description": "Get a training job by name.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] + } + }, + { + "name": "job_name", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "include", + "in": "query", + "required": false, + "description": "Additional related data to include in the response. Use latest_attempt to inline the latest execution attempt.", + "schema": { + "$ref": "#/components/schemas/TrainingJobInclude" + }, + "explode": false + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Job" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + }, + "delete": { + "operationId": "TrainingJobs_beginDelete", + "description": "Delete a training job by name. Returns 202 Accepted with Location and Operation-Location headers to poll for completion, or 204 if the job does not exist.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] + } + }, + { + "name": "job_name", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "202": { + "description": "Response returned when a job delete operation is accepted asynchronously.", + "headers": { + "Location": { + "required": true, + "description": "URL to poll for the final result of the delete operation.", + "schema": { + "type": "string" + } + }, + "Operation-Location": { + "required": false, + "description": "URL to poll for the status of the delete operation.", + "schema": { + "type": "string" + } + }, + "Retry-After": { + "required": false, + "description": "Suggested delay in seconds before polling.", + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "204": { + "description": "There is no content to send for this request, but the headers may be useful." + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, "/training_jobs/{job_name}/attempts": { "get": { "operationId": "TrainingJobAttempts_listAttempts", @@ -16857,23 +17013,11 @@ ] } }, - "/training_jobs/{name}": { - "get": { - "operationId": "TrainingJobs_get", - "description": "Get a training job by name.", + "/training_jobs/{job_name}:cancel": { + "post": { + "operationId": "TrainingJobs_beginCancel", + "description": "Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with Location and Operation-Location headers to poll for completion.", "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", - "in": "path", - "required": true, - "description": "The name of the training job. This is case-sensitive.", - "schema": { - "type": "string" - } - }, { "name": "Foundry-Features", "in": "header", @@ -16887,164 +17031,23 @@ } }, { - "name": "include", - "in": "query", - "required": false, - "description": "Additional related data to include in the response. Use latest_attempt to inline the latest execution attempt.", - "schema": { - "$ref": "#/components/schemas/TrainingJobInclude" - }, - "explode": false - } - ], - "responses": { - "200": { - "description": "The request has succeeded.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Job" - } - } - } - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - }, - "delete": { - "operationId": "TrainingJobs_beginDelete", - "description": "Delete a training job by name. Returns 202 Accepted with Location and Operation-Location headers to poll for completion, or 204 if the job does not exist.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", + "name": "job_name", "in": "path", "required": true, - "description": "The name of the training job. This is case-sensitive.", + "description": "The training job name.", "schema": { "type": "string" } }, { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "TrainingJobs=V1Preview" - ] - } - } - ], - "responses": { - "202": { - "description": "Response returned when a job delete operation is accepted asynchronously.", - "headers": { - "Location": { - "required": true, - "description": "URL to poll for the final result of the delete operation.", - "schema": { - "type": "string" - } - }, - "Operation-Location": { - "required": false, - "description": "URL to poll for the status of the delete operation.", - "schema": { - "type": "string" - } - }, - "Retry-After": { - "required": false, - "description": "Suggested delay in seconds before polling.", - "schema": { - "type": "integer", - "format": "int32" - } - } - } - }, - "204": { - "description": "There is no content to send for this request, but the headers may be useful." - }, - "default": { - "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" - } - } - } - } - }, - "tags": [ - "TrainingJobs" - ] - } - }, - "/training_jobs/{name}:cancel": { - "post": { - "operationId": "TrainingJobs_beginCancel", - "description": "Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with Location and Operation-Location headers to poll for completion.", - "parameters": [ - { - "$ref": "#/components/parameters/Azure.Core.Foundations.ApiVersionParameter" - }, - { - "name": "name", - "in": "path", + "name": "api-version", + "in": "query", "required": true, - "description": "The name of the training job. This is case-sensitive.", + "description": "The API version to use for this operation.", "schema": { "type": "string" - } - }, - { - "name": "Foundry-Features", - "in": "header", - "required": true, - "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", - "schema": { - "type": "string", - "enum": [ - "TrainingJobs=V1Preview" - ] - } + }, + "explode": false } ], "responses": { @@ -17080,19 +17083,10 @@ }, "default": { "description": "An unexpected error response.", - "headers": { - "x-ms-error-code": { - "required": false, - "description": "String error code indicating what went wrong.", - "schema": { - "type": "string" - } - } - }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Azure.Core.Foundations.ErrorResponse" + "$ref": "#/components/schemas/ApiErrorResponse" } } } diff --git a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp index 403ca1879499..1bd30bd05b6e 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp @@ -69,10 +69,19 @@ interface TrainingJobs { #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "We need explicit definition for header support" @doc("Get a training job by name.") @get - get is Azure.Core.Foundations.ResourceOperation< - Job, - TrainingJobGetQueryParams, - Azure.Core.Foundations.ResourceOkResponse + @route("/training_jobs/{job_name}") + get is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("Additional related data to include in the response. Use latest_attempt to inline the latest execution attempt.") + @query + include?: TrainingJobInclude; + }, + OkResponse >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job services are projected from run history service instances." @@ -113,10 +122,13 @@ interface TrainingJobs { #suppress "@azure-tools/typespec-azure-core/no-response-body" "Delete LRO returns 202 with Location header, 204 with no body" @doc("Delete a training job by name. Returns 202 Accepted with Location and Operation-Location headers to poll for completion, or 204 if the job does not exist.") @delete - beginDelete is Azure.Core.Foundations.ResourceOperation< - Job, + @route("/training_jobs/{job_name}") + beginDelete is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, { - ...TrainingJobsPreviewHeader; + @doc("The training job name.") + @path + job_name: string; }, JobDeleteAcceptedResponse | Http.NoContentResponse >; @@ -125,12 +137,13 @@ interface TrainingJobs { #suppress "@azure-tools/typespec-azure-core/no-response-body" "Cancel LRO returns 200 or 202 with Location header, no body" @doc("Cancel a training job by name. Returns 200 if cancelled immediately, or 202 Accepted with Location and Operation-Location headers to poll for completion.") @post - @Rest.action("cancel") - @actionSeparator(":") - beginCancel is Azure.Core.Foundations.ResourceOperation< - Job, + @route("/training_jobs/{job_name}:cancel") + beginCancel is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, { - ...TrainingJobsPreviewHeader; + @doc("The training job name.") + @path + job_name: string; }, Http.OkResponse | JobCancelAcceptedResponse >; From d6c78f8ef7c839d5379fc7d10d774178e94a6357 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Fri, 8 May 2026 03:48:29 -0700 Subject: [PATCH 34/37] fix(ai-foundry): narrow training job paging parameters Removes unsupported before cursors from training job list surfaces while keeping order where MFE can implement it. Authored-by: GitHub Copilot for VS Code Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../v1/microsoft-foundry-openapi3.json | 120 +----------------- .../microsoft-foundry-openapi3.json | 120 +----------------- .../Foundry/src/training_jobs/models.tsp | 17 ++- .../Foundry/src/training_jobs/routes.tsp | 2 +- 4 files changed, 21 insertions(+), 238 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 278afea7b292..ef7924daf2a8 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -11767,16 +11767,6 @@ }, "explode": false }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, { "name": "after", "in": "query", @@ -11788,12 +11778,12 @@ "explode": false }, { - "name": "before", + "name": "order", "in": "query", "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "string" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, @@ -12268,28 +12258,6 @@ "type": "string" } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, { "name": "after", "in": "query", @@ -12300,16 +12268,6 @@ }, "explode": false }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -12499,16 +12457,6 @@ }, "explode": false }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, { "name": "after", "in": "query", @@ -12519,16 +12467,6 @@ }, "explode": false }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "path_prefix", "in": "query", @@ -12820,28 +12758,6 @@ }, "explode": false }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, { "name": "after", "in": "query", @@ -12852,16 +12768,6 @@ }, "explode": false }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -13061,16 +12967,6 @@ }, "explode": false }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, { "name": "after", "in": "query", @@ -13081,16 +12977,6 @@ }, "explode": false }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index cfc68bafb7cb..fa5c4964ba0d 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -14485,16 +14485,6 @@ }, "explode": false }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, { "name": "after", "in": "query", @@ -14506,12 +14496,12 @@ "explode": false }, { - "name": "before", + "name": "order", "in": "query", "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", + "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", "schema": { - "type": "string" + "$ref": "#/components/schemas/PageOrder" }, "explode": false }, @@ -14986,28 +14976,6 @@ "type": "string" } }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, { "name": "after", "in": "query", @@ -15018,16 +14986,6 @@ }, "explode": false }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -15217,16 +15175,6 @@ }, "explode": false }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, { "name": "after", "in": "query", @@ -15237,16 +15185,6 @@ }, "explode": false }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "path_prefix", "in": "query", @@ -15538,28 +15476,6 @@ }, "explode": false }, - { - "name": "limit", - "in": "query", - "required": false, - "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100, and the\ndefault is 20.", - "schema": { - "type": "integer", - "format": "int32", - "default": 20 - }, - "explode": false - }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, { "name": "after", "in": "query", @@ -15570,16 +15486,6 @@ }, "explode": false }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", @@ -15779,16 +15685,6 @@ }, "explode": false }, - { - "name": "order", - "in": "query", - "required": false, - "description": "Sort order by the `created_at` timestamp of the objects. `asc` for ascending order and`desc`\nfor descending order.", - "schema": { - "$ref": "#/components/schemas/PageOrder" - }, - "explode": false - }, { "name": "after", "in": "query", @@ -15799,16 +15695,6 @@ }, "explode": false }, - { - "name": "before", - "in": "query", - "required": false, - "description": "A cursor for use in pagination. `before` is an object ID that defines your place in the list.\nFor instance, if you make a list request and receive 100 objects, ending with obj_foo, your\nsubsequent call can include before=obj_foo in order to fetch the previous page of the list.", - "schema": { - "type": "string" - }, - "explode": false - }, { "name": "api-version", "in": "query", diff --git a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp index 7b5ac56e9aa4..60442f967efd 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp @@ -1699,9 +1699,20 @@ model JobOutputReference { description?: string; } -alias JobPagedListQueryParameters = CommonPageQueryParameters; +alias JobForwardPageQueryParameters = { + ...PageLimitQueryParameter; + ...PageAfterQueryParameter; +}; + +alias JobOrderedPageQueryParameters = JobForwardPageQueryParameters & { + ...PageOrderQueryParameter; +}; + +alias JobContinuationListQueryParameters = { + ...PageAfterQueryParameter; +}; -alias JobContinuationListQueryParameters = CommonPageQueryParameters; +alias JobPagedListQueryParameters = JobForwardPageQueryParameters; alias JobArtifactListQueryParameters = JobPagedListQueryParameters & { @doc("Artifact path prefix to list.") @@ -1716,7 +1727,7 @@ alias JobArtifactContentInfoByPrefixQueryParameters = { @query path_prefix?: string; - ...CommonPageQueryParameters; + ...PageAfterQueryParameter; }; alias JobServicesQueryParameters = { diff --git a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp index 1bd30bd05b6e..2be645adc293 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp @@ -26,7 +26,7 @@ alias JobsFilterQueryParams = { @query properties?: string; - ...CommonPageQueryParameters; + ...JobOrderedPageQueryParameters; }; @doc("Optional related training job data to include in a get response.") From d334d51644e97f8faa99a0134919bb30335d6f76 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Fri, 8 May 2026 04:58:31 -0700 Subject: [PATCH 35/37] feat(ai-foundry): add training job include expansions Document expansion-style include values for GET training_jobs/{job_name} and add read-only response fields for RunHistory-backed job details. Regenerate Foundry OpenAPI outputs from TypeSpec. Authored-by: GitHub Copilot for VS Code Model: GitHub Copilot (copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../v1/microsoft-foundry-openapi3.json | 93 ++++++++++++++++++- .../microsoft-foundry-openapi3.json | 93 ++++++++++++++++++- .../Foundry/src/training_jobs/models.tsp | 44 +++++++++ .../Foundry/src/training_jobs/routes.tsp | 37 +++++++- 4 files changed, 261 insertions(+), 6 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index ef7924daf2a8..01148bddc849 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -12106,7 +12106,7 @@ "name": "include", "in": "query", "required": false, - "description": "Additional related data to include in the response. Use latest_attempt to inline the latest execution attempt.", + "description": "Additional related data to include in the response. Values are comma-separated expansion names such as latest_attempt, input_datasets, output_datasets, execution_definition, services, log_files, and job_cost.", "schema": { "$ref": "#/components/schemas/TrainingJobInclude" }, @@ -20985,6 +20985,84 @@ "description": "The latest execution attempt for the job. This field is omitted unless requested with include=latest_attempt. The same attempt resource is available from /training_jobs/{job_name}/attempts/latest.", "readOnly": true }, + "input_datasets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": {} + }, + "description": "Input dataset lineage recorded for the job. This field is omitted unless requested with include=input_datasets.", + "readOnly": true + }, + "output_datasets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": {} + }, + "description": "Output dataset lineage recorded for the job. This field is omitted unless requested with include=output_datasets.", + "readOnly": true + }, + "execution_definition": { + "type": "object", + "additionalProperties": {}, + "description": "Backend execution definition used to run the job. This field is omitted unless requested with include=execution_definition.", + "readOnly": true + }, + "resolved_specification": { + "type": "object", + "additionalProperties": {}, + "description": "Backend-resolved job specification. This field is omitted unless requested with include=resolved_specification.", + "readOnly": true + }, + "parameters": { + "type": "object", + "additionalProperties": {}, + "description": "Parameters recorded for the job. This field is omitted unless requested with include=parameters.", + "readOnly": true + }, + "settings": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Settings recorded for the job. This field is omitted unless requested with include=settings.", + "readOnly": true + }, + "services": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TrainingJobService" + }, + "description": "Service endpoints for the current job run. This field is omitted unless requested with include=services.", + "readOnly": true + }, + "log_files": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Log file URI metadata for the job. This field is omitted unless requested with include=log_files.", + "readOnly": true + }, + "job_cost": { + "type": "object", + "additionalProperties": {}, + "description": "Job cost summary. This field is omitted unless requested with include=job_cost.", + "readOnly": true + }, + "compute_request": { + "type": "object", + "additionalProperties": {}, + "description": "Compute request recorded for the job. This field is omitted unless requested with include=compute_request.", + "readOnly": true + }, + "compute": { + "type": "object", + "additionalProperties": {}, + "description": "Compute record for the job. This field is omitted unless requested with include=compute.", + "readOnly": true + }, "system_data": { "allOf": [ { @@ -46996,7 +47074,18 @@ { "type": "string", "enum": [ - "latest_attempt" + "latest_attempt", + "input_datasets", + "output_datasets", + "execution_definition", + "resolved_specification", + "parameters", + "settings", + "services", + "log_files", + "job_cost", + "compute_request", + "compute" ] } ], diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index fa5c4964ba0d..5191ef0fe4aa 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -14824,7 +14824,7 @@ "name": "include", "in": "query", "required": false, - "description": "Additional related data to include in the response. Use latest_attempt to inline the latest execution attempt.", + "description": "Additional related data to include in the response. Values are comma-separated expansion names such as latest_attempt, input_datasets, output_datasets, execution_definition, services, log_files, and job_cost.", "schema": { "$ref": "#/components/schemas/TrainingJobInclude" }, @@ -25409,6 +25409,84 @@ "description": "The latest execution attempt for the job. This field is omitted unless requested with include=latest_attempt. The same attempt resource is available from /training_jobs/{job_name}/attempts/latest.", "readOnly": true }, + "input_datasets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": {} + }, + "description": "Input dataset lineage recorded for the job. This field is omitted unless requested with include=input_datasets.", + "readOnly": true + }, + "output_datasets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": {} + }, + "description": "Output dataset lineage recorded for the job. This field is omitted unless requested with include=output_datasets.", + "readOnly": true + }, + "execution_definition": { + "type": "object", + "additionalProperties": {}, + "description": "Backend execution definition used to run the job. This field is omitted unless requested with include=execution_definition.", + "readOnly": true + }, + "resolved_specification": { + "type": "object", + "additionalProperties": {}, + "description": "Backend-resolved job specification. This field is omitted unless requested with include=resolved_specification.", + "readOnly": true + }, + "parameters": { + "type": "object", + "additionalProperties": {}, + "description": "Parameters recorded for the job. This field is omitted unless requested with include=parameters.", + "readOnly": true + }, + "settings": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Settings recorded for the job. This field is omitted unless requested with include=settings.", + "readOnly": true + }, + "services": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/TrainingJobService" + }, + "description": "Service endpoints for the current job run. This field is omitted unless requested with include=services.", + "readOnly": true + }, + "log_files": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Log file URI metadata for the job. This field is omitted unless requested with include=log_files.", + "readOnly": true + }, + "job_cost": { + "type": "object", + "additionalProperties": {}, + "description": "Job cost summary. This field is omitted unless requested with include=job_cost.", + "readOnly": true + }, + "compute_request": { + "type": "object", + "additionalProperties": {}, + "description": "Compute request recorded for the job. This field is omitted unless requested with include=compute_request.", + "readOnly": true + }, + "compute": { + "type": "object", + "additionalProperties": {}, + "description": "Compute record for the job. This field is omitted unless requested with include=compute.", + "readOnly": true + }, "system_data": { "allOf": [ { @@ -51985,7 +52063,18 @@ { "type": "string", "enum": [ - "latest_attempt" + "latest_attempt", + "input_datasets", + "output_datasets", + "execution_definition", + "resolved_specification", + "parameters", + "settings", + "services", + "log_files", + "job_cost", + "compute_request", + "compute" ] } ], diff --git a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp index 60442f967efd..97a0b0220b68 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp @@ -1041,6 +1041,50 @@ model Job { @visibility(Lifecycle.Read) latest_attempt?: JobAttempt; + @doc("Input dataset lineage recorded for the job. This field is omitted unless requested with include=input_datasets.") + @visibility(Lifecycle.Read) + input_datasets?: Record[]; + + @doc("Output dataset lineage recorded for the job. This field is omitted unless requested with include=output_datasets.") + @visibility(Lifecycle.Read) + output_datasets?: Record[]; + + @doc("Backend execution definition used to run the job. This field is omitted unless requested with include=execution_definition.") + @visibility(Lifecycle.Read) + execution_definition?: Record; + + @doc("Backend-resolved job specification. This field is omitted unless requested with include=resolved_specification.") + @visibility(Lifecycle.Read) + resolved_specification?: Record; + + @doc("Parameters recorded for the job. This field is omitted unless requested with include=parameters.") + @visibility(Lifecycle.Read) + parameters?: Record; + + @doc("Settings recorded for the job. This field is omitted unless requested with include=settings.") + @visibility(Lifecycle.Read) + settings?: Record; + + @doc("Service endpoints for the current job run. This field is omitted unless requested with include=services.") + @visibility(Lifecycle.Read) + services?: Record; + + @doc("Log file URI metadata for the job. This field is omitted unless requested with include=log_files.") + @visibility(Lifecycle.Read) + log_files?: Record; + + @doc("Job cost summary. This field is omitted unless requested with include=job_cost.") + @visibility(Lifecycle.Read) + job_cost?: Record; + + @doc("Compute request recorded for the job. This field is omitted unless requested with include=compute_request.") + @visibility(Lifecycle.Read) + compute_request?: Record; + + @doc("Compute record for the job. This field is omitted unless requested with include=compute.") + @visibility(Lifecycle.Read) + compute?: Record; + @doc("Metadata pertaining to creation and last modification of the resource.") @visibility(Lifecycle.Read) system_data?: SystemData; diff --git a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp index 2be645adc293..d1aee830e30b 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp @@ -35,12 +35,45 @@ union TrainingJobInclude { @doc("Inline the latest execution attempt. The same data is available from /training_jobs/{job_name}/attempts/latest.") latest_attempt: "latest_attempt", + + @doc("Inline input dataset lineage recorded for the training job.") + input_datasets: "input_datasets", + + @doc("Inline output dataset lineage recorded for the training job.") + output_datasets: "output_datasets", + + @doc("Inline the backend execution definition used to run the training job.") + execution_definition: "execution_definition", + + @doc("Inline the backend-resolved job specification.") + resolved_specification: "resolved_specification", + + @doc("Inline parameters recorded for the training job.") + parameters: "parameters", + + @doc("Inline settings recorded for the training job.") + settings: "settings", + + @doc("Inline service endpoints for the current training job run.") + services: "services", + + @doc("Inline log file URI metadata for the training job.") + log_files: "log_files", + + @doc("Inline the job cost summary.") + job_cost: "job_cost", + + @doc("Inline the compute request recorded for the training job.") + compute_request: "compute_request", + + @doc("Inline the compute record for the training job.") + compute: "compute", } alias TrainingJobGetQueryParams = { ...TrainingJobsPreviewHeader; - @doc("Additional related data to include in the response. Use latest_attempt to inline the latest execution attempt.") + @doc("Additional related data to include in the response. Values are comma-separated expansion names such as latest_attempt, input_datasets, output_datasets, execution_definition, services, log_files, and job_cost.") @query include?: TrainingJobInclude; }; @@ -77,7 +110,7 @@ interface TrainingJobs { @path job_name: string; - @doc("Additional related data to include in the response. Use latest_attempt to inline the latest execution attempt.") + @doc("Additional related data to include in the response. Values are comma-separated expansion names such as latest_attempt, input_datasets, output_datasets, execution_definition, services, log_files, and job_cost.") @query include?: TrainingJobInclude; }, From 572487af8badcc7d9844b4f3bca482b62b9a5c96 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Fri, 8 May 2026 07:01:27 -0700 Subject: [PATCH 36/37] Align training job preview routes with execution metadata --- .../Foundry/src/training_jobs/models.tsp | 37 +++++- .../Foundry/src/training_jobs/routes.tsp | 120 +++++++++++++++--- 2 files changed, 136 insertions(+), 21 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp index 97a0b0220b68..89bd3e7c21dc 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/models.tsp @@ -1037,6 +1037,26 @@ model Job { ...CommandJob; + @doc("Run-centric metadata projected onto the training job. This field is omitted unless requested with include=run_metadata. The payload mirrors the backing run metadata and includes execution-view inputs and outputs keyed by name.") + @visibility(Lifecycle.Read) + run_metadata?: Record; + + @doc("Run creation time projected onto the training job.") + @visibility(Lifecycle.Read) + created_at?: FoundryTimestamp; + + @doc("Run start time projected onto the training job.") + @visibility(Lifecycle.Read) + started_at?: FoundryTimestamp; + + @doc("Run end time projected onto the training job.") + @visibility(Lifecycle.Read) + ended_at?: FoundryTimestamp; + + @doc("Run last-modified time projected onto the training job.") + @visibility(Lifecycle.Read) + updated_at?: FoundryTimestamp; + @doc("The latest execution attempt for the job. This field is omitted unless requested with include=latest_attempt. The same attempt resource is available from /training_jobs/{job_name}/attempts/latest.") @visibility(Lifecycle.Read) latest_attempt?: JobAttempt; @@ -1065,7 +1085,7 @@ model Job { @visibility(Lifecycle.Read) settings?: Record; - @doc("Service endpoints for the current job run. This field is omitted unless requested with include=services.") + @doc("Service endpoints for the selected node. This field is omitted unless requested with include=/nodes/{node_id}/services.") @visibility(Lifecycle.Read) services?: Record; @@ -1708,6 +1728,21 @@ model JobMetricSample { points: JobMetricPoint[]; } +@doc("Named execution-view asset recorded for a job or attempt.") +model JobExecutionAssetReference { + @doc("Input or output name.") + @visibility(Lifecycle.Read) + name: string; + + @doc("Execution-view asset type as recorded by the backing run.") + @visibility(Lifecycle.Read) + type?: string; + + @doc("Execution-view asset identifier.") + @visibility(Lifecycle.Read) + asset_id?: string; +} + @doc("Named output produced by a job.") model JobOutputReference { @doc("Output name.") diff --git a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp index d1aee830e30b..695080e090c8 100644 --- a/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp +++ b/specification/ai-foundry/data-plane/Foundry/src/training_jobs/routes.tsp @@ -33,6 +33,9 @@ alias JobsFilterQueryParams = { union TrainingJobInclude { string, + @doc("Inline run-centric metadata recorded for the backing run, including execution-view inputs and outputs.") + run_metadata: "run_metadata", + @doc("Inline the latest execution attempt. The same data is available from /training_jobs/{job_name}/attempts/latest.") latest_attempt: "latest_attempt", @@ -54,9 +57,6 @@ union TrainingJobInclude { @doc("Inline settings recorded for the training job.") settings: "settings", - @doc("Inline service endpoints for the current training job run.") - services: "services", - @doc("Inline log file URI metadata for the training job.") log_files: "log_files", @@ -73,7 +73,7 @@ union TrainingJobInclude { alias TrainingJobGetQueryParams = { ...TrainingJobsPreviewHeader; - @doc("Additional related data to include in the response. Values are comma-separated expansion names such as latest_attempt, input_datasets, output_datasets, execution_definition, services, log_files, and job_cost.") + @doc("Additional related data to include in the response. Values are comma-separated expansion names such as run_metadata, latest_attempt, input_datasets, output_datasets, execution_definition, /nodes/{node_id}/services, log_files, and job_cost.") @query include?: TrainingJobInclude; }; @@ -110,7 +110,7 @@ interface TrainingJobs { @path job_name: string; - @doc("Additional related data to include in the response. Values are comma-separated expansion names such as latest_attempt, input_datasets, output_datasets, execution_definition, services, log_files, and job_cost.") + @doc("Additional related data to include in the response. Values are comma-separated expansion names such as run_metadata, latest_attempt, input_datasets, output_datasets, execution_definition, /nodes/{node_id}/services, log_files, and job_cost.") @query include?: TrainingJobInclude; }, @@ -118,9 +118,9 @@ interface TrainingJobs { >; #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job services are projected from run history service instances." - @doc("List service endpoints for the current view of a training job.") + @doc("List service endpoints for a selected node of a training job.") @get - @route("/training_jobs/{job_name}/services") + @route("/training_jobs/{job_name}/nodes/{node_id}/services") showServices is FoundryDataPlaneRequiredPreviewOperation< FoundryFeaturesOptInKeys.training_jobs_v1_preview, { @@ -128,7 +128,9 @@ interface TrainingJobs { @path job_name: string; - ...JobServicesQueryParameters; + @doc("The node identifier.") + @path + node_id: int32; }, TrainingJobServiceCollection >; @@ -499,10 +501,88 @@ interface TrainingJobAttemptMetrics { >; } +@tag("TrainingJobs") +interface TrainingJobInputs { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job inputs are projected from the backing run's execution-view input documents." + @doc("List execution-view inputs recorded for a training job.") + @get + @route("/training_jobs/{job_name}/inputs") + listInputs is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + }, + TrainingJobPagedResult + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job inputs are projected from the backing run's execution-view input documents." + @doc("Get one execution-view input recorded for a training job.") + @get + @route("/training_jobs/{job_name}/inputs/{input_name}") + getInput is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The input name.") + @path + input_name: string; + }, + JobExecutionAssetReference + >; +} + +@tag("TrainingJobs") +interface TrainingJobAttemptInputs { + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt inputs are projected from execution-view input documents." + @doc("List execution-view inputs recorded for a specific training job attempt.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}/inputs") + listAttemptInputs is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier, or 'latest' for the latest attempt.") + @path + attempt_id: JobAttemptIdentifier; + }, + TrainingJobPagedResult + >; + + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt inputs are projected from execution-view input documents." + @doc("Get one execution-view input recorded for a specific training job attempt.") + @get + @route("/training_jobs/{job_name}/attempts/{attempt_id}/inputs/{input_name}") + getAttemptInput is FoundryDataPlaneRequiredPreviewOperation< + FoundryFeaturesOptInKeys.training_jobs_v1_preview, + { + @doc("The training job name.") + @path + job_name: string; + + @doc("The attempt identifier, or 'latest' for the latest attempt.") + @path + attempt_id: JobAttemptIdentifier; + + @doc("The input name.") + @path + input_name: string; + }, + JobExecutionAssetReference + >; +} + @tag("TrainingJobs") interface TrainingJobOutputs { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job outputs are projected from job outputs and asset relationships." - @doc("List outputs produced by a training job.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job outputs are projected from the backing run's execution-view output documents." + @doc("List execution-view outputs recorded for a training job.") @get @route("/training_jobs/{job_name}/outputs") listOutputs is FoundryDataPlaneRequiredPreviewOperation< @@ -512,11 +592,11 @@ interface TrainingJobOutputs { @path job_name: string; }, - TrainingJobPagedResult + TrainingJobPagedResult >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job outputs are projected from job outputs and asset relationships." - @doc("Get one output produced by a training job.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Job outputs are projected from the backing run's execution-view output documents." + @doc("Get one execution-view output recorded for a training job.") @get @route("/training_jobs/{job_name}/outputs/{output_name}") getOutput is FoundryDataPlaneRequiredPreviewOperation< @@ -530,14 +610,14 @@ interface TrainingJobOutputs { @path output_name: string; }, - JobOutputReference + JobExecutionAssetReference >; } @tag("TrainingJobs") interface TrainingJobAttemptOutputs { - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt outputs are projected from attempt output state and asset relationships." - @doc("List outputs produced by a specific training job attempt.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt outputs are projected from execution-view output documents." + @doc("List execution-view outputs recorded for a specific training job attempt.") @get @route("/training_jobs/{job_name}/attempts/{attempt_id}/outputs") listAttemptOutputs is FoundryDataPlaneRequiredPreviewOperation< @@ -551,11 +631,11 @@ interface TrainingJobAttemptOutputs { @path attempt_id: JobAttemptIdentifier; }, - TrainingJobPagedResult + TrainingJobPagedResult >; - #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt outputs are projected from attempt output state and asset relationships." - @doc("Get one output produced by a specific training job attempt.") + #suppress "@azure-tools/typespec-azure-core/use-standard-operations" "Attempt outputs are projected from execution-view output documents." + @doc("Get one execution-view output recorded for a specific training job attempt.") @get @route("/training_jobs/{job_name}/attempts/{attempt_id}/outputs/{output_name}") getAttemptOutput is FoundryDataPlaneRequiredPreviewOperation< @@ -573,6 +653,6 @@ interface TrainingJobAttemptOutputs { @path output_name: string; }, - JobOutputReference + JobExecutionAssetReference >; } From 47290a47242211969b19597a0f195e33a22723b5 Mon Sep 17 00:00:00 2001 From: Neil Lydick Date: Fri, 8 May 2026 17:16:18 -0700 Subject: [PATCH 37/37] chore(foundry): regenerate training job openapi Regenerate the Foundry OpenAPI artifacts from the updated training job TypeSpec so PR 42790's source and emitted specs stay aligned. Authored-by: GitHub Copilot for VS Code 0.45.1 Model: GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../v1/microsoft-foundry-openapi3.json | 522 +++++++++++++++--- .../microsoft-foundry-openapi3.json | 522 +++++++++++++++--- 2 files changed, 884 insertions(+), 160 deletions(-) diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json index 01148bddc849..c632a04539be 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/v1/microsoft-foundry-openapi3.json @@ -12106,7 +12106,7 @@ "name": "include", "in": "query", "required": false, - "description": "Additional related data to include in the response. Values are comma-separated expansion names such as latest_attempt, input_datasets, output_datasets, execution_definition, services, log_files, and job_cost.", + "description": "Additional related data to include in the response. Values are comma-separated expansion names such as run_metadata, latest_attempt, input_datasets, output_datasets, execution_definition, /nodes/{node_id}/services, log_files, and job_cost.", "schema": { "$ref": "#/components/schemas/TrainingJobInclude" }, @@ -12920,6 +12920,192 @@ ] } }, + "/training_jobs/{job_name}/attempts/{attempt_id}/inputs": { + "get": { + "operationId": "TrainingJobAttemptInputs_listAttemptInputs", + "description": "List execution-view inputs recorded for a specific training job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] + } + }, + { + "name": "job_name", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobExecutionAssetReference" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true + } + }, + "description": "The response data for a requested list of training job items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{job_name}/attempts/{attempt_id}/inputs/{input_name}": { + "get": { + "operationId": "TrainingJobAttemptInputs_getAttemptInput", + "description": "Get one execution-view input recorded for a specific training job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] + } + }, + { + "name": "job_name", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, + { + "name": "input_name", + "in": "path", + "required": true, + "description": "The input name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobExecutionAssetReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, "/training_jobs/{job_name}/attempts/{attempt_id}/metrics": { "get": { "operationId": "TrainingJobAttemptMetrics_listAttemptMetrics", @@ -13755,7 +13941,7 @@ "/training_jobs/{job_name}/attempts/{attempt_id}/outputs": { "get": { "operationId": "TrainingJobAttemptOutputs_listAttemptOutputs", - "description": "List outputs produced by a specific training job attempt.", + "description": "List execution-view outputs recorded for a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -13813,7 +13999,7 @@ "data": { "type": "array", "items": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/JobExecutionAssetReference" }, "description": "The requested list of items." }, @@ -13859,7 +14045,7 @@ "/training_jobs/{job_name}/attempts/{attempt_id}/outputs/{output_name}": { "get": { "operationId": "TrainingJobAttemptOutputs_getAttemptOutput", - "description": "Get one output produced by a specific training job attempt.", + "description": "Get one execution-view output recorded for a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -13917,7 +14103,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/JobExecutionAssetReference" } } } @@ -13938,10 +14124,10 @@ ] } }, - "/training_jobs/{job_name}/outputs": { + "/training_jobs/{job_name}/inputs": { "get": { - "operationId": "TrainingJobOutputs_listOutputs", - "description": "List outputs produced by a training job.", + "operationId": "TrainingJobInputs_listInputs", + "description": "List execution-view inputs recorded for a training job.", "parameters": [ { "name": "Foundry-Features", @@ -13990,7 +14176,7 @@ "data": { "type": "array", "items": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/JobExecutionAssetReference" }, "description": "The requested list of items." }, @@ -14033,10 +14219,10 @@ ] } }, - "/training_jobs/{job_name}/outputs/{output_name}": { + "/training_jobs/{job_name}/inputs/{input_name}": { "get": { - "operationId": "TrainingJobOutputs_getOutput", - "description": "Get one output produced by a training job.", + "operationId": "TrainingJobInputs_getInput", + "description": "Get one execution-view input recorded for a training job.", "parameters": [ { "name": "Foundry-Features", @@ -14060,10 +14246,10 @@ } }, { - "name": "output_name", + "name": "input_name", "in": "path", "required": true, - "description": "The output name.", + "description": "The input name.", "schema": { "type": "string" } @@ -14085,7 +14271,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/JobExecutionAssetReference" } } } @@ -14106,10 +14292,10 @@ ] } }, - "/training_jobs/{job_name}/services": { + "/training_jobs/{job_name}/nodes/{node_id}/services": { "get": { "operationId": "TrainingJobs_showServices", - "description": "List service endpoints for the current view of a training job.", + "description": "List service endpoints for a selected node of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -14134,14 +14320,181 @@ }, { "name": "node_id", - "in": "query", - "required": false, - "description": "Node identifier whose service endpoints should be returned. If omitted, leader-node services are returned.", + "in": "path", + "required": true, + "description": "The node identifier.", "schema": { "type": "integer", "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrainingJobServiceCollection" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{job_name}/outputs": { + "get": { + "operationId": "TrainingJobOutputs_listOutputs", + "description": "List execution-view outputs recorded for a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] + } + }, + { + "name": "job_name", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" }, "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobExecutionAssetReference" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true + } + }, + "description": "The response data for a requested list of training job items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{job_name}/outputs/{output_name}": { + "get": { + "operationId": "TrainingJobOutputs_getOutput", + "description": "Get one execution-view output recorded for a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] + } + }, + { + "name": "job_name", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "output_name", + "in": "path", + "required": true, + "description": "The output name.", + "schema": { + "type": "string" + } }, { "name": "api-version", @@ -14160,7 +14513,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrainingJobServiceCollection" + "$ref": "#/components/schemas/JobExecutionAssetReference" } } } @@ -20976,6 +21329,48 @@ "description": "Status of the job.", "readOnly": true }, + "run_metadata": { + "type": "object", + "additionalProperties": {}, + "description": "Run-centric metadata projected onto the training job. This field is omitted unless requested with include=run_metadata. The payload mirrors the backing run metadata and includes execution-view inputs and outputs keyed by name.", + "readOnly": true + }, + "created_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], + "description": "Run creation time projected onto the training job.", + "readOnly": true + }, + "started_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], + "description": "Run start time projected onto the training job.", + "readOnly": true + }, + "ended_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], + "description": "Run end time projected onto the training job.", + "readOnly": true + }, + "updated_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], + "description": "Run last-modified time projected onto the training job.", + "readOnly": true + }, "latest_attempt": { "allOf": [ { @@ -21034,7 +21429,7 @@ "additionalProperties": { "$ref": "#/components/schemas/TrainingJobService" }, - "description": "Service endpoints for the current job run. This field is omitted unless requested with include=services.", + "description": "Service endpoints for the selected node. This field is omitted unless requested with include=/nodes/{node_id}/services.", "readOnly": true }, "log_files": { @@ -21628,6 +22023,30 @@ }, "description": "Request body for creating a training job." }, + "JobExecutionAssetReference": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Input or output name.", + "readOnly": true + }, + "type": { + "type": "string", + "description": "Execution-view asset type as recorded by the backing run.", + "readOnly": true + }, + "asset_id": { + "type": "string", + "description": "Execution-view asset identifier.", + "readOnly": true + } + }, + "description": "Named execution-view asset recorded for a job or attempt." + }, "JobMetric": { "type": "object", "required": [ @@ -22030,63 +22449,6 @@ ], "description": "Status of an asynchronous training job operation." }, - "JobOutputReference": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Output name.", - "readOnly": true - }, - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/AssetTypes" - } - ], - "description": "Output asset type.", - "readOnly": true - }, - "mode": { - "allOf": [ - { - "$ref": "#/components/schemas/InputOutputModes" - } - ], - "description": "Output delivery mode.", - "readOnly": true - }, - "uri": { - "type": "string", - "description": "Output storage URI.", - "readOnly": true - }, - "asset_name": { - "type": "string", - "description": "Registered asset name, if the output produced an asset.", - "readOnly": true - }, - "asset_version": { - "type": "string", - "description": "Registered asset version, if the output produced an asset.", - "readOnly": true - }, - "base_model_id": { - "type": "string", - "description": "Base model ID for model outputs.", - "readOnly": true - }, - "description": { - "type": "string", - "description": "Output description.", - "readOnly": true - } - }, - "description": "Named output produced by a job." - }, "JobResourceConfiguration": { "type": "object", "properties": { @@ -47074,6 +47436,7 @@ { "type": "string", "enum": [ + "run_metadata", "latest_attempt", "input_datasets", "output_datasets", @@ -47081,7 +47444,6 @@ "resolved_specification", "parameters", "settings", - "services", "log_files", "job_cost", "compute_request", diff --git a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json index 5191ef0fe4aa..ca7b1a218242 100644 --- a/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json +++ b/specification/ai-foundry/data-plane/Foundry/openapi3/virtual-public-preview/microsoft-foundry-openapi3.json @@ -14824,7 +14824,7 @@ "name": "include", "in": "query", "required": false, - "description": "Additional related data to include in the response. Values are comma-separated expansion names such as latest_attempt, input_datasets, output_datasets, execution_definition, services, log_files, and job_cost.", + "description": "Additional related data to include in the response. Values are comma-separated expansion names such as run_metadata, latest_attempt, input_datasets, output_datasets, execution_definition, /nodes/{node_id}/services, log_files, and job_cost.", "schema": { "$ref": "#/components/schemas/TrainingJobInclude" }, @@ -15638,6 +15638,192 @@ ] } }, + "/training_jobs/{job_name}/attempts/{attempt_id}/inputs": { + "get": { + "operationId": "TrainingJobAttemptInputs_listAttemptInputs", + "description": "List execution-view inputs recorded for a specific training job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] + } + }, + { + "name": "job_name", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobExecutionAssetReference" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true + } + }, + "description": "The response data for a requested list of training job items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{job_name}/attempts/{attempt_id}/inputs/{input_name}": { + "get": { + "operationId": "TrainingJobAttemptInputs_getAttemptInput", + "description": "Get one execution-view input recorded for a specific training job attempt.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] + } + }, + { + "name": "job_name", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "attempt_id", + "in": "path", + "required": true, + "description": "The attempt identifier, or 'latest' for the latest attempt.", + "schema": { + "$ref": "#/components/schemas/JobAttemptIdentifier" + } + }, + { + "name": "input_name", + "in": "path", + "required": true, + "description": "The input name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/JobExecutionAssetReference" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, "/training_jobs/{job_name}/attempts/{attempt_id}/metrics": { "get": { "operationId": "TrainingJobAttemptMetrics_listAttemptMetrics", @@ -16473,7 +16659,7 @@ "/training_jobs/{job_name}/attempts/{attempt_id}/outputs": { "get": { "operationId": "TrainingJobAttemptOutputs_listAttemptOutputs", - "description": "List outputs produced by a specific training job attempt.", + "description": "List execution-view outputs recorded for a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16531,7 +16717,7 @@ "data": { "type": "array", "items": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/JobExecutionAssetReference" }, "description": "The requested list of items." }, @@ -16577,7 +16763,7 @@ "/training_jobs/{job_name}/attempts/{attempt_id}/outputs/{output_name}": { "get": { "operationId": "TrainingJobAttemptOutputs_getAttemptOutput", - "description": "Get one output produced by a specific training job attempt.", + "description": "Get one execution-view output recorded for a specific training job attempt.", "parameters": [ { "name": "Foundry-Features", @@ -16635,7 +16821,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/JobExecutionAssetReference" } } } @@ -16656,10 +16842,10 @@ ] } }, - "/training_jobs/{job_name}/outputs": { + "/training_jobs/{job_name}/inputs": { "get": { - "operationId": "TrainingJobOutputs_listOutputs", - "description": "List outputs produced by a training job.", + "operationId": "TrainingJobInputs_listInputs", + "description": "List execution-view inputs recorded for a training job.", "parameters": [ { "name": "Foundry-Features", @@ -16708,7 +16894,7 @@ "data": { "type": "array", "items": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/JobExecutionAssetReference" }, "description": "The requested list of items." }, @@ -16751,10 +16937,10 @@ ] } }, - "/training_jobs/{job_name}/outputs/{output_name}": { + "/training_jobs/{job_name}/inputs/{input_name}": { "get": { - "operationId": "TrainingJobOutputs_getOutput", - "description": "Get one output produced by a training job.", + "operationId": "TrainingJobInputs_getInput", + "description": "Get one execution-view input recorded for a training job.", "parameters": [ { "name": "Foundry-Features", @@ -16778,10 +16964,10 @@ } }, { - "name": "output_name", + "name": "input_name", "in": "path", "required": true, - "description": "The output name.", + "description": "The input name.", "schema": { "type": "string" } @@ -16803,7 +16989,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JobOutputReference" + "$ref": "#/components/schemas/JobExecutionAssetReference" } } } @@ -16824,10 +17010,10 @@ ] } }, - "/training_jobs/{job_name}/services": { + "/training_jobs/{job_name}/nodes/{node_id}/services": { "get": { "operationId": "TrainingJobs_showServices", - "description": "List service endpoints for the current view of a training job.", + "description": "List service endpoints for a selected node of a training job.", "parameters": [ { "name": "Foundry-Features", @@ -16852,14 +17038,181 @@ }, { "name": "node_id", - "in": "query", - "required": false, - "description": "Node identifier whose service endpoints should be returned. If omitted, leader-node services are returned.", + "in": "path", + "required": true, + "description": "The node identifier.", "schema": { "type": "integer", "format": "int32" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" + }, + "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TrainingJobServiceCollection" + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{job_name}/outputs": { + "get": { + "operationId": "TrainingJobOutputs_listOutputs", + "description": "List execution-view outputs recorded for a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] + } + }, + { + "name": "job_name", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "api-version", + "in": "query", + "required": true, + "description": "The API version to use for this operation.", + "schema": { + "type": "string" }, "explode": false + } + ], + "responses": { + "200": { + "description": "The request has succeeded.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "data", + "has_more" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/JobExecutionAssetReference" + }, + "description": "The requested list of items." + }, + "first_id": { + "type": "string", + "description": "The first ID represented in this list." + }, + "last_id": { + "type": "string", + "description": "The last ID represented in this list." + }, + "has_more": { + "type": "boolean", + "description": "A value indicating whether there are additional values available not captured in this list." + }, + "next_after": { + "type": "string", + "description": "Opaque cursor to pass as the next request's after value when has_more is true.", + "readOnly": true + } + }, + "description": "The response data for a requested list of training job items." + } + } + } + }, + "default": { + "description": "An unexpected error response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiErrorResponse" + } + } + } + } + }, + "tags": [ + "TrainingJobs" + ] + } + }, + "/training_jobs/{job_name}/outputs/{output_name}": { + "get": { + "operationId": "TrainingJobOutputs_getOutput", + "description": "Get one execution-view output recorded for a training job.", + "parameters": [ + { + "name": "Foundry-Features", + "in": "header", + "required": true, + "description": "A feature flag opt-in required when using preview operations or modifying persisted preview resources.", + "schema": { + "type": "string", + "enum": [ + "TrainingJobs=V1Preview" + ] + } + }, + { + "name": "job_name", + "in": "path", + "required": true, + "description": "The training job name.", + "schema": { + "type": "string" + } + }, + { + "name": "output_name", + "in": "path", + "required": true, + "description": "The output name.", + "schema": { + "type": "string" + } }, { "name": "api-version", @@ -16878,7 +17231,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TrainingJobServiceCollection" + "$ref": "#/components/schemas/JobExecutionAssetReference" } } } @@ -25400,6 +25753,48 @@ "description": "Status of the job.", "readOnly": true }, + "run_metadata": { + "type": "object", + "additionalProperties": {}, + "description": "Run-centric metadata projected onto the training job. This field is omitted unless requested with include=run_metadata. The payload mirrors the backing run metadata and includes execution-view inputs and outputs keyed by name.", + "readOnly": true + }, + "created_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], + "description": "Run creation time projected onto the training job.", + "readOnly": true + }, + "started_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], + "description": "Run start time projected onto the training job.", + "readOnly": true + }, + "ended_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], + "description": "Run end time projected onto the training job.", + "readOnly": true + }, + "updated_at": { + "allOf": [ + { + "$ref": "#/components/schemas/FoundryTimestamp" + } + ], + "description": "Run last-modified time projected onto the training job.", + "readOnly": true + }, "latest_attempt": { "allOf": [ { @@ -25458,7 +25853,7 @@ "additionalProperties": { "$ref": "#/components/schemas/TrainingJobService" }, - "description": "Service endpoints for the current job run. This field is omitted unless requested with include=services.", + "description": "Service endpoints for the selected node. This field is omitted unless requested with include=/nodes/{node_id}/services.", "readOnly": true }, "log_files": { @@ -26052,6 +26447,30 @@ }, "description": "Request body for creating a training job." }, + "JobExecutionAssetReference": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Input or output name.", + "readOnly": true + }, + "type": { + "type": "string", + "description": "Execution-view asset type as recorded by the backing run.", + "readOnly": true + }, + "asset_id": { + "type": "string", + "description": "Execution-view asset identifier.", + "readOnly": true + } + }, + "description": "Named execution-view asset recorded for a job or attempt." + }, "JobMetric": { "type": "object", "required": [ @@ -26454,63 +26873,6 @@ ], "description": "Status of an asynchronous training job operation." }, - "JobOutputReference": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Output name.", - "readOnly": true - }, - "type": { - "allOf": [ - { - "$ref": "#/components/schemas/AssetTypes" - } - ], - "description": "Output asset type.", - "readOnly": true - }, - "mode": { - "allOf": [ - { - "$ref": "#/components/schemas/InputOutputModes" - } - ], - "description": "Output delivery mode.", - "readOnly": true - }, - "uri": { - "type": "string", - "description": "Output storage URI.", - "readOnly": true - }, - "asset_name": { - "type": "string", - "description": "Registered asset name, if the output produced an asset.", - "readOnly": true - }, - "asset_version": { - "type": "string", - "description": "Registered asset version, if the output produced an asset.", - "readOnly": true - }, - "base_model_id": { - "type": "string", - "description": "Base model ID for model outputs.", - "readOnly": true - }, - "description": { - "type": "string", - "description": "Output description.", - "readOnly": true - } - }, - "description": "Named output produced by a job." - }, "JobResourceConfiguration": { "type": "object", "properties": { @@ -52063,6 +52425,7 @@ { "type": "string", "enum": [ + "run_metadata", "latest_attempt", "input_datasets", "output_datasets", @@ -52070,7 +52433,6 @@ "resolved_specification", "parameters", "settings", - "services", "log_files", "job_cost", "compute_request",