Repository: Azure/azure-rest-api-specs
Pull request #34134: Update servicepatterns.tsp PUT->Patch
Author: login: kseager
Labels: name: data-plane
name: TypeSpec
description: Authored with TypeSpec
Created: 2025-04-22T18:16:33Z | Merged: 2025-04-22T23:38:29Z

# Data Plane API Specification Update Pull Request

> [!TIP]
> Overwhelmed by all this guidance? See the `Getting help` section at the bottom of this PR description.


<!-- 🚨🚨🚨 Replace this line with a summary and reason for these changes to your data plane API 🚨🚨🚨 -->

## PR review workflow diagram

Please understand this diagram before proceeding. It explains how to get your PR approved & merged.

![spec_pr_review_workflow_diagram](https://github.com/Azure/azure-rest-api-specs/assets/4429827/5bb5e7ce-8aff-4dbb-a3f8-0d9b68fef5b1)

## API Info: The Basics

Most of the information about your service should be captured in the issue that serves as your [*API Spec engagement record*](https://aka.ms/azsdk/onboarding/restapischedule).

* Link to API Spec engagement record issue:

Is this review for (select one):

- [ ] a private preview
- [ ] a public preview
- [ ] GA release

### Change Scope

<sup>This section will help us focus on the specific parts of your API that are new or have been modified. <br/>Please share a link to the design document for the new APIs, a link to the previous API Spec document (if applicable), and the root paths that have been updated. </sup>
* Design Document:
* Previous API Spec Doc:
* Updated paths:

### Viewing API changes

For convenient view of the API changes made by this PR, refer to the URLs provided in the table 
in the `Generated ApiView` comment added to this PR. You can use ApiView to show API versions diff. 

### Suppressing failures

If one or multiple validation error/warning suppression(s) is detected in your PR, please follow the 
[Swagger-Suppression-Process](https://aka.ms/pr-suppressions) 
to get approval.

## ❔Got questions? Need additional info?? We are here to help!

<details>
  <summary> Contact us!</summary>

The [Azure API Review Board](https://aka.ms/azsdk/onboarding/restapischedule) is dedicated to helping you create amazing APIs. You can read about our mission and learn more about our process on our [wiki](https://aka.ms/azsdk/onboarding/restapischedule).
* 💬 [Teams Channel](https://teams.microsoft.com/l/channel/19%3a3ebb18fded0e47938f998e196a52952f%40thread.tacv2/General?groupId=1a10b50c-e870-4fe0-8483-bf5542a8d2d8&tenantId=72f988bf-86f1-41af-91ab-2d7cd011db47)
* 💌 [email](mailto://azureapirbcore@microsoft.com)

</details>

<details>
  <summary>Click here for links to tools, specs, guidelines & other good stuff</summary>

### Tooling

 * [Open API validation tools](https://aka.ms/swaggertools) were run on this PR. Go here to see [how to fix errors](https://aka.ms/ci-fix)
 * [Spectral Linting](https://github.com/Azure/azure-api-style-guide/blob/main/README.md)

### Guidelines & Specifications

 * [Azure REST API Guidelines](https://aka.ms/azapi/guidelines)
 * [OpenAPI Style Guidelines](https://aka.ms/azapi/style)
 * [Azure Breaking Change Policy](https://aka.ms/AzBreakingChangesPolicy)

### Helpful Links

 * [Schedule a data plane REST API spec review](https://aka.ms/azsdk/onboarding/restapischedule)

</details>

## Getting help

- First, please carefully read through this PR description, from top to bottom.
- If you don't have permissions to remove or add labels to the PR, request `write access` per [aka.ms/azsdk/access#request-access-to-rest-api-or-sdk-repositories](https://aka.ms/azsdk/access#request-access-to-rest-api-or-sdk-repositories) 
- To understand what you must do next to merge this PR, see the `Next Steps to Merge` comment. It will appear within few minutes of submitting this PR and will continue to be up-to-date with current PR state.
- For guidance on fixing this PR CI check failures, see the hyperlinks provided in given failure 
  and https://aka.ms/ci-fix.
- If the PR CI checks appear to be stuck in `queued` state, please add a comment with contents `/azp run`.
  This should result in a new comment denoting a `PR validation pipeline` has started and the checks should be updated after few minutes.
- If the help provided by the previous points is not enough, post to https://aka.ms/azsdk/support/specreview-channel and link to this PR.



Diff:
diff --git a/specification/ai/Azure.AI.Projects/evaluations/routes.tsp b/specification/ai/Azure.AI.Projects/evaluations/routes.tsp
index 58a560b87482..074e1172c42c 100644
--- a/specification/ai/Azure.AI.Projects/evaluations/routes.tsp
+++ b/specification/ai/Azure.AI.Projects/evaluations/routes.tsp
@@ -8,6 +8,7 @@ using TypeSpec.Http;
 using Azure.Core;
 using Azure.Core.Traits;
 using TypeSpec.Versioning;
+using Azure.Core.Foundations;
 
 namespace Azure.AI.Projects;
 
@@ -64,13 +65,12 @@ interface Evaluations {
   @added(Versions.v2025_05_15_preview)
   @removed(Versions.v_latest)
   op checkAnnotation(
-    @doc("Api Version.")
-    @query("api-version")
-    apiVersion: string
+    ...Azure.Core.Foundations.ApiVersionParameter;
   ): {
       @statusCode statusCode: 200;
       @doc("List of supported annotation.")
       @body supportedAnnotationList: string[];
+
   };
 
   #suppress "@azure-tools/typespec-azure-core/use-standard-operations"
@@ -81,9 +81,8 @@ interface Evaluations {
   @added(Versions.v2025_05_15_preview)
   @removed(Versions.v_latest)
   op submitAnnotation(
-    @doc("Api Version.")
-    @query("api-version")
-    apiVersion: string,
+    ...Azure.Core.Foundations.ApiVersionParameter;
+
     @doc("Annotation data inputList of supported annotation.")
     @body annotationDTO: AnnotationDTO
   ): {
@@ -100,12 +99,12 @@ interface Evaluations {
   @added(Versions.v2025_05_15_preview)
   @removed(Versions.v_latest)
   op operationResults(
-    @doc("Api Version.")
-    @query apiVersion: string,
+    ...Azure.Core.Foundations.ApiVersionParameter;
+
     @doc("Operation ID for the polling operation.")
     @path operationId: string,
   ): {
-    @statusCode statusCode: 202;
+    @statusCode statusCode: 200;
     @doc("The operation results.")
     @body operationResults: Record<unknown>
   };
diff --git a/specification/ai/Azure.AI.Projects/servicepatterns.tsp b/specification/ai/Azure.AI.Projects/servicepatterns.tsp
index 5ad032bfcd77..376184787b32 100644
--- a/specification/ai/Azure.AI.Projects/servicepatterns.tsp
+++ b/specification/ai/Azure.AI.Projects/servicepatterns.tsp
@@ -73,11 +73,11 @@ namespace Azure.AI.Projects.ServicePatterns {
     */
 
     @doc(
-      "Create a new or replace an existing {name} with the given version id",
+      "Create a new or update an existing {name} with the given version id",
       TEntityType
     )
-    @Http.put
-    createVersion is Azure.Core.Foundations.ResourceOperation<
+    @Http.patch
+    createOrUpdateVersion is Azure.Core.Foundations.ResourceOperation<
       TEntityType,
       {
         @doc(
@@ -88,7 +88,7 @@ namespace Azure.AI.Projects.ServicePatterns {
         @Http.path
         version: string;
 
-        @doc("The definition of the {name} to create", TEntityType)
+        @doc("The definition of the {name} to create or update", TEntityType)
         @Http.bodyRoot
         body: TEntityType;
       },
diff --git a/specification/ai/data-plane/Azure.AI.Projects/preview/2025-05-15-preview/azure-ai-projects-1dp.json b/specification/ai/data-plane/Azure.AI.Projects/preview/2025-05-15-preview/azure-ai-projects-1dp.json
index 08f2a77d263f..5f62a92a6a27 100644
--- a/specification/ai/data-plane/Azure.AI.Projects/preview/2025-05-15-preview/azure-ai-projects-1dp.json
+++ b/specification/ai/data-plane/Azure.AI.Projects/preview/2025-05-15-preview/azure-ai-projects-1dp.json
@@ -506,9 +506,9 @@
           }
         }
       },
-      "put": {
-        "operationId": "Datasets_CreateVersion",
-        "description": "Create a new or replace an existing DatasetVersion with the given version id",
+      "patch": {
+        "operationId": "Datasets_CreateOrUpdateVersion",
+        "description": "Create a new or update an existing DatasetVersion with the given version id",
         "parameters": [
           {
             "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter"
@@ -530,10 +530,10 @@
           {
             "name": "body",
             "in": "body",
-            "description": "The definition of the DatasetVersion to create",
+            "description": "The definition of the DatasetVersion to create or update",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/DatasetVersion"
+              "$ref": "#/definitions/DatasetVersionUpdate"
             }
           }
         ],
@@ -1057,9 +1057,9 @@
           }
         }
       },
-      "put": {
-        "operationId": "EvaluationResults_CreateVersion",
-        "description": "Create a new or replace an existing EvaluationResult with the given version id",
+      "patch": {
+        "operationId": "EvaluationResults_CreateOrUpdateVersion",
+        "description": "Create a new or update an existing EvaluationResult with the given version id",
         "parameters": [
           {
             "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter"
@@ -1081,10 +1081,10 @@
           {
             "name": "body",
             "in": "body",
-            "description": "The definition of the EvaluationResult to create",
+            "description": "The definition of the EvaluationResult to create or update",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/EvaluationResult"
+              "$ref": "#/definitions/EvaluationResultUpdate"
             }
           }
         ],
@@ -1270,12 +1270,7 @@
         "description": "Check annotation supported by the service.",
         "parameters": [
           {
-            "name": "api-version",
-            "in": "query",
-            "description": "Api Version.",
-            "required": true,
-            "type": "string",
-            "x-ms-client-name": "apiVersion"
+            "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter"
           }
         ],
         "responses": {
@@ -1297,11 +1292,7 @@
         "description": "Poll for the operation results.",
         "parameters": [
           {
-            "name": "apiVersion",
-            "in": "query",
-            "description": "Api Version.",
-            "required": true,
-            "type": "string"
+            "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter"
           },
           {
             "name": "operationId",
@@ -1312,8 +1303,8 @@
           }
         ],
         "responses": {
-          "202": {
-            "description": "The request has been accepted for processing, but processing has not yet completed.",
+          "200": {
+            "description": "The request has succeeded.",
             "schema": {
               "type": "object",
               "additionalProperties": {}
@@ -1573,12 +1564,7 @@
         ],
         "parameters": [
           {
-            "name": "api-version",
-            "in": "query",
-            "description": "Api Version.",
-            "required": true,
-            "type": "string",
-            "x-ms-client-name": "apiVersion"
+            "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter"
           },
           {
             "name": "annotationDTO",
@@ -1829,9 +1815,9 @@
           }
         }
       },
-      "put": {
-        "operationId": "Indexes_CreateVersion",
-        "description": "Create a new or replace an existing Index with the given version id",
+      "patch": {
+        "operationId": "Indexes_CreateOrUpdateVersion",
+        "description": "Create a new or update an existing Index with the given version id",
         "parameters": [
           {
             "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter"
@@ -1853,10 +1839,10 @@
           {
             "name": "body",
             "in": "body",
-            "description": "The definition of the Index to create",
+            "description": "The definition of the Index to create or update",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/Index"
+              "$ref": "#/definitions/IndexUpdate"
             }
           }
         ],
@@ -2787,6 +2773,26 @@
       ],
       "x-ms-discriminator-value": "AzureSearch"
     },
+    "AzureAISearchIndexUpdate": {
+      "type": "object",
+      "description": "Azure AI Search Index Definition",
+      "properties": {
+        "connectionName": {
+          "type": "string",
+          "description": "Name of connection to Azure AI Search"
+        },
+        "indexName": {
+          "type": "string",
+          "description": "Name of index in Azure AI Search resource to attach"
+        }
+      },
+      "allOf": [
+        {
+          "$ref": "#/definitions/IndexUpdate"
+        }
+      ],
+      "x-ms-discriminator-value": "AzureSearch"
+    },
     "BaseCredentials": {
       "type": "object",
       "description": "A base class for connection credentials",
@@ -3010,6 +3016,34 @@
       ],
       "x-ms-discriminator-value": "CosmosDBNoSqlVectorStore"
     },
+    "CosmosDBIndexUpdate": {
+      "type": "object",
+      "description": "CosmosDB Vector Store Index Definition",
+      "properties": {
+        "connectionName": {
+          "type": "string",
+          "description": "Name of connection to CosmosDB"
+        },
+        "databaseName": {
+          "type": "string",
+          "description": "Name of the CosmosDB Database"
+        },
+        "containerName": {
+          "type": "string",
+          "description": "Name of CosmosDB Container"
+        },
+        "embeddingConfiguration": {
+          "$ref": "#/definitions/EmbeddingConfigurationUpdate",
+          "description": "Embedding model configuration"
+        }
+      },
+      "allOf": [
+        {
+          "$ref": "#/definitions/IndexUpdate"
+        }
+      ],
+      "x-ms-discriminator-value": "CosmosDBNoSqlVectorStore"
+    },
     "CredentialType": {
       "type": "string",
       "description": "The credential type used by the connection",
@@ -3173,6 +3207,40 @@
         "version"
       ]
     },
+    "DatasetVersionUpdate": {
+      "type": "object",
+      "description": "DatasetVersion Definition",
+      "properties": {
+        "type": {
+          "$ref": "#/definitions/DatasetType",
+          "description": "Dataset type"
+        },
+        "stage": {
+          "type": "string",
+          "description": "Asset stage",
+          "x-ms-mutability": [
+            "read",
+            "update",
+            "create"
+          ]
+        },
+        "description": {
+          "type": "string",
+          "description": "The asset description text."
+        },
+        "tags": {
+          "type": "object",
+          "description": "Tag dictionary. Tags can be added, removed, and updated.",
+          "additionalProperties": {
+            "type": "string"
+          }
+        }
+      },
+      "discriminator": "type",
+      "required": [
+        "type"
+      ]
+    },
     "Deployment": {
       "type": "object",
       "description": "Model Deployment Definition",
@@ -3228,6 +3296,20 @@
         "embeddingField"
       ]
     },
+    "EmbeddingConfigurationUpdate": {
+      "type": "object",
+      "description": "Embedding configuration class",
+      "properties": {
+        "modelDeploymentName": {
+          "type": "string",
+          "description": "Deployment name of embedding model. It can point to a model deployment either in the parent AIServices or a connection."
+        },
+        "embeddingField": {
+          "type": "string",
+          "description": "Embedding field"
+        }
+      }
+    },
     "EntraIDCredentials": {
       "type": "object",
       "description": "Entra ID credential definition",
@@ -3367,6 +3449,40 @@
         "version"
       ]
     },
+    "EvaluationResultUpdate": {
+      "type": "object",
+      "description": "Evaluation Result resource Definition",
+      "properties": {
+        "ResultType": {
+          "$ref": "#/definitions/ResultType",
+          "description": "Type of Evaluation result"
+        },
+        "BlobUri": {
+          "type": "string",
+          "description": "Blob URI"
+        },
+        "stage": {
+          "type": "string",
+          "description": "Asset stage",
+          "x-ms-mutability": [
+            "read",
+            "update",
+            "create"
+          ]
+        },
+        "description": {
+          "type": "string",
+          "description": "The asset description text."
+        },
+        "tags": {
+          "type": "object",
+          "description": "Tag dictionary. Tags can be added, removed, and updated.",
+          "additionalProperties": {
+            "type": "string"
+          }
+        }
+      }
+    },
     "EvaluationTarget": {
       "type": "object",
       "description": "Target for the evaluation process.",
@@ -3577,6 +3693,22 @@
       ],
       "x-ms-discriminator-value": "uri_file"
     },
+    "FileDatasetVersionUpdate": {
+      "type": "object",
+      "description": "FileDatasetVersion Definition",
+      "properties": {
+        "openAIPurpose": {
+          "type": "string",
+          "description": "Indicates OpenAI Purpose. FileDatasets created with this field will be compatible with OpenAI-specific features"
+        }
+      },
+      "allOf": [
+        {
+          "$ref": "#/definitions/DatasetVersionUpdate"
+        }
+      ],
+      "x-ms-discriminator-value": "uri_file"
+    },
     "FolderDatasetVersion": {
       "type": "object",
       "description": "FileDatasetVersion Definition",
@@ -3587,6 +3719,16 @@
       ],
       "x-ms-discriminator-value": "uri_folder"
     },
+    "FolderDatasetVersionUpdate": {
+      "type": "object",
+      "description": "FileDatasetVersion Definition",
+      "allOf": [
+        {
+          "$ref": "#/definitions/DatasetVersionUpdate"
+        }
+      ],
+      "x-ms-discriminator-value": "uri_folder"
+    },
     "Index": {
       "type": "object",
       "description": "Index resource Definition",
@@ -3667,6 +3809,40 @@
         ]
       }
     },
+    "IndexUpdate": {
+      "type": "object",
+      "description": "Index resource Definition",
+      "properties": {
+        "type": {
+          "$ref": "#/definitions/IndexType",
+          "description": "Type of index"
+        },
+        "stage": {
+          "type": "string",
+          "description": "Asset stage",
+          "x-ms-mutability": [
+            "read",
+            "update",
+            "create"
+          ]
+        },
+        "description": {
+          "type": "string",
+          "description": "The asset description text."
+        },
+        "tags": {
+          "type": "object",
+          "description": "Tag dictionary. Tags can be added, removed, and updated.",
+          "additionalProperties": {
+            "type": "string"
+          }
+        }
+      },
+      "discriminator": "type",
+      "required": [
+        "type"
+      ]
+    },
     "InputData": {
       "type": "object",
       "description": "Abstract data class.",
@@ -3844,6 +4020,22 @@
       ],
       "x-ms-discriminator-value": "ManagedAzureSearch"
     },
+    "ManagedAzureAISearchIndexUpdate": {
+      "type": "object",
+      "description": "Managed Azure AI Search Index Definition",
+      "properties": {
+        "vectorStoreId": {
+          "type": "string",
+          "description": "Vector store id of managed index"
+        }
+      },
+      "allOf": [
+        {
+          "$ref": "#/definitions/IndexUpdate"
+        }
+      ],
+      "x-ms-discriminator-value": "ManagedAzureSearch"
+    },
     "Message": {
       "type": "object",
       "description": "Message",
diff --git a/specification/ai/data-plane/Azure.AI.Projects/stable/2025-05-01/azure-ai-projects-1dp.json b/specification/ai/data-plane/Azure.AI.Projects/stable/2025-05-01/azure-ai-projects-1dp.json
index 7c1b91502f14..6e10e59e1716 100644
--- a/specification/ai/data-plane/Azure.AI.Projects/stable/2025-05-01/azure-ai-projects-1dp.json
+++ b/specification/ai/data-plane/Azure.AI.Projects/stable/2025-05-01/azure-ai-projects-1dp.json
@@ -506,9 +506,9 @@
           }
         }
       },
-      "put": {
-        "operationId": "Datasets_CreateVersion",
-        "description": "Create a new or replace an existing DatasetVersion with the given version id",
+      "patch": {
+        "operationId": "Datasets_CreateOrUpdateVersion",
+        "description": "Create a new or update an existing DatasetVersion with the given version id",
         "parameters": [
           {
             "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter"
@@ -530,10 +530,10 @@
           {
             "name": "body",
             "in": "body",
-            "description": "The definition of the DatasetVersion to create",
+            "description": "The definition of the DatasetVersion to create or update",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/DatasetVersion"
+              "$ref": "#/definitions/DatasetVersionUpdate"
             }
           }
         ],
@@ -1057,9 +1057,9 @@
           }
         }
       },
-      "put": {
-        "operationId": "Indexes_CreateVersion",
-        "description": "Create a new or replace an existing Index with the given version id",
+      "patch": {
+        "operationId": "Indexes_CreateOrUpdateVersion",
+        "description": "Create a new or update an existing Index with the given version id",
         "parameters": [
           {
             "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter"
@@ -1081,10 +1081,10 @@
           {
             "name": "body",
             "in": "body",
-            "description": "The definition of the Index to create",
+            "description": "The definition of the Index to create or update",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/Index"
+              "$ref": "#/definitions/IndexUpdate"
             }
           }
         ],
@@ -1273,6 +1273,26 @@
       ],
       "x-ms-discriminator-value": "AzureSearch"
     },
+    "AzureAISearchIndexUpdate": {
+      "type": "object",
+      "description": "Azure AI Search Index Definition",
+      "properties": {
+        "connectionName": {
+          "type": "string",
+          "description": "Name of connection to Azure AI Search"
+        },
+        "indexName": {
+          "type": "string",
+          "description": "Name of index in Azure AI Search resource to attach"
+        }
+      },
+      "allOf": [
+        {
+          "$ref": "#/definitions/IndexUpdate"
+        }
+      ],
+      "x-ms-discriminator-value": "AzureSearch"
+    },
     "BaseCredentials": {
       "type": "object",
       "description": "A base class for connection credentials",
@@ -1464,6 +1484,34 @@
       ],
       "x-ms-discriminator-value": "CosmosDBNoSqlVectorStore"
     },
+    "CosmosDBIndexUpdate": {
+      "type": "object",
+      "description": "CosmosDB Vector Store Index Definition",
+      "properties": {
+        "connectionName": {
+          "type": "string",
+          "description": "Name of connection to CosmosDB"
+        },
+        "databaseName": {
+          "type": "string",
+          "description": "Name of the CosmosDB Database"
+        },
+        "containerName": {
+          "type": "string",
+          "description": "Name of CosmosDB Container"
+        },
+        "embeddingConfiguration": {
+          "$ref": "#/definitions/EmbeddingConfigurationUpdate",
+          "description": "Embedding model configuration"
+        }
+      },
+      "allOf": [
+        {
+          "$ref": "#/definitions/IndexUpdate"
+        }
+      ],
+      "x-ms-discriminator-value": "CosmosDBNoSqlVectorStore"
+    },
     "CredentialType": {
       "type": "string",
       "description": "The credential type used by the connection",
@@ -1607,6 +1655,40 @@
         "version"
       ]
     },
+    "DatasetVersionUpdate": {
+      "type": "object",
+      "description": "DatasetVersion Definition",
+      "properties": {
+        "type": {
+          "$ref": "#/definitions/DatasetType",
+          "description": "Dataset type"
+        },
+        "stage": {
+          "type": "string",
+          "description": "Asset stage",
+          "x-ms-mutability": [
+            "read",
+            "update",
+            "create"
+          ]
+        },
+        "description": {
+          "type": "string",
+          "description": "The asset description text."
+        },
+        "tags": {
+          "type": "object",
+          "description": "Tag dictionary. Tags can be added, removed, and updated.",
+          "additionalProperties": {
+            "type": "string"
+          }
+        }
+      },
+      "discriminator": "type",
+      "required": [
+        "type"
+      ]
+    },
     "Deployment": {
       "type": "object",
       "description": "Model Deployment Definition",
@@ -1662,6 +1744,20 @@
         "embeddingField"
       ]
     },
+    "EmbeddingConfigurationUpdate": {
+      "type": "object",
+      "description": "Embedding configuration class",
+      "properties": {
+        "modelDeploymentName": {
+          "type": "string",
+          "description": "Deployment name of embedding model. It can point to a model deployment either in the parent AIServices or a connection."
+        },
+        "embeddingField": {
+          "type": "string",
+          "description": "Embedding field"
+        }
+      }
+    },
     "EntraIDCredentials": {
       "type": "object",
       "description": "Entra ID credential definition",
@@ -1691,6 +1787,22 @@
       ],
       "x-ms-discriminator-value": "uri_file"
     },
+    "FileDatasetVersionUpdate": {
+      "type": "object",
+      "description": "FileDatasetVersion Definition",
+      "properties": {
+        "openAIPurpose": {
+          "type": "string",
+          "description": "Indicates OpenAI Purpose. FileDatasets created with this field will be compatible with OpenAI-specific features"
+        }
+      },
+      "allOf": [
+        {
+          "$ref": "#/definitions/DatasetVersionUpdate"
+        }
+      ],
+      "x-ms-discriminator-value": "uri_file"
+    },
     "FolderDatasetVersion": {
       "type": "object",
       "description": "FileDatasetVersion Definition",
@@ -1701,6 +1813,16 @@
       ],
       "x-ms-discriminator-value": "uri_folder"
     },
+    "FolderDatasetVersionUpdate": {
+      "type": "object",
+      "description": "FileDatasetVersion Definition",
+      "allOf": [
+        {
+          "$ref": "#/definitions/DatasetVersionUpdate"
+        }
+      ],
+      "x-ms-discriminator-value": "uri_folder"
+    },
     "Index": {
       "type": "object",
       "description": "Index resource Definition",
@@ -1781,6 +1903,40 @@
         ]
       }
     },
+    "IndexUpdate": {
+      "type": "object",
+      "description": "Index resource Definition",
+      "properties": {
+        "type": {
+          "$ref": "#/definitions/IndexType",
+          "description": "Type of index"
+        },
+        "stage": {
+          "type": "string",
+          "description": "Asset stage",
+          "x-ms-mutability": [
+            "read",
+            "update",
+            "create"
+          ]
+        },
+        "description": {
+          "type": "string",
+          "description": "The asset description text."
+        },
+        "tags": {
+          "type": "object",
+          "description": "Tag dictionary. Tags can be added, removed, and updated.",
+          "additionalProperties": {
+            "type": "string"
+          }
+        }
+      },
+      "discriminator": "type",
+      "required": [
+        "type"
+      ]
+    },
     "ListSortOrder": {
       "type": "string",
       "description": "The available sorting options when requesting a list of response objects.",
@@ -1854,6 +2010,22 @@
       ],
       "x-ms-discriminator-value": "ManagedAzureSearch"
     },
