diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml
index ea8f0cd3e16..eac2fa3c179 100644
--- a/.generator/schemas/v2/openapi.yaml
+++ b/.generator/schemas/v2/openapi.yaml
@@ -65509,6 +65509,149 @@ components:
type: string
x-enum-varnames:
- SUITES
+ SyntheticsTestFileAbortMultipartUploadRequest:
+ description: Request body for aborting a multipart file upload.
+ properties:
+ key:
+ description: The full storage path of the file whose upload should be aborted.
+ example: "org-123/api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json"
+ type: string
+ uploadId:
+ description: The upload ID of the multipart upload to abort.
+ example: "upload-id-abc123"
+ type: string
+ required:
+ - uploadId
+ - key
+ type: object
+ SyntheticsTestFileCompleteMultipartUploadPart:
+ description: A completed part of a multipart upload.
+ properties:
+ ETag:
+ description: The ETag returned by the storage provider after uploading the part.
+ example: '"d41d8cd98f00b204e9800998ecf8427e"'
+ type: string
+ PartNumber:
+ description: The 1-indexed part number for the multipart upload.
+ example: 1
+ format: int64
+ type: integer
+ required:
+ - ETag
+ - PartNumber
+ type: object
+ SyntheticsTestFileCompleteMultipartUploadRequest:
+ description: Request body for completing a multipart file upload.
+ properties:
+ key:
+ description: The full storage path for the uploaded file.
+ example: "org-123/api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json"
+ type: string
+ parts:
+ description: Array of completed parts with their ETags.
+ items:
+ $ref: "#/components/schemas/SyntheticsTestFileCompleteMultipartUploadPart"
+ type: array
+ uploadId:
+ description: The upload ID returned when the multipart upload was initiated.
+ example: "upload-id-abc123"
+ type: string
+ required:
+ - uploadId
+ - key
+ - parts
+ type: object
+ SyntheticsTestFileDownloadRequest:
+ description: Request body for getting a presigned download URL for a test file.
+ properties:
+ bucketKey:
+ description: The bucket key referencing the file to download.
+ example: "api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json"
+ minLength: 1
+ type: string
+ required:
+ - bucketKey
+ type: object
+ SyntheticsTestFileDownloadResponse:
+ description: Response containing a presigned URL for downloading a test file.
+ properties:
+ url:
+ description: A presigned URL to download the file. The URL expires after a short period.
+ example: "https://storage.example.com/presigned-download-url"
+ type: string
+ type: object
+ SyntheticsTestFileMultipartPresignedUrlsParams:
+ description: Presigned URL parameters returned for a multipart upload.
+ properties:
+ key:
+ description: The full storage path for the file being uploaded.
+ example: "org-123/api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json"
+ type: string
+ upload_id:
+ description: The upload ID assigned by the storage provider for this multipart upload.
+ example: "upload-id-abc123"
+ type: string
+ urls:
+ additionalProperties:
+ type: string
+ description: A map of part numbers to presigned upload URLs.
+ example:
+ "1": "https://storage.example.com/presigned-upload-url-part-1"
+ "2": "https://storage.example.com/presigned-upload-url-part-2"
+ type: object
+ type: object
+ SyntheticsTestFileMultipartPresignedUrlsPart:
+ description: A part descriptor for initiating a multipart upload.
+ properties:
+ md5:
+ description: Base64-encoded MD5 digest of the part content.
+ example: "1B2M2Y8AsgTpgAmY7PhCfg=="
+ maxLength: 24
+ minLength: 22
+ type: string
+ partNumber:
+ description: The 1-indexed part number for the multipart upload.
+ example: 1
+ format: int64
+ type: integer
+ required:
+ - md5
+ - partNumber
+ type: object
+ SyntheticsTestFileMultipartPresignedUrlsRequest:
+ description: Request body for getting presigned URLs for a multipart file upload.
+ properties:
+ bucketKeyPrefix:
+ $ref: "#/components/schemas/SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix"
+ parts:
+ description: Array of part descriptors for the multipart upload.
+ items:
+ $ref: "#/components/schemas/SyntheticsTestFileMultipartPresignedUrlsPart"
+ type: array
+ required:
+ - bucketKeyPrefix
+ - parts
+ type: object
+ SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix:
+ description: The bucket key prefix indicating the type of file upload.
+ enum:
+ - api-upload-file
+ - browser-upload-file-step
+ example: "api-upload-file"
+ type: string
+ x-enum-varnames:
+ - API_UPLOAD_FILE
+ - BROWSER_UPLOAD_FILE_STEP
+ SyntheticsTestFileMultipartPresignedUrlsResponse:
+ description: Response containing presigned URLs for multipart file upload and the bucket key.
+ properties:
+ bucketKey:
+ description: The bucket key that references the uploaded file after completion.
+ example: "api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json"
+ type: string
+ multipart_presigned_urls_params:
+ $ref: "#/components/schemas/SyntheticsTestFileMultipartPresignedUrlsParams"
+ type: object
SyntheticsTestOptions:
description: Object describing the extra options for a Synthetic test.
properties:
@@ -107394,6 +107537,237 @@ paths:
permissions:
- synthetics_write
- synthetics_create_edit_trigger
+ /api/v2/synthetics/tests/{public_id}/files/download:
+ post:
+ description: |-
+ Get a presigned URL to download a file attached to a Synthetic test.
+ The returned URL is temporary and expires after a short period.
+ operationId: GetTestFileDownloadUrl
+ parameters:
+ - description: The public ID of the Synthetic test.
+ in: path
+ name: public_id
+ required: true
+ schema:
+ example: abc-def-123
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SyntheticsTestFileDownloadRequest"
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SyntheticsTestFileDownloadResponse"
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: API error response.
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden.
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: API error response.
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - synthetics_read
+ summary: Get a presigned URL for downloading a test file
+ tags:
+ - Synthetics
+ x-permission:
+ operator: OR
+ permissions:
+ - synthetics_read
+ /api/v2/synthetics/tests/{public_id}/files/multipart-presigned-urls:
+ post:
+ description: |-
+ Get presigned URLs for uploading a file to a Synthetic test using multipart upload.
+ Returns the presigned URLs for each part along with the bucket key that references the file.
+ operationId: GetTestFileMultipartPresignedUrls
+ parameters:
+ - description: The public ID of the Synthetic test.
+ in: path
+ name: public_id
+ required: true
+ schema:
+ example: abc-def-123
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SyntheticsTestFileMultipartPresignedUrlsRequest"
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SyntheticsTestFileMultipartPresignedUrlsResponse"
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: API error response.
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden.
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: API error response.
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - synthetics_write
+ summary: Get presigned URLs for uploading a test file
+ tags:
+ - Synthetics
+ x-permission:
+ operator: OR
+ permissions:
+ - synthetics_write
+ - synthetics_create_edit_trigger
+ /api/v2/synthetics/tests/{public_id}/files/multipart-upload-abort:
+ post:
+ description: |-
+ Abort an in-progress multipart file upload for a Synthetic test. This cancels the upload
+ and releases any storage used by already-uploaded parts.
+ operationId: AbortTestFileMultipartUpload
+ parameters:
+ - description: The public ID of the Synthetic test.
+ in: path
+ name: public_id
+ required: true
+ schema:
+ example: abc-def-123
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SyntheticsTestFileAbortMultipartUploadRequest"
+ required: true
+ responses:
+ "204":
+ description: No Content
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: API error response.
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden.
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: API error response.
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - synthetics_write
+ summary: Abort a multipart upload of a test file
+ tags:
+ - Synthetics
+ x-permission:
+ operator: OR
+ permissions:
+ - synthetics_write
+ - synthetics_create_edit_trigger
+ /api/v2/synthetics/tests/{public_id}/files/multipart-upload-complete:
+ post:
+ description: |-
+ Complete a multipart file upload for a Synthetic test. Call this endpoint after all parts
+ have been uploaded using the presigned URLs obtained from the multipart presigned URLs endpoint.
+ operationId: CompleteTestFileMultipartUpload
+ parameters:
+ - description: The public ID of the Synthetic test.
+ in: path
+ name: public_id
+ required: true
+ schema:
+ example: abc-def-123
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SyntheticsTestFileCompleteMultipartUploadRequest"
+ required: true
+ responses:
+ "204":
+ description: No Content
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: API error response.
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden.
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: API error response.
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - synthetics_write
+ summary: Complete a multipart upload of a test file
+ tags:
+ - Synthetics
+ x-permission:
+ operator: OR
+ permissions:
+ - synthetics_write
+ - synthetics_create_edit_trigger
/api/v2/synthetics/tests/{public_id}/parent-suites:
get:
description: Get the list of parent suites and their status for a given Synthetic test.
diff --git a/examples/v2/synthetics/AbortTestFileMultipartUpload.java b/examples/v2/synthetics/AbortTestFileMultipartUpload.java
new file mode 100644
index 00000000000..b4b7f745ca8
--- /dev/null
+++ b/examples/v2/synthetics/AbortTestFileMultipartUpload.java
@@ -0,0 +1,28 @@
+// Abort a multipart upload of a test file returns "No Content" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.SyntheticsApi;
+import com.datadog.api.client.v2.model.SyntheticsTestFileAbortMultipartUploadRequest;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ SyntheticsApi apiInstance = new SyntheticsApi(defaultClient);
+
+ SyntheticsTestFileAbortMultipartUploadRequest body =
+ new SyntheticsTestFileAbortMultipartUploadRequest()
+ .key("org-123/api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json")
+ .uploadId("upload-id-abc123");
+
+ try {
+ apiInstance.abortTestFileMultipartUpload("abc-def-123", body);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling SyntheticsApi#abortTestFileMultipartUpload");
+ 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/examples/v2/synthetics/CompleteTestFileMultipartUpload.java b/examples/v2/synthetics/CompleteTestFileMultipartUpload.java
new file mode 100644
index 00000000000..440454631fa
--- /dev/null
+++ b/examples/v2/synthetics/CompleteTestFileMultipartUpload.java
@@ -0,0 +1,37 @@
+// Complete a multipart upload of a test file returns "No Content" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.SyntheticsApi;
+import com.datadog.api.client.v2.model.SyntheticsTestFileCompleteMultipartUploadPart;
+import com.datadog.api.client.v2.model.SyntheticsTestFileCompleteMultipartUploadRequest;
+import java.util.Collections;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ SyntheticsApi apiInstance = new SyntheticsApi(defaultClient);
+
+ SyntheticsTestFileCompleteMultipartUploadRequest body =
+ new SyntheticsTestFileCompleteMultipartUploadRequest()
+ .key("org-123/api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json")
+ .parts(
+ Collections.singletonList(
+ new SyntheticsTestFileCompleteMultipartUploadPart()
+ .eTag("""
+"d41d8cd98f00b204e9800998ecf8427e"
+""")
+ .partNumber(1L)))
+ .uploadId("upload-id-abc123");
+
+ try {
+ apiInstance.completeTestFileMultipartUpload("abc-def-123", body);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling SyntheticsApi#completeTestFileMultipartUpload");
+ 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/examples/v2/synthetics/GetTestFileDownloadUrl.java b/examples/v2/synthetics/GetTestFileDownloadUrl.java
new file mode 100644
index 00000000000..734253989e6
--- /dev/null
+++ b/examples/v2/synthetics/GetTestFileDownloadUrl.java
@@ -0,0 +1,30 @@
+// Get a presigned URL for downloading a test file returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.SyntheticsApi;
+import com.datadog.api.client.v2.model.SyntheticsTestFileDownloadRequest;
+import com.datadog.api.client.v2.model.SyntheticsTestFileDownloadResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ SyntheticsApi apiInstance = new SyntheticsApi(defaultClient);
+
+ SyntheticsTestFileDownloadRequest body =
+ new SyntheticsTestFileDownloadRequest()
+ .bucketKey("api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json");
+
+ try {
+ SyntheticsTestFileDownloadResponse result =
+ apiInstance.getTestFileDownloadUrl("abc-def-123", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling SyntheticsApi#getTestFileDownloadUrl");
+ 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/examples/v2/synthetics/GetTestFileMultipartPresignedUrls.java b/examples/v2/synthetics/GetTestFileMultipartPresignedUrls.java
new file mode 100644
index 00000000000..254e767ed74
--- /dev/null
+++ b/examples/v2/synthetics/GetTestFileMultipartPresignedUrls.java
@@ -0,0 +1,39 @@
+// Get presigned URLs for uploading a test file returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.SyntheticsApi;
+import com.datadog.api.client.v2.model.SyntheticsTestFileMultipartPresignedUrlsPart;
+import com.datadog.api.client.v2.model.SyntheticsTestFileMultipartPresignedUrlsRequest;
+import com.datadog.api.client.v2.model.SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix;
+import com.datadog.api.client.v2.model.SyntheticsTestFileMultipartPresignedUrlsResponse;
+import java.util.Collections;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ SyntheticsApi apiInstance = new SyntheticsApi(defaultClient);
+
+ SyntheticsTestFileMultipartPresignedUrlsRequest body =
+ new SyntheticsTestFileMultipartPresignedUrlsRequest()
+ .bucketKeyPrefix(
+ SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix.API_UPLOAD_FILE)
+ .parts(
+ Collections.singletonList(
+ new SyntheticsTestFileMultipartPresignedUrlsPart()
+ .md5("1B2M2Y8AsgTpgAmY7PhCfg==")
+ .partNumber(1L)));
+
+ try {
+ SyntheticsTestFileMultipartPresignedUrlsResponse result =
+ apiInstance.getTestFileMultipartPresignedUrls("abc-def-123", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling SyntheticsApi#getTestFileMultipartPresignedUrls");
+ 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/SyntheticsApi.java b/src/main/java/com/datadog/api/client/v2/api/SyntheticsApi.java
index d1d8a6ab7fc..23eb383a827 100644
--- a/src/main/java/com/datadog/api/client/v2/api/SyntheticsApi.java
+++ b/src/main/java/com/datadog/api/client/v2/api/SyntheticsApi.java
@@ -21,6 +21,12 @@
import com.datadog.api.client.v2.model.SyntheticsNetworkTestResponse;
import com.datadog.api.client.v2.model.SyntheticsSuiteResponse;
import com.datadog.api.client.v2.model.SyntheticsSuiteSearchResponse;
+import com.datadog.api.client.v2.model.SyntheticsTestFileAbortMultipartUploadRequest;
+import com.datadog.api.client.v2.model.SyntheticsTestFileCompleteMultipartUploadRequest;
+import com.datadog.api.client.v2.model.SyntheticsTestFileDownloadRequest;
+import com.datadog.api.client.v2.model.SyntheticsTestFileDownloadResponse;
+import com.datadog.api.client.v2.model.SyntheticsTestFileMultipartPresignedUrlsRequest;
+import com.datadog.api.client.v2.model.SyntheticsTestFileMultipartPresignedUrlsResponse;
import com.datadog.api.client.v2.model.SyntheticsTestParentSuitesResponse;
import com.datadog.api.client.v2.model.SyntheticsTestVersionHistoryResponse;
import com.datadog.api.client.v2.model.SyntheticsTestVersionResponse;
@@ -63,6 +69,330 @@ public void setApiClient(ApiClient apiClient) {
this.apiClient = apiClient;
}
+ /**
+ * Abort a multipart upload of a test file.
+ *
+ *
See {@link #abortTestFileMultipartUploadWithHttpInfo}.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (required)
+ * @throws ApiException if fails to make API call
+ */
+ public void abortTestFileMultipartUpload(
+ String publicId, SyntheticsTestFileAbortMultipartUploadRequest body) throws ApiException {
+ abortTestFileMultipartUploadWithHttpInfo(publicId, body);
+ }
+
+ /**
+ * Abort a multipart upload of a test file.
+ *
+ *
See {@link #abortTestFileMultipartUploadWithHttpInfoAsync}.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (required)
+ * @return CompletableFuture
+ */
+ public CompletableFuture abortTestFileMultipartUploadAsync(
+ String publicId, SyntheticsTestFileAbortMultipartUploadRequest body) {
+ return abortTestFileMultipartUploadWithHttpInfoAsync(publicId, body)
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * Abort an in-progress multipart file upload for a Synthetic test. This cancels the upload and
+ * releases any storage used by already-uploaded parts.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (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 | API error response. | - |
+ * | 403 | Forbidden. | - |
+ * | 404 | API error response. | - |
+ * | 429 | Too many requests | - |
+ *
+ */
+ public ApiResponse abortTestFileMultipartUploadWithHttpInfo(
+ String publicId, SyntheticsTestFileAbortMultipartUploadRequest body) throws ApiException {
+ Object localVarPostBody = body;
+
+ // verify the required parameter 'publicId' is set
+ if (publicId == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'publicId' when calling abortTestFileMultipartUpload");
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ throw new ApiException(
+ 400, "Missing the required parameter 'body' when calling abortTestFileMultipartUpload");
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/synthetics/tests/{public_id}/files/multipart-upload-abort"
+ .replaceAll("\\{" + "public_id" + "\\}", apiClient.escapeString(publicId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.SyntheticsApi.abortTestFileMultipartUpload",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"*/*"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ return apiClient.invokeAPI(
+ "POST",
+ builder,
+ localVarHeaderParams,
+ new String[] {"application/json"},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ null);
+ }
+
+ /**
+ * Abort a multipart upload of a test file.
+ *
+ * See {@link #abortTestFileMultipartUploadWithHttpInfo}.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (required)
+ * @return CompletableFuture<ApiResponse<Void>>
+ */
+ public CompletableFuture> abortTestFileMultipartUploadWithHttpInfoAsync(
+ String publicId, SyntheticsTestFileAbortMultipartUploadRequest body) {
+ Object localVarPostBody = body;
+
+ // verify the required parameter 'publicId' is set
+ if (publicId == null) {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'publicId' when calling"
+ + " abortTestFileMultipartUpload"));
+ return result;
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'body' when calling abortTestFileMultipartUpload"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/synthetics/tests/{public_id}/files/multipart-upload-abort"
+ .replaceAll("\\{" + "public_id" + "\\}", apiClient.escapeString(publicId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.SyntheticsApi.abortTestFileMultipartUpload",
+ 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(
+ "POST",
+ builder,
+ localVarHeaderParams,
+ new String[] {"application/json"},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ null);
+ }
+
+ /**
+ * Complete a multipart upload of a test file.
+ *
+ * See {@link #completeTestFileMultipartUploadWithHttpInfo}.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (required)
+ * @throws ApiException if fails to make API call
+ */
+ public void completeTestFileMultipartUpload(
+ String publicId, SyntheticsTestFileCompleteMultipartUploadRequest body) throws ApiException {
+ completeTestFileMultipartUploadWithHttpInfo(publicId, body);
+ }
+
+ /**
+ * Complete a multipart upload of a test file.
+ *
+ *
See {@link #completeTestFileMultipartUploadWithHttpInfoAsync}.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (required)
+ * @return CompletableFuture
+ */
+ public CompletableFuture completeTestFileMultipartUploadAsync(
+ String publicId, SyntheticsTestFileCompleteMultipartUploadRequest body) {
+ return completeTestFileMultipartUploadWithHttpInfoAsync(publicId, body)
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * Complete a multipart file upload for a Synthetic test. Call this endpoint after all parts have
+ * been uploaded using the presigned URLs obtained from the multipart presigned URLs endpoint.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (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 | API error response. | - |
+ * | 403 | Forbidden. | - |
+ * | 404 | API error response. | - |
+ * | 429 | Too many requests | - |
+ *
+ */
+ public ApiResponse completeTestFileMultipartUploadWithHttpInfo(
+ String publicId, SyntheticsTestFileCompleteMultipartUploadRequest body) throws ApiException {
+ Object localVarPostBody = body;
+
+ // verify the required parameter 'publicId' is set
+ if (publicId == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'publicId' when calling completeTestFileMultipartUpload");
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'body' when calling completeTestFileMultipartUpload");
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/synthetics/tests/{public_id}/files/multipart-upload-complete"
+ .replaceAll("\\{" + "public_id" + "\\}", apiClient.escapeString(publicId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.SyntheticsApi.completeTestFileMultipartUpload",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"*/*"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ return apiClient.invokeAPI(
+ "POST",
+ builder,
+ localVarHeaderParams,
+ new String[] {"application/json"},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ null);
+ }
+
+ /**
+ * Complete a multipart upload of a test file.
+ *
+ * See {@link #completeTestFileMultipartUploadWithHttpInfo}.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (required)
+ * @return CompletableFuture<ApiResponse<Void>>
+ */
+ public CompletableFuture> completeTestFileMultipartUploadWithHttpInfoAsync(
+ String publicId, SyntheticsTestFileCompleteMultipartUploadRequest body) {
+ Object localVarPostBody = body;
+
+ // verify the required parameter 'publicId' is set
+ if (publicId == null) {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'publicId' when calling"
+ + " completeTestFileMultipartUpload"));
+ return result;
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'body' when calling"
+ + " completeTestFileMultipartUpload"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/synthetics/tests/{public_id}/files/multipart-upload-complete"
+ .replaceAll("\\{" + "public_id" + "\\}", apiClient.escapeString(publicId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.SyntheticsApi.completeTestFileMultipartUpload",
+ 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(
+ "POST",
+ builder,
+ localVarHeaderParams,
+ new String[] {"application/json"},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ null);
+ }
+
/**
* Create a Network Path test.
*
@@ -1795,6 +2125,342 @@ public ApiResponse getSyntheticsTestVersionWithHt
new GenericType() {});
}
+ /**
+ * Get a presigned URL for downloading a test file.
+ *
+ * See {@link #getTestFileDownloadUrlWithHttpInfo}.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (required)
+ * @return SyntheticsTestFileDownloadResponse
+ * @throws ApiException if fails to make API call
+ */
+ public SyntheticsTestFileDownloadResponse getTestFileDownloadUrl(
+ String publicId, SyntheticsTestFileDownloadRequest body) throws ApiException {
+ return getTestFileDownloadUrlWithHttpInfo(publicId, body).getData();
+ }
+
+ /**
+ * Get a presigned URL for downloading a test file.
+ *
+ *
See {@link #getTestFileDownloadUrlWithHttpInfoAsync}.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (required)
+ * @return CompletableFuture<SyntheticsTestFileDownloadResponse>
+ */
+ public CompletableFuture getTestFileDownloadUrlAsync(
+ String publicId, SyntheticsTestFileDownloadRequest body) {
+ return getTestFileDownloadUrlWithHttpInfoAsync(publicId, body)
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * Get a presigned URL to download a file attached to a Synthetic test. The returned URL is
+ * temporary and expires after a short period.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (required)
+ * @return ApiResponse<SyntheticsTestFileDownloadResponse>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+ *
+ * Response details
+ * | Status Code | Description | Response Headers |
+ * | 200 | OK | - |
+ * | 400 | API error response. | - |
+ * | 403 | Forbidden. | - |
+ * | 404 | API error response. | - |
+ * | 429 | Too many requests | - |
+ *
+ */
+ public ApiResponse getTestFileDownloadUrlWithHttpInfo(
+ String publicId, SyntheticsTestFileDownloadRequest body) throws ApiException {
+ Object localVarPostBody = body;
+
+ // verify the required parameter 'publicId' is set
+ if (publicId == null) {
+ throw new ApiException(
+ 400, "Missing the required parameter 'publicId' when calling getTestFileDownloadUrl");
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ throw new ApiException(
+ 400, "Missing the required parameter 'body' when calling getTestFileDownloadUrl");
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/synthetics/tests/{public_id}/files/download"
+ .replaceAll("\\{" + "public_id" + "\\}", apiClient.escapeString(publicId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.SyntheticsApi.getTestFileDownloadUrl",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ return apiClient.invokeAPI(
+ "POST",
+ builder,
+ localVarHeaderParams,
+ new String[] {"application/json"},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /**
+ * Get a presigned URL for downloading a test file.
+ *
+ * See {@link #getTestFileDownloadUrlWithHttpInfo}.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (required)
+ * @return CompletableFuture<ApiResponse<SyntheticsTestFileDownloadResponse>>
+ */
+ public CompletableFuture>
+ getTestFileDownloadUrlWithHttpInfoAsync(
+ String publicId, SyntheticsTestFileDownloadRequest body) {
+ Object localVarPostBody = body;
+
+ // verify the required parameter 'publicId' is set
+ if (publicId == null) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'publicId' when calling getTestFileDownloadUrl"));
+ return result;
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400, "Missing the required parameter 'body' when calling getTestFileDownloadUrl"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/synthetics/tests/{public_id}/files/download"
+ .replaceAll("\\{" + "public_id" + "\\}", apiClient.escapeString(publicId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.SyntheticsApi.getTestFileDownloadUrl",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ } catch (ApiException ex) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(ex);
+ return result;
+ }
+ return apiClient.invokeAPIAsync(
+ "POST",
+ builder,
+ localVarHeaderParams,
+ new String[] {"application/json"},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /**
+ * Get presigned URLs for uploading a test file.
+ *
+ * See {@link #getTestFileMultipartPresignedUrlsWithHttpInfo}.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (required)
+ * @return SyntheticsTestFileMultipartPresignedUrlsResponse
+ * @throws ApiException if fails to make API call
+ */
+ public SyntheticsTestFileMultipartPresignedUrlsResponse getTestFileMultipartPresignedUrls(
+ String publicId, SyntheticsTestFileMultipartPresignedUrlsRequest body) throws ApiException {
+ return getTestFileMultipartPresignedUrlsWithHttpInfo(publicId, body).getData();
+ }
+
+ /**
+ * Get presigned URLs for uploading a test file.
+ *
+ *
See {@link #getTestFileMultipartPresignedUrlsWithHttpInfoAsync}.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (required)
+ * @return CompletableFuture<SyntheticsTestFileMultipartPresignedUrlsResponse>
+ */
+ public CompletableFuture
+ getTestFileMultipartPresignedUrlsAsync(
+ String publicId, SyntheticsTestFileMultipartPresignedUrlsRequest body) {
+ return getTestFileMultipartPresignedUrlsWithHttpInfoAsync(publicId, body)
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * Get presigned URLs for uploading a file to a Synthetic test using multipart upload. Returns the
+ * presigned URLs for each part along with the bucket key that references the file.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (required)
+ * @return ApiResponse<SyntheticsTestFileMultipartPresignedUrlsResponse>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+ *
+ * Response details
+ * | Status Code | Description | Response Headers |
+ * | 200 | OK | - |
+ * | 400 | API error response. | - |
+ * | 403 | Forbidden. | - |
+ * | 404 | API error response. | - |
+ * | 429 | Too many requests | - |
+ *
+ */
+ public ApiResponse
+ getTestFileMultipartPresignedUrlsWithHttpInfo(
+ String publicId, SyntheticsTestFileMultipartPresignedUrlsRequest body)
+ throws ApiException {
+ Object localVarPostBody = body;
+
+ // verify the required parameter 'publicId' is set
+ if (publicId == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'publicId' when calling"
+ + " getTestFileMultipartPresignedUrls");
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ throw new ApiException(
+ 400,
+ "Missing the required parameter 'body' when calling getTestFileMultipartPresignedUrls");
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/synthetics/tests/{public_id}/files/multipart-presigned-urls"
+ .replaceAll("\\{" + "public_id" + "\\}", apiClient.escapeString(publicId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder =
+ apiClient.createBuilder(
+ "v2.SyntheticsApi.getTestFileMultipartPresignedUrls",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ return apiClient.invokeAPI(
+ "POST",
+ builder,
+ localVarHeaderParams,
+ new String[] {"application/json"},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
+ /**
+ * Get presigned URLs for uploading a test file.
+ *
+ * See {@link #getTestFileMultipartPresignedUrlsWithHttpInfo}.
+ *
+ * @param publicId The public ID of the Synthetic test. (required)
+ * @param body (required)
+ * @return
+ * CompletableFuture<ApiResponse<SyntheticsTestFileMultipartPresignedUrlsResponse>>
+ */
+ public CompletableFuture>
+ getTestFileMultipartPresignedUrlsWithHttpInfoAsync(
+ String publicId, SyntheticsTestFileMultipartPresignedUrlsRequest body) {
+ Object localVarPostBody = body;
+
+ // verify the required parameter 'publicId' is set
+ if (publicId == null) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'publicId' when calling"
+ + " getTestFileMultipartPresignedUrls"));
+ return result;
+ }
+
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(
+ 400,
+ "Missing the required parameter 'body' when calling"
+ + " getTestFileMultipartPresignedUrls"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/synthetics/tests/{public_id}/files/multipart-presigned-urls"
+ .replaceAll("\\{" + "public_id" + "\\}", apiClient.escapeString(publicId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
+
+ Invocation.Builder builder;
+ try {
+ builder =
+ apiClient.createBuilder(
+ "v2.SyntheticsApi.getTestFileMultipartPresignedUrls",
+ localVarPath,
+ new ArrayList(),
+ localVarHeaderParams,
+ new HashMap(),
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ } catch (ApiException ex) {
+ CompletableFuture> result =
+ new CompletableFuture<>();
+ result.completeExceptionally(ex);
+ return result;
+ }
+ return apiClient.invokeAPIAsync(
+ "POST",
+ builder,
+ localVarHeaderParams,
+ new String[] {"application/json"},
+ localVarPostBody,
+ new HashMap(),
+ false,
+ new GenericType() {});
+ }
+
/**
* Get parent suites for a test.
*
diff --git a/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileAbortMultipartUploadRequest.java b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileAbortMultipartUploadRequest.java
new file mode 100644
index 00000000000..eff6e1f915c
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileAbortMultipartUploadRequest.java
@@ -0,0 +1,177 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/** Request body for aborting a multipart file upload. */
+@JsonPropertyOrder({
+ SyntheticsTestFileAbortMultipartUploadRequest.JSON_PROPERTY_KEY,
+ SyntheticsTestFileAbortMultipartUploadRequest.JSON_PROPERTY_UPLOAD_ID
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class SyntheticsTestFileAbortMultipartUploadRequest {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_KEY = "key";
+ private String key;
+
+ public static final String JSON_PROPERTY_UPLOAD_ID = "uploadId";
+ private String uploadId;
+
+ public SyntheticsTestFileAbortMultipartUploadRequest() {}
+
+ @JsonCreator
+ public SyntheticsTestFileAbortMultipartUploadRequest(
+ @JsonProperty(required = true, value = JSON_PROPERTY_KEY) String key,
+ @JsonProperty(required = true, value = JSON_PROPERTY_UPLOAD_ID) String uploadId) {
+ this.key = key;
+ this.uploadId = uploadId;
+ }
+
+ public SyntheticsTestFileAbortMultipartUploadRequest key(String key) {
+ this.key = key;
+ return this;
+ }
+
+ /**
+ * The full storage path of the file whose upload should be aborted.
+ *
+ * @return key
+ */
+ @JsonProperty(JSON_PROPERTY_KEY)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public SyntheticsTestFileAbortMultipartUploadRequest uploadId(String uploadId) {
+ this.uploadId = uploadId;
+ return this;
+ }
+
+ /**
+ * The upload ID of the multipart upload to abort.
+ *
+ * @return uploadId
+ */
+ @JsonProperty(JSON_PROPERTY_UPLOAD_ID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getUploadId() {
+ return uploadId;
+ }
+
+ public void setUploadId(String uploadId) {
+ this.uploadId = uploadId;
+ }
+
+ /**
+ * A container for additional, undeclared properties. This is a holder for any undeclared
+ * properties as specified with the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value. If the property
+ * does not already exist, create it otherwise replace it.
+ *
+ * @param key The arbitrary key to set
+ * @param value The associated value
+ * @return SyntheticsTestFileAbortMultipartUploadRequest
+ */
+ @JsonAnySetter
+ public SyntheticsTestFileAbortMultipartUploadRequest putAdditionalProperty(
+ String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return The additional properties
+ */
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key The arbitrary key to get
+ * @return The specific additional property for the given key
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+ /** Return true if this SyntheticsTestFileAbortMultipartUploadRequest object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ SyntheticsTestFileAbortMultipartUploadRequest syntheticsTestFileAbortMultipartUploadRequest =
+ (SyntheticsTestFileAbortMultipartUploadRequest) o;
+ return Objects.equals(this.key, syntheticsTestFileAbortMultipartUploadRequest.key)
+ && Objects.equals(this.uploadId, syntheticsTestFileAbortMultipartUploadRequest.uploadId)
+ && Objects.equals(
+ this.additionalProperties,
+ syntheticsTestFileAbortMultipartUploadRequest.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(key, uploadId, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class SyntheticsTestFileAbortMultipartUploadRequest {\n");
+ sb.append(" key: ").append(toIndentedString(key)).append("\n");
+ sb.append(" uploadId: ").append(toIndentedString(uploadId)).append("\n");
+ sb.append(" additionalProperties: ")
+ .append(toIndentedString(additionalProperties))
+ .append("\n");
+ sb.append('}');
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileCompleteMultipartUploadPart.java b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileCompleteMultipartUploadPart.java
new file mode 100644
index 00000000000..0faa8451185
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileCompleteMultipartUploadPart.java
@@ -0,0 +1,177 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/** A completed part of a multipart upload. */
+@JsonPropertyOrder({
+ SyntheticsTestFileCompleteMultipartUploadPart.JSON_PROPERTY_E_TAG,
+ SyntheticsTestFileCompleteMultipartUploadPart.JSON_PROPERTY_PART_NUMBER
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class SyntheticsTestFileCompleteMultipartUploadPart {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_E_TAG = "ETag";
+ private String eTag;
+
+ public static final String JSON_PROPERTY_PART_NUMBER = "PartNumber";
+ private Long partNumber;
+
+ public SyntheticsTestFileCompleteMultipartUploadPart() {}
+
+ @JsonCreator
+ public SyntheticsTestFileCompleteMultipartUploadPart(
+ @JsonProperty(required = true, value = JSON_PROPERTY_E_TAG) String eTag,
+ @JsonProperty(required = true, value = JSON_PROPERTY_PART_NUMBER) Long partNumber) {
+ this.eTag = eTag;
+ this.partNumber = partNumber;
+ }
+
+ public SyntheticsTestFileCompleteMultipartUploadPart eTag(String eTag) {
+ this.eTag = eTag;
+ return this;
+ }
+
+ /**
+ * The ETag returned by the storage provider after uploading the part.
+ *
+ * @return eTag
+ */
+ @JsonProperty(JSON_PROPERTY_E_TAG)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getETag() {
+ return eTag;
+ }
+
+ public void setETag(String eTag) {
+ this.eTag = eTag;
+ }
+
+ public SyntheticsTestFileCompleteMultipartUploadPart partNumber(Long partNumber) {
+ this.partNumber = partNumber;
+ return this;
+ }
+
+ /**
+ * The 1-indexed part number for the multipart upload.
+ *
+ * @return partNumber
+ */
+ @JsonProperty(JSON_PROPERTY_PART_NUMBER)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public Long getPartNumber() {
+ return partNumber;
+ }
+
+ public void setPartNumber(Long partNumber) {
+ this.partNumber = partNumber;
+ }
+
+ /**
+ * A container for additional, undeclared properties. This is a holder for any undeclared
+ * properties as specified with the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value. If the property
+ * does not already exist, create it otherwise replace it.
+ *
+ * @param key The arbitrary key to set
+ * @param value The associated value
+ * @return SyntheticsTestFileCompleteMultipartUploadPart
+ */
+ @JsonAnySetter
+ public SyntheticsTestFileCompleteMultipartUploadPart putAdditionalProperty(
+ String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return The additional properties
+ */
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key The arbitrary key to get
+ * @return The specific additional property for the given key
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+ /** Return true if this SyntheticsTestFileCompleteMultipartUploadPart object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ SyntheticsTestFileCompleteMultipartUploadPart syntheticsTestFileCompleteMultipartUploadPart =
+ (SyntheticsTestFileCompleteMultipartUploadPart) o;
+ return Objects.equals(this.eTag, syntheticsTestFileCompleteMultipartUploadPart.eTag)
+ && Objects.equals(this.partNumber, syntheticsTestFileCompleteMultipartUploadPart.partNumber)
+ && Objects.equals(
+ this.additionalProperties,
+ syntheticsTestFileCompleteMultipartUploadPart.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(eTag, partNumber, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class SyntheticsTestFileCompleteMultipartUploadPart {\n");
+ sb.append(" eTag: ").append(toIndentedString(eTag)).append("\n");
+ sb.append(" partNumber: ").append(toIndentedString(partNumber)).append("\n");
+ sb.append(" additionalProperties: ")
+ .append(toIndentedString(additionalProperties))
+ .append("\n");
+ sb.append('}');
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileCompleteMultipartUploadRequest.java b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileCompleteMultipartUploadRequest.java
new file mode 100644
index 00000000000..561d37f0369
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileCompleteMultipartUploadRequest.java
@@ -0,0 +1,220 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/** Request body for completing a multipart file upload. */
+@JsonPropertyOrder({
+ SyntheticsTestFileCompleteMultipartUploadRequest.JSON_PROPERTY_KEY,
+ SyntheticsTestFileCompleteMultipartUploadRequest.JSON_PROPERTY_PARTS,
+ SyntheticsTestFileCompleteMultipartUploadRequest.JSON_PROPERTY_UPLOAD_ID
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class SyntheticsTestFileCompleteMultipartUploadRequest {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_KEY = "key";
+ private String key;
+
+ public static final String JSON_PROPERTY_PARTS = "parts";
+ private List parts = new ArrayList<>();
+
+ public static final String JSON_PROPERTY_UPLOAD_ID = "uploadId";
+ private String uploadId;
+
+ public SyntheticsTestFileCompleteMultipartUploadRequest() {}
+
+ @JsonCreator
+ public SyntheticsTestFileCompleteMultipartUploadRequest(
+ @JsonProperty(required = true, value = JSON_PROPERTY_KEY) String key,
+ @JsonProperty(required = true, value = JSON_PROPERTY_PARTS)
+ List parts,
+ @JsonProperty(required = true, value = JSON_PROPERTY_UPLOAD_ID) String uploadId) {
+ this.key = key;
+ this.parts = parts;
+ this.uploadId = uploadId;
+ }
+
+ public SyntheticsTestFileCompleteMultipartUploadRequest key(String key) {
+ this.key = key;
+ return this;
+ }
+
+ /**
+ * The full storage path for the uploaded file.
+ *
+ * @return key
+ */
+ @JsonProperty(JSON_PROPERTY_KEY)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public SyntheticsTestFileCompleteMultipartUploadRequest parts(
+ List parts) {
+ this.parts = parts;
+ for (SyntheticsTestFileCompleteMultipartUploadPart item : parts) {
+ this.unparsed |= item.unparsed;
+ }
+ return this;
+ }
+
+ public SyntheticsTestFileCompleteMultipartUploadRequest addPartsItem(
+ SyntheticsTestFileCompleteMultipartUploadPart partsItem) {
+ this.parts.add(partsItem);
+ this.unparsed |= partsItem.unparsed;
+ return this;
+ }
+
+ /**
+ * Array of completed parts with their ETags.
+ *
+ * @return parts
+ */
+ @JsonProperty(JSON_PROPERTY_PARTS)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public List getParts() {
+ return parts;
+ }
+
+ public void setParts(List parts) {
+ this.parts = parts;
+ }
+
+ public SyntheticsTestFileCompleteMultipartUploadRequest uploadId(String uploadId) {
+ this.uploadId = uploadId;
+ return this;
+ }
+
+ /**
+ * The upload ID returned when the multipart upload was initiated.
+ *
+ * @return uploadId
+ */
+ @JsonProperty(JSON_PROPERTY_UPLOAD_ID)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getUploadId() {
+ return uploadId;
+ }
+
+ public void setUploadId(String uploadId) {
+ this.uploadId = uploadId;
+ }
+
+ /**
+ * A container for additional, undeclared properties. This is a holder for any undeclared
+ * properties as specified with the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value. If the property
+ * does not already exist, create it otherwise replace it.
+ *
+ * @param key The arbitrary key to set
+ * @param value The associated value
+ * @return SyntheticsTestFileCompleteMultipartUploadRequest
+ */
+ @JsonAnySetter
+ public SyntheticsTestFileCompleteMultipartUploadRequest putAdditionalProperty(
+ String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return The additional properties
+ */
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key The arbitrary key to get
+ * @return The specific additional property for the given key
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+ /** Return true if this SyntheticsTestFileCompleteMultipartUploadRequest object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ SyntheticsTestFileCompleteMultipartUploadRequest
+ syntheticsTestFileCompleteMultipartUploadRequest =
+ (SyntheticsTestFileCompleteMultipartUploadRequest) o;
+ return Objects.equals(this.key, syntheticsTestFileCompleteMultipartUploadRequest.key)
+ && Objects.equals(this.parts, syntheticsTestFileCompleteMultipartUploadRequest.parts)
+ && Objects.equals(this.uploadId, syntheticsTestFileCompleteMultipartUploadRequest.uploadId)
+ && Objects.equals(
+ this.additionalProperties,
+ syntheticsTestFileCompleteMultipartUploadRequest.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(key, parts, uploadId, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class SyntheticsTestFileCompleteMultipartUploadRequest {\n");
+ sb.append(" key: ").append(toIndentedString(key)).append("\n");
+ sb.append(" parts: ").append(toIndentedString(parts)).append("\n");
+ sb.append(" uploadId: ").append(toIndentedString(uploadId)).append("\n");
+ sb.append(" additionalProperties: ")
+ .append(toIndentedString(additionalProperties))
+ .append("\n");
+ sb.append('}');
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileDownloadRequest.java b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileDownloadRequest.java
new file mode 100644
index 00000000000..2e9d7c9b570
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileDownloadRequest.java
@@ -0,0 +1,145 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/** Request body for getting a presigned download URL for a test file. */
+@JsonPropertyOrder({SyntheticsTestFileDownloadRequest.JSON_PROPERTY_BUCKET_KEY})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class SyntheticsTestFileDownloadRequest {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_BUCKET_KEY = "bucketKey";
+ private String bucketKey;
+
+ public SyntheticsTestFileDownloadRequest() {}
+
+ @JsonCreator
+ public SyntheticsTestFileDownloadRequest(
+ @JsonProperty(required = true, value = JSON_PROPERTY_BUCKET_KEY) String bucketKey) {
+ this.bucketKey = bucketKey;
+ }
+
+ public SyntheticsTestFileDownloadRequest bucketKey(String bucketKey) {
+ this.bucketKey = bucketKey;
+ return this;
+ }
+
+ /**
+ * The bucket key referencing the file to download.
+ *
+ * @return bucketKey
+ */
+ @JsonProperty(JSON_PROPERTY_BUCKET_KEY)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getBucketKey() {
+ return bucketKey;
+ }
+
+ public void setBucketKey(String bucketKey) {
+ this.bucketKey = bucketKey;
+ }
+
+ /**
+ * A container for additional, undeclared properties. This is a holder for any undeclared
+ * properties as specified with the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value. If the property
+ * does not already exist, create it otherwise replace it.
+ *
+ * @param key The arbitrary key to set
+ * @param value The associated value
+ * @return SyntheticsTestFileDownloadRequest
+ */
+ @JsonAnySetter
+ public SyntheticsTestFileDownloadRequest putAdditionalProperty(String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return The additional properties
+ */
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key The arbitrary key to get
+ * @return The specific additional property for the given key
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+ /** Return true if this SyntheticsTestFileDownloadRequest object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ SyntheticsTestFileDownloadRequest syntheticsTestFileDownloadRequest =
+ (SyntheticsTestFileDownloadRequest) o;
+ return Objects.equals(this.bucketKey, syntheticsTestFileDownloadRequest.bucketKey)
+ && Objects.equals(
+ this.additionalProperties, syntheticsTestFileDownloadRequest.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(bucketKey, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class SyntheticsTestFileDownloadRequest {\n");
+ sb.append(" bucketKey: ").append(toIndentedString(bucketKey)).append("\n");
+ sb.append(" additionalProperties: ")
+ .append(toIndentedString(additionalProperties))
+ .append("\n");
+ sb.append('}');
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileDownloadResponse.java b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileDownloadResponse.java
new file mode 100644
index 00000000000..7aea1304400
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileDownloadResponse.java
@@ -0,0 +1,137 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/** Response containing a presigned URL for downloading a test file. */
+@JsonPropertyOrder({SyntheticsTestFileDownloadResponse.JSON_PROPERTY_URL})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class SyntheticsTestFileDownloadResponse {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_URL = "url";
+ private String url;
+
+ public SyntheticsTestFileDownloadResponse url(String url) {
+ this.url = url;
+ return this;
+ }
+
+ /**
+ * A presigned URL to download the file. The URL expires after a short period.
+ *
+ * @return url
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_URL)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ /**
+ * A container for additional, undeclared properties. This is a holder for any undeclared
+ * properties as specified with the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value. If the property
+ * does not already exist, create it otherwise replace it.
+ *
+ * @param key The arbitrary key to set
+ * @param value The associated value
+ * @return SyntheticsTestFileDownloadResponse
+ */
+ @JsonAnySetter
+ public SyntheticsTestFileDownloadResponse putAdditionalProperty(String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return The additional properties
+ */
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key The arbitrary key to get
+ * @return The specific additional property for the given key
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+ /** Return true if this SyntheticsTestFileDownloadResponse object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ SyntheticsTestFileDownloadResponse syntheticsTestFileDownloadResponse =
+ (SyntheticsTestFileDownloadResponse) o;
+ return Objects.equals(this.url, syntheticsTestFileDownloadResponse.url)
+ && Objects.equals(
+ this.additionalProperties, syntheticsTestFileDownloadResponse.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(url, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class SyntheticsTestFileDownloadResponse {\n");
+ sb.append(" url: ").append(toIndentedString(url)).append("\n");
+ sb.append(" additionalProperties: ")
+ .append(toIndentedString(additionalProperties))
+ .append("\n");
+ sb.append('}');
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileMultipartPresignedUrlsParams.java b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileMultipartPresignedUrlsParams.java
new file mode 100644
index 00000000000..be947e23206
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileMultipartPresignedUrlsParams.java
@@ -0,0 +1,203 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/** Presigned URL parameters returned for a multipart upload. */
+@JsonPropertyOrder({
+ SyntheticsTestFileMultipartPresignedUrlsParams.JSON_PROPERTY_KEY,
+ SyntheticsTestFileMultipartPresignedUrlsParams.JSON_PROPERTY_UPLOAD_ID,
+ SyntheticsTestFileMultipartPresignedUrlsParams.JSON_PROPERTY_URLS
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class SyntheticsTestFileMultipartPresignedUrlsParams {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_KEY = "key";
+ private String key;
+
+ public static final String JSON_PROPERTY_UPLOAD_ID = "upload_id";
+ private String uploadId;
+
+ public static final String JSON_PROPERTY_URLS = "urls";
+ private Map urls = null;
+
+ public SyntheticsTestFileMultipartPresignedUrlsParams key(String key) {
+ this.key = key;
+ return this;
+ }
+
+ /**
+ * The full storage path for the file being uploaded.
+ *
+ * @return key
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_KEY)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public SyntheticsTestFileMultipartPresignedUrlsParams uploadId(String uploadId) {
+ this.uploadId = uploadId;
+ return this;
+ }
+
+ /**
+ * The upload ID assigned by the storage provider for this multipart upload.
+ *
+ * @return uploadId
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_UPLOAD_ID)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getUploadId() {
+ return uploadId;
+ }
+
+ public void setUploadId(String uploadId) {
+ this.uploadId = uploadId;
+ }
+
+ public SyntheticsTestFileMultipartPresignedUrlsParams urls(Map urls) {
+ this.urls = urls;
+ return this;
+ }
+
+ public SyntheticsTestFileMultipartPresignedUrlsParams putUrlsItem(String key, String urlsItem) {
+ if (this.urls == null) {
+ this.urls = new HashMap<>();
+ }
+ this.urls.put(key, urlsItem);
+ return this;
+ }
+
+ /**
+ * A map of part numbers to presigned upload URLs.
+ *
+ * @return urls
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_URLS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public Map getUrls() {
+ return urls;
+ }
+
+ public void setUrls(Map urls) {
+ this.urls = urls;
+ }
+
+ /**
+ * A container for additional, undeclared properties. This is a holder for any undeclared
+ * properties as specified with the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value. If the property
+ * does not already exist, create it otherwise replace it.
+ *
+ * @param key The arbitrary key to set
+ * @param value The associated value
+ * @return SyntheticsTestFileMultipartPresignedUrlsParams
+ */
+ @JsonAnySetter
+ public SyntheticsTestFileMultipartPresignedUrlsParams putAdditionalProperty(
+ String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return The additional properties
+ */
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key The arbitrary key to get
+ * @return The specific additional property for the given key
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+ /** Return true if this SyntheticsTestFileMultipartPresignedUrlsParams object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ SyntheticsTestFileMultipartPresignedUrlsParams syntheticsTestFileMultipartPresignedUrlsParams =
+ (SyntheticsTestFileMultipartPresignedUrlsParams) o;
+ return Objects.equals(this.key, syntheticsTestFileMultipartPresignedUrlsParams.key)
+ && Objects.equals(this.uploadId, syntheticsTestFileMultipartPresignedUrlsParams.uploadId)
+ && Objects.equals(this.urls, syntheticsTestFileMultipartPresignedUrlsParams.urls)
+ && Objects.equals(
+ this.additionalProperties,
+ syntheticsTestFileMultipartPresignedUrlsParams.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(key, uploadId, urls, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class SyntheticsTestFileMultipartPresignedUrlsParams {\n");
+ sb.append(" key: ").append(toIndentedString(key)).append("\n");
+ sb.append(" uploadId: ").append(toIndentedString(uploadId)).append("\n");
+ sb.append(" urls: ").append(toIndentedString(urls)).append("\n");
+ sb.append(" additionalProperties: ")
+ .append(toIndentedString(additionalProperties))
+ .append("\n");
+ sb.append('}');
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileMultipartPresignedUrlsPart.java b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileMultipartPresignedUrlsPart.java
new file mode 100644
index 00000000000..ac5f825fd1e
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileMultipartPresignedUrlsPart.java
@@ -0,0 +1,177 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/** A part descriptor for initiating a multipart upload. */
+@JsonPropertyOrder({
+ SyntheticsTestFileMultipartPresignedUrlsPart.JSON_PROPERTY_MD5,
+ SyntheticsTestFileMultipartPresignedUrlsPart.JSON_PROPERTY_PART_NUMBER
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class SyntheticsTestFileMultipartPresignedUrlsPart {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_MD5 = "md5";
+ private String md5;
+
+ public static final String JSON_PROPERTY_PART_NUMBER = "partNumber";
+ private Long partNumber;
+
+ public SyntheticsTestFileMultipartPresignedUrlsPart() {}
+
+ @JsonCreator
+ public SyntheticsTestFileMultipartPresignedUrlsPart(
+ @JsonProperty(required = true, value = JSON_PROPERTY_MD5) String md5,
+ @JsonProperty(required = true, value = JSON_PROPERTY_PART_NUMBER) Long partNumber) {
+ this.md5 = md5;
+ this.partNumber = partNumber;
+ }
+
+ public SyntheticsTestFileMultipartPresignedUrlsPart md5(String md5) {
+ this.md5 = md5;
+ return this;
+ }
+
+ /**
+ * Base64-encoded MD5 digest of the part content.
+ *
+ * @return md5
+ */
+ @JsonProperty(JSON_PROPERTY_MD5)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public String getMd5() {
+ return md5;
+ }
+
+ public void setMd5(String md5) {
+ this.md5 = md5;
+ }
+
+ public SyntheticsTestFileMultipartPresignedUrlsPart partNumber(Long partNumber) {
+ this.partNumber = partNumber;
+ return this;
+ }
+
+ /**
+ * The 1-indexed part number for the multipart upload.
+ *
+ * @return partNumber
+ */
+ @JsonProperty(JSON_PROPERTY_PART_NUMBER)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public Long getPartNumber() {
+ return partNumber;
+ }
+
+ public void setPartNumber(Long partNumber) {
+ this.partNumber = partNumber;
+ }
+
+ /**
+ * A container for additional, undeclared properties. This is a holder for any undeclared
+ * properties as specified with the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value. If the property
+ * does not already exist, create it otherwise replace it.
+ *
+ * @param key The arbitrary key to set
+ * @param value The associated value
+ * @return SyntheticsTestFileMultipartPresignedUrlsPart
+ */
+ @JsonAnySetter
+ public SyntheticsTestFileMultipartPresignedUrlsPart putAdditionalProperty(
+ String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return The additional properties
+ */
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key The arbitrary key to get
+ * @return The specific additional property for the given key
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+ /** Return true if this SyntheticsTestFileMultipartPresignedUrlsPart object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ SyntheticsTestFileMultipartPresignedUrlsPart syntheticsTestFileMultipartPresignedUrlsPart =
+ (SyntheticsTestFileMultipartPresignedUrlsPart) o;
+ return Objects.equals(this.md5, syntheticsTestFileMultipartPresignedUrlsPart.md5)
+ && Objects.equals(this.partNumber, syntheticsTestFileMultipartPresignedUrlsPart.partNumber)
+ && Objects.equals(
+ this.additionalProperties,
+ syntheticsTestFileMultipartPresignedUrlsPart.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(md5, partNumber, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class SyntheticsTestFileMultipartPresignedUrlsPart {\n");
+ sb.append(" md5: ").append(toIndentedString(md5)).append("\n");
+ sb.append(" partNumber: ").append(toIndentedString(partNumber)).append("\n");
+ sb.append(" additionalProperties: ")
+ .append(toIndentedString(additionalProperties))
+ .append("\n");
+ sb.append('}');
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileMultipartPresignedUrlsRequest.java b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileMultipartPresignedUrlsRequest.java
new file mode 100644
index 00000000000..8ba9cd00cde
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileMultipartPresignedUrlsRequest.java
@@ -0,0 +1,201 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/** Request body for getting presigned URLs for a multipart file upload. */
+@JsonPropertyOrder({
+ SyntheticsTestFileMultipartPresignedUrlsRequest.JSON_PROPERTY_BUCKET_KEY_PREFIX,
+ SyntheticsTestFileMultipartPresignedUrlsRequest.JSON_PROPERTY_PARTS
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class SyntheticsTestFileMultipartPresignedUrlsRequest {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_BUCKET_KEY_PREFIX = "bucketKeyPrefix";
+ private SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix bucketKeyPrefix;
+
+ public static final String JSON_PROPERTY_PARTS = "parts";
+ private List parts = new ArrayList<>();
+
+ public SyntheticsTestFileMultipartPresignedUrlsRequest() {}
+
+ @JsonCreator
+ public SyntheticsTestFileMultipartPresignedUrlsRequest(
+ @JsonProperty(required = true, value = JSON_PROPERTY_BUCKET_KEY_PREFIX)
+ SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix bucketKeyPrefix,
+ @JsonProperty(required = true, value = JSON_PROPERTY_PARTS)
+ List parts) {
+ this.bucketKeyPrefix = bucketKeyPrefix;
+ this.unparsed |= !bucketKeyPrefix.isValid();
+ this.parts = parts;
+ }
+
+ public SyntheticsTestFileMultipartPresignedUrlsRequest bucketKeyPrefix(
+ SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix bucketKeyPrefix) {
+ this.bucketKeyPrefix = bucketKeyPrefix;
+ this.unparsed |= !bucketKeyPrefix.isValid();
+ return this;
+ }
+
+ /**
+ * The bucket key prefix indicating the type of file upload.
+ *
+ * @return bucketKeyPrefix
+ */
+ @JsonProperty(JSON_PROPERTY_BUCKET_KEY_PREFIX)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix getBucketKeyPrefix() {
+ return bucketKeyPrefix;
+ }
+
+ public void setBucketKeyPrefix(
+ SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix bucketKeyPrefix) {
+ if (!bucketKeyPrefix.isValid()) {
+ this.unparsed = true;
+ }
+ this.bucketKeyPrefix = bucketKeyPrefix;
+ }
+
+ public SyntheticsTestFileMultipartPresignedUrlsRequest parts(
+ List parts) {
+ this.parts = parts;
+ for (SyntheticsTestFileMultipartPresignedUrlsPart item : parts) {
+ this.unparsed |= item.unparsed;
+ }
+ return this;
+ }
+
+ public SyntheticsTestFileMultipartPresignedUrlsRequest addPartsItem(
+ SyntheticsTestFileMultipartPresignedUrlsPart partsItem) {
+ this.parts.add(partsItem);
+ this.unparsed |= partsItem.unparsed;
+ return this;
+ }
+
+ /**
+ * Array of part descriptors for the multipart upload.
+ *
+ * @return parts
+ */
+ @JsonProperty(JSON_PROPERTY_PARTS)
+ @JsonInclude(value = JsonInclude.Include.ALWAYS)
+ public List getParts() {
+ return parts;
+ }
+
+ public void setParts(List parts) {
+ this.parts = parts;
+ }
+
+ /**
+ * A container for additional, undeclared properties. This is a holder for any undeclared
+ * properties as specified with the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value. If the property
+ * does not already exist, create it otherwise replace it.
+ *
+ * @param key The arbitrary key to set
+ * @param value The associated value
+ * @return SyntheticsTestFileMultipartPresignedUrlsRequest
+ */
+ @JsonAnySetter
+ public SyntheticsTestFileMultipartPresignedUrlsRequest putAdditionalProperty(
+ String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return The additional properties
+ */
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key The arbitrary key to get
+ * @return The specific additional property for the given key
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+ /** Return true if this SyntheticsTestFileMultipartPresignedUrlsRequest object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ SyntheticsTestFileMultipartPresignedUrlsRequest
+ syntheticsTestFileMultipartPresignedUrlsRequest =
+ (SyntheticsTestFileMultipartPresignedUrlsRequest) o;
+ return Objects.equals(
+ this.bucketKeyPrefix, syntheticsTestFileMultipartPresignedUrlsRequest.bucketKeyPrefix)
+ && Objects.equals(this.parts, syntheticsTestFileMultipartPresignedUrlsRequest.parts)
+ && Objects.equals(
+ this.additionalProperties,
+ syntheticsTestFileMultipartPresignedUrlsRequest.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(bucketKeyPrefix, parts, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class SyntheticsTestFileMultipartPresignedUrlsRequest {\n");
+ sb.append(" bucketKeyPrefix: ").append(toIndentedString(bucketKeyPrefix)).append("\n");
+ sb.append(" parts: ").append(toIndentedString(parts)).append("\n");
+ sb.append(" additionalProperties: ")
+ .append(toIndentedString(additionalProperties))
+ .append("\n");
+ sb.append('}');
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix.java b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix.java
new file mode 100644
index 00000000000..80f9e93674f
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix.java
@@ -0,0 +1,70 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.datadog.api.client.ModelEnum;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/** The bucket key prefix indicating the type of file upload. */
+@JsonSerialize(
+ using =
+ SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix
+ .SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefixSerializer.class)
+public class SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix
+ extends ModelEnum {
+
+ private static final Set allowedValues =
+ new HashSet(Arrays.asList("api-upload-file", "browser-upload-file-step"));
+
+ public static final SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix
+ API_UPLOAD_FILE =
+ new SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix("api-upload-file");
+ public static final SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix
+ BROWSER_UPLOAD_FILE_STEP =
+ new SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix(
+ "browser-upload-file-step");
+
+ SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix(String value) {
+ super(value, allowedValues);
+ }
+
+ public static class SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefixSerializer
+ extends StdSerializer {
+ public SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefixSerializer(
+ Class t) {
+ super(t);
+ }
+
+ public SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefixSerializer() {
+ this(null);
+ }
+
+ @Override
+ public void serialize(
+ SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix value,
+ JsonGenerator jgen,
+ SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+ jgen.writeObject(value.value);
+ }
+ }
+
+ @JsonCreator
+ public static SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix fromValue(
+ String value) {
+ return new SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix(value);
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileMultipartPresignedUrlsResponse.java b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileMultipartPresignedUrlsResponse.java
new file mode 100644
index 00000000000..9e93e52990f
--- /dev/null
+++ b/src/main/java/com/datadog/api/client/v2/model/SyntheticsTestFileMultipartPresignedUrlsResponse.java
@@ -0,0 +1,178 @@
+/*
+ * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
+ * This product includes software developed at Datadog (https://www.datadoghq.com/).
+ * Copyright 2019-Present Datadog, Inc.
+ */
+
+package com.datadog.api.client.v2.model;
+
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/** Response containing presigned URLs for multipart file upload and the bucket key. */
+@JsonPropertyOrder({
+ SyntheticsTestFileMultipartPresignedUrlsResponse.JSON_PROPERTY_BUCKET_KEY,
+ SyntheticsTestFileMultipartPresignedUrlsResponse.JSON_PROPERTY_MULTIPART_PRESIGNED_URLS_PARAMS
+})
+@jakarta.annotation.Generated(
+ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
+public class SyntheticsTestFileMultipartPresignedUrlsResponse {
+ @JsonIgnore public boolean unparsed = false;
+ public static final String JSON_PROPERTY_BUCKET_KEY = "bucketKey";
+ private String bucketKey;
+
+ public static final String JSON_PROPERTY_MULTIPART_PRESIGNED_URLS_PARAMS =
+ "multipart_presigned_urls_params";
+ private SyntheticsTestFileMultipartPresignedUrlsParams multipartPresignedUrlsParams;
+
+ public SyntheticsTestFileMultipartPresignedUrlsResponse bucketKey(String bucketKey) {
+ this.bucketKey = bucketKey;
+ return this;
+ }
+
+ /**
+ * The bucket key that references the uploaded file after completion.
+ *
+ * @return bucketKey
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_BUCKET_KEY)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public String getBucketKey() {
+ return bucketKey;
+ }
+
+ public void setBucketKey(String bucketKey) {
+ this.bucketKey = bucketKey;
+ }
+
+ public SyntheticsTestFileMultipartPresignedUrlsResponse multipartPresignedUrlsParams(
+ SyntheticsTestFileMultipartPresignedUrlsParams multipartPresignedUrlsParams) {
+ this.multipartPresignedUrlsParams = multipartPresignedUrlsParams;
+ this.unparsed |= multipartPresignedUrlsParams.unparsed;
+ return this;
+ }
+
+ /**
+ * Presigned URL parameters returned for a multipart upload.
+ *
+ * @return multipartPresignedUrlsParams
+ */
+ @jakarta.annotation.Nullable
+ @JsonProperty(JSON_PROPERTY_MULTIPART_PRESIGNED_URLS_PARAMS)
+ @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+ public SyntheticsTestFileMultipartPresignedUrlsParams getMultipartPresignedUrlsParams() {
+ return multipartPresignedUrlsParams;
+ }
+
+ public void setMultipartPresignedUrlsParams(
+ SyntheticsTestFileMultipartPresignedUrlsParams multipartPresignedUrlsParams) {
+ this.multipartPresignedUrlsParams = multipartPresignedUrlsParams;
+ }
+
+ /**
+ * A container for additional, undeclared properties. This is a holder for any undeclared
+ * properties as specified with the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value. If the property
+ * does not already exist, create it otherwise replace it.
+ *
+ * @param key The arbitrary key to set
+ * @param value The associated value
+ * @return SyntheticsTestFileMultipartPresignedUrlsResponse
+ */
+ @JsonAnySetter
+ public SyntheticsTestFileMultipartPresignedUrlsResponse putAdditionalProperty(
+ String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ *
+ * @return The additional properties
+ */
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ *
+ * @param key The arbitrary key to get
+ * @return The specific additional property for the given key
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+ /** Return true if this SyntheticsTestFileMultipartPresignedUrlsResponse object is equal to o. */
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ SyntheticsTestFileMultipartPresignedUrlsResponse
+ syntheticsTestFileMultipartPresignedUrlsResponse =
+ (SyntheticsTestFileMultipartPresignedUrlsResponse) o;
+ return Objects.equals(
+ this.bucketKey, syntheticsTestFileMultipartPresignedUrlsResponse.bucketKey)
+ && Objects.equals(
+ this.multipartPresignedUrlsParams,
+ syntheticsTestFileMultipartPresignedUrlsResponse.multipartPresignedUrlsParams)
+ && Objects.equals(
+ this.additionalProperties,
+ syntheticsTestFileMultipartPresignedUrlsResponse.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(bucketKey, multipartPresignedUrlsParams, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class SyntheticsTestFileMultipartPresignedUrlsResponse {\n");
+ sb.append(" bucketKey: ").append(toIndentedString(bucketKey)).append("\n");
+ sb.append(" multipartPresignedUrlsParams: ")
+ .append(toIndentedString(multipartPresignedUrlsParams))
+ .append("\n");
+ sb.append(" additionalProperties: ")
+ .append(toIndentedString(additionalProperties))
+ .append("\n");
+ sb.append('}');
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
diff --git a/src/test/resources/com/datadog/api/client/v2/api/synthetics.feature b/src/test/resources/com/datadog/api/client/v2/api/synthetics.feature
index 8ed9b98adf4..2cdf9231fbc 100644
--- a/src/test/resources/com/datadog/api/client/v2/api/synthetics.feature
+++ b/src/test/resources/com/datadog/api/client/v2/api/synthetics.feature
@@ -17,6 +17,22 @@ Feature: Synthetics
And a valid "appKeyAuth" key in the system
And an instance of "Synthetics" API
+ @generated @skip @team:DataDog/synthetics-managing
+ Scenario: Abort a multipart upload of a test file returns "API error response." response
+ Given new "AbortTestFileMultipartUpload" request
+ And request contains "public_id" parameter from "REPLACE.ME"
+ And body with value {"key": "org-123/api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json", "uploadId": "upload-id-abc123"}
+ When the request is sent
+ Then the response status is 404 API error response.
+
+ @generated @skip @team:DataDog/synthetics-managing
+ Scenario: Abort a multipart upload of a test file returns "No Content" response
+ Given new "AbortTestFileMultipartUpload" request
+ And request contains "public_id" parameter from "REPLACE.ME"
+ And body with value {"key": "org-123/api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json", "uploadId": "upload-id-abc123"}
+ When the request is sent
+ Then the response status is 204 No Content
+
@generated @skip @team:DataDog/synthetics-managing
Scenario: Bulk delete suites returns "API error response." response
Given new "DeleteSyntheticsSuites" request
@@ -45,6 +61,22 @@ Feature: Synthetics
When the request is sent
Then the response status is 200 OK
+ @generated @skip @team:DataDog/synthetics-managing
+ Scenario: Complete a multipart upload of a test file returns "API error response." response
+ Given new "CompleteTestFileMultipartUpload" request
+ And request contains "public_id" parameter from "REPLACE.ME"
+ And body with value {"key": "org-123/api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json", "parts": [{"ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"", "PartNumber": 1}], "uploadId": "upload-id-abc123"}
+ When the request is sent
+ Then the response status is 404 API error response.
+
+ @generated @skip @team:DataDog/synthetics-managing
+ Scenario: Complete a multipart upload of a test file returns "No Content" response
+ Given new "CompleteTestFileMultipartUpload" request
+ And request contains "public_id" parameter from "REPLACE.ME"
+ And body with value {"key": "org-123/api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json", "parts": [{"ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"", "PartNumber": 1}], "uploadId": "upload-id-abc123"}
+ When the request is sent
+ Then the response status is 204 No Content
+
@generated @skip @team:DataDog/synthetics-managing
Scenario: Create a Network Path test returns "API error response." response
Given new "CreateSyntheticsNetworkTest" request
@@ -133,6 +165,22 @@ Feature: Synthetics
When the request is sent
Then the response status is 200 OK
+ @generated @skip @team:DataDog/synthetics-managing
+ Scenario: Get a presigned URL for downloading a test file returns "API error response." response
+ Given new "GetTestFileDownloadUrl" request
+ And request contains "public_id" parameter from "REPLACE.ME"
+ And body with value {"bucketKey": "api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json"}
+ When the request is sent
+ Then the response status is 404 API error response.
+
+ @generated @skip @team:DataDog/synthetics-managing
+ Scenario: Get a presigned URL for downloading a test file returns "OK" response
+ Given new "GetTestFileDownloadUrl" request
+ And request contains "public_id" parameter from "REPLACE.ME"
+ And body with value {"bucketKey": "api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json"}
+ When the request is sent
+ Then the response status is 200 OK
+
@generated @skip @team:DataDog/synthetics-managing
Scenario: Get a specific version of a test returns "API error response." response
Given new "GetSyntheticsTestVersion" request
@@ -198,6 +246,22 @@ Feature: Synthetics
When the request is sent
Then the response status is 200 OK
+ @generated @skip @team:DataDog/synthetics-managing
+ Scenario: Get presigned URLs for uploading a test file returns "API error response." response
+ Given new "GetTestFileMultipartPresignedUrls" request
+ And request contains "public_id" parameter from "REPLACE.ME"
+ And body with value {"bucketKeyPrefix": "api-upload-file", "parts": [{"md5": "1B2M2Y8AsgTpgAmY7PhCfg==", "partNumber": 1}]}
+ When the request is sent
+ Then the response status is 404 API error response.
+
+ @generated @skip @team:DataDog/synthetics-managing
+ Scenario: Get presigned URLs for uploading a test file returns "OK" response
+ Given new "GetTestFileMultipartPresignedUrls" request
+ And request contains "public_id" parameter from "REPLACE.ME"
+ And body with value {"bucketKeyPrefix": "api-upload-file", "parts": [{"md5": "1B2M2Y8AsgTpgAmY7PhCfg==", "partNumber": 1}]}
+ When the request is sent
+ Then the response status is 200 OK
+
@team:DataDog/synthetics-managing
Scenario: Get the on-demand concurrency cap returns "OK" response
Given new "GetOnDemandConcurrencyCap" 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 dcdc0219f9c..29b9dc1ab27 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
@@ -5913,6 +5913,30 @@
"type": "idempotent"
}
},
+ "GetTestFileDownloadUrl": {
+ "tag": "Synthetics",
+ "undo": {
+ "type": "safe"
+ }
+ },
+ "GetTestFileMultipartPresignedUrls": {
+ "tag": "Synthetics",
+ "undo": {
+ "type": "safe"
+ }
+ },
+ "AbortTestFileMultipartUpload": {
+ "tag": "Synthetics",
+ "undo": {
+ "type": "safe"
+ }
+ },
+ "CompleteTestFileMultipartUpload": {
+ "tag": "Synthetics",
+ "undo": {
+ "type": "safe"
+ }
+ },
"GetTestParentSuites": {
"tag": "Synthetics",
"undo": {