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": {