+    "ManagedAzureAISearchIndexUpdate": {
+      "type": "object",
+      "description": "Managed Azure AI Search Index Definition",
+      "properties": {
+        "vectorStoreId": {
+          "type": "string",
+          "description": "Vector store id of managed index"
+        }
+      },
+      "allOf": [
+        {
+          "$ref": "#/definitions/IndexUpdate"
+        }
+      ],
+      "x-ms-discriminator-value": "ManagedAzureSearch"
+    },
     "ModelDeployment": {
       "type": "object",
       "description": "Model Deployment Definition",
diff --git a/specification/ai/data-plane/Azure.AI.Projects/stable/latest/azure-ai-projects-1dp.json b/specification/ai/data-plane/Azure.AI.Projects/stable/latest/azure-ai-projects-1dp.json
index 31fb0938415a..86421b080715 100644
--- a/specification/ai/data-plane/Azure.AI.Projects/stable/latest/azure-ai-projects-1dp.json
+++ b/specification/ai/data-plane/Azure.AI.Projects/stable/latest/azure-ai-projects-1dp.json
@@ -506,9 +506,9 @@
           }
         }
       },
-      "put": {
-        "operationId": "Datasets_CreateVersion",
-        "description": "Create a new or replace an existing DatasetVersion with the given version id",
+      "patch": {
+        "operationId": "Datasets_CreateOrUpdateVersion",
+        "description": "Create a new or update an existing DatasetVersion with the given version id",
         "parameters": [
           {
             "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter"
@@ -530,10 +530,10 @@
           {
             "name": "body",
             "in": "body",
-            "description": "The definition of the DatasetVersion to create",
+            "description": "The definition of the DatasetVersion to create or update",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/DatasetVersion"
+              "$ref": "#/definitions/DatasetVersionUpdate"
             }
           }
         ],
@@ -1057,9 +1057,9 @@
           }
         }
       },
