diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml
index 329c0e6965c..9cf7a6300d0 100644
--- a/.generator/schemas/v2/openapi.yaml
+++ b/.generator/schemas/v2/openapi.yaml
@@ -61011,6 +61011,35 @@ paths:
tags:
- Error Tracking
/api/v2/error-tracking/issues/{issue_id}/assignee:
+ delete:
+ description: Remove the assignee of an issue by `issue_id`.
+ operationId: DeleteIssueAssignee
+ parameters:
+ - $ref: '#/components/parameters/IssueIDPathParameter'
+ responses:
+ '204':
+ description: No Content
+ '400':
+ $ref: '#/components/responses/BadRequestResponse'
+ '401':
+ $ref: '#/components/responses/UnauthorizedResponse'
+ '403':
+ $ref: '#/components/responses/ForbiddenResponse'
+ '404':
+ $ref: '#/components/responses/NotFoundResponse'
+ '429':
+ $ref: '#/components/responses/TooManyRequestsResponse'
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - error_tracking_read
+ - error_tracking_write
+ - cases_read
+ - cases_write
+ summary: Remove the assignee of an issue
+ tags:
+ - Error Tracking
put:
description: Update the assignee of an issue by `issue_id`.
operationId: UpdateIssueAssignee
diff --git a/examples/v2/error-tracking/DeleteIssueAssignee.java b/examples/v2/error-tracking/DeleteIssueAssignee.java
new file mode 100644
index 00000000000..4e037bb50e1
--- /dev/null
+++ b/examples/v2/error-tracking/DeleteIssueAssignee.java
@@ -0,0 +1,25 @@
+// Remove the assignee of an issue returns "No Content" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.ErrorTrackingApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ ErrorTrackingApi apiInstance = new ErrorTrackingApi(defaultClient);
+
+ // there is a valid "issue" in the system
+ String ISSUE_ID = System.getenv("ISSUE_ID");
+
+ try {
+ apiInstance.deleteIssueAssignee(ISSUE_ID);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling ErrorTrackingApi#deleteIssueAssignee");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/api/ErrorTrackingApi.java b/src/main/java/com/datadog/api/client/v2/api/ErrorTrackingApi.java
index fcf0d92d4ff..272d1b1b684 100644
--- a/src/main/java/com/datadog/api/client/v2/api/ErrorTrackingApi.java
+++ b/src/main/java/com/datadog/api/client/v2/api/ErrorTrackingApi.java
@@ -50,6 +50,140 @@ public void setApiClient(ApiClient apiClient) {
this.apiClient = apiClient;
}
+ /**
+ * Remove the assignee of an issue.
+ *
+ *
See {@link #deleteIssueAssigneeWithHttpInfo}.
+ *
+ * @param issueId The identifier of the issue. (required)
+ * @throws ApiException if fails to make API call
+ */
+ public void deleteIssueAssignee(String issueId) throws ApiException {
+ deleteIssueAssigneeWithHttpInfo(issueId);
+ }
+
+ /**
+ * Remove the assignee of an issue.
+ *
+ *
See {@link #deleteIssueAssigneeWithHttpInfoAsync}.
+ *
+ * @param issueId The identifier of the issue. (required)
+ * @return CompletableFuture
+ */
+ public CompletableFuture deleteIssueAssigneeAsync(String issueId) {
+ return deleteIssueAssigneeWithHttpInfoAsync(issueId)
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * Remove the assignee of an issue by issue_id.
+ *
+ * @param issueId The identifier of the issue. (required)
+ * @return ApiResponse<Void>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+ *
+ * Response details
+ * | Status Code | Description | Response Headers |
+ * | 204 | No Content | - |
+ * | 400 | Bad Request | - |
+ * | 401 | Unauthorized | - |
+ * | 403 | Forbidden | - |
+ * | 404 | Not Found | - |
+ * | 429 | Too many requests | - |
+ *
+ */
+ public ApiResponse deleteIssueAssigneeWithHttpInfo(String issueId) throws ApiException {
+ Object localVarPostBody = null;
+
+ // verify the required parameter 'issueId' is set
+ if (issueId == null) {
+ throw new ApiException(
+ 400, "Missing the required parameter 'issueId' when calling deleteIssueAssignee");
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/error-tracking/issues/{issue_id}/assignee"
+ .replaceAll("\\{" + "issue_id" + "\\}", apiClient.escapeString(issueId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.ErrorTrackingApi.deleteIssueAssignee",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"*/*"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ return apiClient.invokeAPI(
+ "DELETE",
+ builder,
+ localVarHeaderParams,
+ new String[] {},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ null);
+ }
+
+ /**
+ * Remove the assignee of an issue.
+ *
+ * See {@link #deleteIssueAssigneeWithHttpInfo}.
+ *
+ * @param issueId The identifier of the issue. (required)
+ * @return CompletableFuture<ApiResponse<Void>>
+ */
+ public CompletableFuture> deleteIssueAssigneeWithHttpInfoAsync(String issueId) {
+ Object localVarPostBody = null;
+
+ // verify the required parameter 'issueId' is set
+ if (issueId == null) {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400, "Missing the required parameter 'issueId' when calling deleteIssueAssignee"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/error-tracking/issues/{issue_id}/assignee"
+ .replaceAll("\\{" + "issue_id" + "\\}", apiClient.escapeString(issueId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.ErrorTrackingApi.deleteIssueAssignee",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"*/*"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ } catch (ApiException ex) {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(ex);
+ return result;
+ }
+ return apiClient.invokeAPIAsync(
+ "DELETE",
+ builder,
+ localVarHeaderParams,
+ new String[] {},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ null);
+ }
+
/** Manage optional parameters to getIssue. */
public static class GetIssueOptionalParameters {
private List include;
diff --git a/src/test/resources/cassettes/features/v2/Remove_the_assignee_of_an_issue_returns_No_Content_response.freeze b/src/test/resources/cassettes/features/v2/Remove_the_assignee_of_an_issue_returns_No_Content_response.freeze
new file mode 100644
index 00000000000..1c36c01bc37
--- /dev/null
+++ b/src/test/resources/cassettes/features/v2/Remove_the_assignee_of_an_issue_returns_No_Content_response.freeze
@@ -0,0 +1 @@
+2025-10-17T14:43:40.022Z
\ No newline at end of file
diff --git a/src/test/resources/cassettes/features/v2/Remove_the_assignee_of_an_issue_returns_No_Content_response.json b/src/test/resources/cassettes/features/v2/Remove_the_assignee_of_an_issue_returns_No_Content_response.json
new file mode 100644
index 00000000000..d28fe20ca32
--- /dev/null
+++ b/src/test/resources/cassettes/features/v2/Remove_the_assignee_of_an_issue_returns_No_Content_response.json
@@ -0,0 +1,53 @@
+[
+ {
+ "httpRequest": {
+ "body": {
+ "type": "JSON",
+ "json": "{\"data\":{\"attributes\":{\"from\":1759416220000,\"query\":\"service:synthetics-browser\",\"to\":1760712220000,\"track\":\"rum\"},\"type\":\"search_request\"}}"
+ },
+ "headers": {},
+ "method": "POST",
+ "path": "/api/v2/error-tracking/issues/search",
+ "keepAlive": false,
+ "secure": true
+ },
+ "httpResponse": {
+ "body": "{\"data\":[{\"id\":\"d3ab59c6-84ee-11f0-87bb-da7ad0900002\",\"type\":\"error_tracking_search_result\",\"attributes\":{\"impacted_sessions\":4316,\"total_count\":8640},\"relationships\":{\"issue\":{\"data\":{\"id\":\"d3ab59c6-84ee-11f0-87bb-da7ad0900002\",\"type\":\"issue\"}}}},{\"id\":\"a5bb2896-a4d0-11f0-bd76-da7ad0900002\",\"type\":\"error_tracking_search_result\",\"attributes\":{\"impacted_sessions\":280,\"total_count\":272},\"relationships\":{\"issue\":{\"data\":{\"id\":\"a5bb2896-a4d0-11f0-bd76-da7ad0900002\",\"type\":\"issue\"}}}},{\"id\":\"e2a89d14-6f07-11f0-8a88-da7ad0900002\",\"type\":\"error_tracking_search_result\",\"attributes\":{\"impacted_sessions\":1,\"total_count\":4},\"relationships\":{\"issue\":{\"data\":{\"id\":\"e2a89d14-6f07-11f0-8a88-da7ad0900002\",\"type\":\"issue\"}}}},{\"id\":\"5f8ebd5c-6dd9-11f0-8a28-da7ad0900002\",\"type\":\"error_tracking_search_result\",\"attributes\":{\"impacted_sessions\":1,\"total_count\":1},\"relationships\":{\"issue\":{\"data\":{\"id\":\"5f8ebd5c-6dd9-11f0-8a28-da7ad0900002\",\"type\":\"issue\"}}}},{\"id\":\"e2a89134-6f07-11f0-8d36-da7ad0900002\",\"type\":\"error_tracking_search_result\",\"attributes\":{\"impacted_sessions\":1,\"total_count\":1},\"relationships\":{\"issue\":{\"data\":{\"id\":\"e2a89134-6f07-11f0-8d36-da7ad0900002\",\"type\":\"issue\"}}}}]}",
+ "headers": {
+ "Content-Type": [
+ "application/vnd.api+json"
+ ]
+ },
+ "statusCode": 200,
+ "reasonPhrase": "OK"
+ },
+ "times": {
+ "remainingTimes": 1
+ },
+ "timeToLive": {
+ "unlimited": true
+ },
+ "id": "e395b278-a94e-06dd-7640-8834367dc3b0"
+ },
+ {
+ "httpRequest": {
+ "headers": {},
+ "method": "DELETE",
+ "path": "/api/v2/error-tracking/issues/d3ab59c6-84ee-11f0-87bb-da7ad0900002/assignee",
+ "keepAlive": false,
+ "secure": true
+ },
+ "httpResponse": {
+ "headers": {},
+ "statusCode": 204,
+ "reasonPhrase": "No Content"
+ },
+ "times": {
+ "remainingTimes": 1
+ },
+ "timeToLive": {
+ "unlimited": true
+ },
+ "id": "91bc6635-f1b8-69a9-caed-406220eadaf0"
+ }
+]
\ No newline at end of file
diff --git a/src/test/resources/cassettes/features/v2/Remove_the_assignee_of_an_issue_returns_Not_Found_response.freeze b/src/test/resources/cassettes/features/v2/Remove_the_assignee_of_an_issue_returns_Not_Found_response.freeze
new file mode 100644
index 00000000000..ed269c62a73
--- /dev/null
+++ b/src/test/resources/cassettes/features/v2/Remove_the_assignee_of_an_issue_returns_Not_Found_response.freeze
@@ -0,0 +1 @@
+2025-10-17T14:43:41.755Z
\ No newline at end of file
diff --git a/src/test/resources/cassettes/features/v2/Remove_the_assignee_of_an_issue_returns_Not_Found_response.json b/src/test/resources/cassettes/features/v2/Remove_the_assignee_of_an_issue_returns_Not_Found_response.json
new file mode 100644
index 00000000000..7cb47579754
--- /dev/null
+++ b/src/test/resources/cassettes/features/v2/Remove_the_assignee_of_an_issue_returns_Not_Found_response.json
@@ -0,0 +1,28 @@
+[
+ {
+ "httpRequest": {
+ "headers": {},
+ "method": "DELETE",
+ "path": "/api/v2/error-tracking/issues/67d80aa3-36ff-44b9-a694-c501a7591737/assignee",
+ "keepAlive": false,
+ "secure": true
+ },
+ "httpResponse": {
+ "body": "{\"errors\":[{\"status\":\"404\",\"title\":\"Not Found\",\"detail\":\"issue not found\"}]}",
+ "headers": {
+ "Content-Type": [
+ "application/vnd.api+json"
+ ]
+ },
+ "statusCode": 404,
+ "reasonPhrase": "Not Found"
+ },
+ "times": {
+ "remainingTimes": 1
+ },
+ "timeToLive": {
+ "unlimited": true
+ },
+ "id": "74d71d00-9097-6c51-44e0-0ffb9aaa0d32"
+ }
+]
\ No newline at end of file
diff --git a/src/test/resources/com/datadog/api/client/v2/api/error_tracking.feature b/src/test/resources/com/datadog/api/client/v2/api/error_tracking.feature
index 97f8ceeedd9..253c3b24b23 100644
--- a/src/test/resources/com/datadog/api/client/v2/api/error_tracking.feature
+++ b/src/test/resources/com/datadog/api/client/v2/api/error_tracking.feature
@@ -32,6 +32,28 @@ Feature: Error Tracking
Then the response status is 200 OK
And the response "data.id" is equal to "{{ issue.id }}"
+ @generated @skip @team:DataDog/error-tracking
+ Scenario: Remove the assignee of an issue returns "Bad Request" response
+ Given new "DeleteIssueAssignee" request
+ And request contains "issue_id" parameter from "REPLACE.ME"
+ When the request is sent
+ Then the response status is 400 Bad Request
+
+ @team:DataDog/error-tracking
+ Scenario: Remove the assignee of an issue returns "No Content" response
+ Given new "DeleteIssueAssignee" request
+ And there is a valid "issue" in the system
+ And request contains "issue_id" parameter from "issue.id"
+ When the request is sent
+ Then the response status is 204 No Content
+
+ @team:DataDog/error-tracking
+ Scenario: Remove the assignee of an issue returns "Not Found" response
+ Given new "DeleteIssueAssignee" request
+ And request contains "issue_id" parameter with value "67d80aa3-36ff-44b9-a694-c501a7591737"
+ When the request is sent
+ Then the response status is 404 Not Found
+
@team:DataDog/error-tracking
Scenario: Search error tracking issues returns "Bad Request" response
Given new "SearchIssues" request
diff --git a/src/test/resources/com/datadog/api/client/v2/api/undo.json b/src/test/resources/com/datadog/api/client/v2/api/undo.json
index f804a3dce1d..6c74e264b65 100644
--- a/src/test/resources/com/datadog/api/client/v2/api/undo.json
+++ b/src/test/resources/com/datadog/api/client/v2/api/undo.json
@@ -1319,6 +1319,12 @@
"type": "safe"
}
},
+ "DeleteIssueAssignee": {
+ "tag": "Error Tracking",
+ "undo": {
+ "type": "idempotent"
+ }
+ },
"UpdateIssueAssignee": {
"tag": "Error Tracking",
"undo": {