-      "put": {
-        "operationId": "Indexes_CreateVersion",
-        "description": "Create a new or replace an existing Index with the given version id",
+      "patch": {
+        "operationId": "Indexes_CreateOrUpdateVersion",
+        "description": "Create a new or update an existing Index with the given version id",
         "parameters": [
           {
             "$ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter"
@@ -1081,10 +1081,10 @@
           {
             "name": "body",
             "in": "body",
-            "description": "The definition of the Index to create",
+            "description": "The definition of the Index to create or update",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/Index"
+              "$ref": "#/definitions/IndexUpdate"
             }
           }
         ],
@@ -1273,6 +1273,26 @@
       ],
       "x-ms-discriminator-value": "AzureSearch"
     },
+    "AzureAISearchIndexUpdate": {
+      "type": "object",
+      "description": "Azure AI Search Index Definition",
+      "properties": {
+        "connectionName": {
+          "type": "string",
+          "description": "Name of connection to Azure AI Search"
+        },
+        "indexName": {
+          "type": "string",
+          "description": "Name of index in Azure AI Search resource to attach"
+        }
+      },
+      "allOf": [
+        {
+          "$ref": "#/definitions/IndexUpdate"
+        }
+      ],
+      "x-ms-discriminator-value": "AzureSearch"
+    },
     "BaseCredentials": {
       "type": "object",
       "description": "A base class for connection credentials",
@@ -1464,6 +1484,34 @@
       ],
       "x-ms-discriminator-value": "CosmosDBNoSqlVectorStore"
     },
+    "CosmosDBIndexUpdate": {
+      "type": "object",
+      "description": "CosmosDB Vector Store Index Definition",
+      "properties": {
+        "connectionName": {
+          "type": "string",
+          "description": "Name of connection to CosmosDB"
+        },
+        "databaseName": {
+          "type": "string",
+          "description": "Name of the CosmosDB Database"
+        },
+        "containerName": {
+          "type": "string",
+          "description": "Name of CosmosDB Container"
+        },
+        "embeddingConfiguration": {
+          "$ref": "#/definitions/EmbeddingConfigurationUpdate",
+          "description": "Embedding model configuration"
+        }
+      },
+      "allOf": [
+        {
+          "$ref": "#/definitions/IndexUpdate"
+        }
+      ],
+      "x-ms-discriminator-value": "CosmosDBNoSqlVectorStore"
+    },
     "CredentialType": {
       "type": "string",
       "description": "The credential type used by the connection",
@@ -1607,6 +1655,40 @@
         "version"
       ]
     },
+    "DatasetVersionUpdate": {
+      "type": "object",
+      "description": "DatasetVersion Definition",
+      "properties": {
+        "type": {
+          "$ref": "#/definitions/DatasetType",
+          "description": "Dataset type"
+        },
+        "stage": {
+          "type": "string",
+          "description": "Asset stage",
+          "x-ms-mutability": [
+            "read",
+            "update",
+            "create"
+          ]
+        },
+        "description": {
+          "type": "string",
+          "description": "The asset description text."
+        },
+        "tags": {
+          "type": "object",
+          "description": "Tag dictionary. Tags can be added, removed, and updated.",
+          "additionalProperties": {
+            "type": "string"
+          }
+        }
+      },
+      "discriminator": "type",
+      "required": [
+        "type"
+      ]
+    },
     "Deployment": {
       "type": "object",
       "description": "Model Deployment Definition",
@@ -1662,6 +1744,20 @@
         "embeddingField"
       ]
     },
+    "EmbeddingConfigurationUpdate": {
+      "type": "object",
+      "description": "Embedding configuration class",
+      "properties": {
+        "modelDeploymentName": {
+          "type": "string",
+          "description": "Deployment name of embedding model. It can point to a model deployment either in the parent AIServices or a connection."
+        },
+        "embeddingField": {
+          "type": "string",
+          "description": "Embedding field"
+        }
+      }
+    },
     "EntraIDCredentials": {
       "type": "object",
       "description": "Entra ID credential definition",
@@ -1691,6 +1787,22 @@
       ],
       "x-ms-discriminator-value": "uri_file"
     },
+    "FileDatasetVersionUpdate": {
+      "type": "object",
+      "description": "FileDatasetVersion Definition",
+      "properties": {
+        "openAIPurpose": {
+          "type": "string",
+          "description": "Indicates OpenAI Purpose. FileDatasets created with this field will be compatible with OpenAI-specific features"
+        }
+      },
+      "allOf": [
+        {
+          "$ref": "#/definitions/DatasetVersionUpdate"
+        }
+      ],
+      "x-ms-discriminator-value": "uri_file"
+    },
     "FolderDatasetVersion": {
       "type": "object",
       "description": "FileDatasetVersion Definition",
@@ -1701,6 +1813,16 @@
       ],
       "x-ms-discriminator-value": "uri_folder"
     },
+    "FolderDatasetVersionUpdate": {
+      "type": "object",
+      "description": "FileDatasetVersion Definition",
+      "allOf": [
+        {
+          "$ref": "#/definitions/DatasetVersionUpdate"
+        }
+      ],
+      "x-ms-discriminator-value": "uri_folder"
+    },
     "Index": {
       "type": "object",
       "description": "Index resource Definition",
@@ -1781,6 +1903,40 @@
         ]
       }
     },
+    "IndexUpdate": {
+      "type": "object",
+      "description": "Index resource Definition",
+      "properties": {
+        "type": {
+          "$ref": "#/definitions/IndexType",
+          "description": "Type of index"
+        },
+        "stage": {
+          "type": "string",
+          "description": "Asset stage",
+          "x-ms-mutability": [
+            "read",
+            "update",
+            "create"
+          ]
+        },
+        "description": {
+          "type": "string",
+          "description": "The asset description text."
+        },
+        "tags": {
+          "type": "object",
+          "description": "Tag dictionary. Tags can be added, removed, and updated.",
+          "additionalProperties": {
+            "type": "string"
+          }
+        }
+      },
+      "discriminator": "type",
+      "required": [
+        "type"
+      ]
+    },
     "ListSortOrder": {
       "type": "string",
       "description": "The available sorting options when requesting a list of response objects.",
@@ -1854,6 +2010,22 @@
       ],
       "x-ms-discriminator-value": "ManagedAzureSearch"
     },
+    "ManagedAzureAISearchIndexUpdate": {
+      "type": "object",
+      "description": "Managed Azure AI Search Index Definition",
+      "properties": {
+        "vectorStoreId": {
+          "type": "string",
+          "description": "Vector store id of managed index"
+        }
+      },
+      "allOf": [
+        {
+          "$ref": "#/definitions/IndexUpdate"
+        }
+      ],
+      "x-ms-discriminator-value": "ManagedAzureSearch"
+    },
     "ModelDeployment": {
       "type": "object",
       "description": "Model Deployment Definition",


Reviews:
user: login: w-javed
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-22T19:36:52Z
user: login: w-javed
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-22T19:38:10Z
user: login: kseager
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-22T22:44:01Z
user: login: w-javed
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-22T23:26:34Z

Review comments:
diff_hunk: @@ -1081,10 +1081,10 @@
           {
             "name": "body",
             "in": "body",
-            "description": "The definition of the EvaluationResult to create",
+            "description": "The definition of the EvaluationResult to create or update",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/EvaluationResult"
+              "$ref": "#/definitions/EvaluationResultUpdate"
             }
           }
         ],
path: specification/ai/data-plane/Azure.AI.Projects/preview/2025-05-15-preview/azure-ai-projects-1dp.json
user: login: w-javed
body: It should be 200.


[https://github.com/Azure/azure-rest-api-specs/blob/998cef5ca0e89f76bd5b65f844751d9ea30aaa33/specification/ai/data-plane/Azure.AI.Projects/preview/2025-05-15-preview/azure-ai-projects-1dp.json#L1315](https://github.com/Azure/azure-rest-api-specs/blob/998cef5ca0e89f76bd5b65f844751d9ea30aaa33/specification/ai/data-plane/Azure.AI.Projects/preview/2025-05-15-preview/azure-ai-projects-1dp.json#L1315)
created_at: 2025-04-22T19:36:52Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1081,10 +1081,10 @@
           {
             "name": "body",
             "in": "body",
-            "description": "The definition of the EvaluationResult to create",
+            "description": "The definition of the EvaluationResult to create or update",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/EvaluationResult"
+              "$ref": "#/definitions/EvaluationResultUpdate"
             }
           }
         ],
path: specification/ai/data-plane/Azure.AI.Projects/preview/2025-05-15-preview/azure-ai-projects-1dp.json
user: login: w-javed
body: It should be api-version

[https://github.com/Azure/azure-rest-api-specs/blob/998cef5ca0e89f76bd5b65f844751d9ea30aaa33/specification/ai/data-plane/Azure.AI.Projects/preview/2025-05-15-preview/azure-ai-projects-1dp.json#L1300](https://github.com/Azure/azure-rest-api-specs/blob/998cef5ca0e89f76bd5b65f844751d9ea30aaa33/specification/ai/data-plane/Azure.AI.Projects/preview/2025-05-15-preview/azure-ai-projects-1dp.json#L1300)
created_at: 2025-04-22T19:38:10Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1081,10 +1081,10 @@
           {
             "name": "body",
             "in": "body",
-            "description": "The definition of the EvaluationResult to create",
+            "description": "The definition of the EvaluationResult to create or update",
             "required": true,
             "schema": {
-              "$ref": "#/definitions/EvaluationResult"
+              "$ref": "#/definitions/EvaluationResultUpdate"
             }
           }
         ],
path: specification/ai/data-plane/Azure.AI.Projects/preview/2025-05-15-preview/azure-ai-projects-1dp.json
user: login: kseager
body: by this I think you precisely mean $ref": "#/parameters/Azure.Core.Foundations.ApiVersionParameter"
created_at: 2025-04-22T22:43:44Z
author_association: CONTRIBUTOR

PR comments:
user: login: openapi-pipeline-app[bot]
created_at: 2025-04-22T18:16:39Z
body: <h2>Next Steps to Merge</h2>✅ All automated merging requirements have been met! To get your PR merged, see <a href="https://aka.ms/azsdk/specreview/merge">aka.ms/azsdk/specreview/merge</a>.
author_association: NONE
user: login: openapi-pipeline-app[bot]
created_at: 2025-04-22T18:16:40Z
body: PR validation pipeline restarted successfully. If there is ApiView generated, it will be updated in this comment.
author_association: NONE
user: login: azure-sdk
created_at: 2025-04-22T18:18:58Z
body: ## API Change Check

APIView identified API level changes in this PR and created the following API reviews

| Language | API Review for Package |
|----------|---------|
| Python | [azure-ai-projects-onedp](https://spa.apiview.dev/review/1db997851be4466c878ecf7771a63695?activeApiRevisionId=5dbe4ba45b22409e830ddb1302d00fd7) |
<!-- Fetch URI: https://apiview.dev/api/pullrequests?pullRequestNumber=34134&repoName=Azure/azure-rest-api-specs&commitSHA=998cef5ca0e89f76bd5b65f844751d9ea30aaa33 -->
author_association: COLLABORATOR
user: login: azure-sdk
created_at: 2025-04-22T22:48:16Z
body: **API change check**

APIView has identified API level changes in this PR and created following API reviews.

[Azure.AI.Projects](https://apiview.dev/Assemblies/Review/2d95fc27d5b8484a8600b3f00af0901f?revisionId=278aa4a463e046f59a171ff754f6ad51)


author_association: COLLABORATOR