Get presigned URLs for uploading a test file

POST https://api.ap1.datadoghq.com/api/v2/synthetics/tests/{public_id}/files/multipart-presigned-urlshttps://api.ap2.datadoghq.com/api/v2/synthetics/tests/{public_id}/files/multipart-presigned-urlshttps://api.datadoghq.eu/api/v2/synthetics/tests/{public_id}/files/multipart-presigned-urlshttps://api.ddog-gov.com/api/v2/synthetics/tests/{public_id}/files/multipart-presigned-urlshttps://api.us2.ddog-gov.com/api/v2/synthetics/tests/{public_id}/files/multipart-presigned-urlshttps://api.datadoghq.com/api/v2/synthetics/tests/{public_id}/files/multipart-presigned-urlshttps://api.us3.datadoghq.com/api/v2/synthetics/tests/{public_id}/files/multipart-presigned-urlshttps://api.us5.datadoghq.com/api/v2/synthetics/tests/{public_id}/files/multipart-presigned-urls

Overview

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. This endpoint requires any of the following permissions:

  • synthetics_write
  • synthetics_create_edit_trigger

  • OAuth apps require the synthetics_write authorization scope to access this endpoint.

    Arguments

    Path Parameters

    Name

    Type

    Description

    public_id [required]

    string

    The public ID of the Synthetic test.

    Request

    Body Data (required)

    Expand All

    Field

    Type

    Description

    bucketKeyPrefix [required]

    enum

    The bucket key prefix indicating the type of file upload. Allowed enum values: api-upload-file,browser-upload-file-step

    parts [required]

    [object]

    Array of part descriptors for the multipart upload.

    md5 [required]

    string

    Base64-encoded MD5 digest of the part content.

    partNumber [required]

    int64

    The 1-indexed part number for the multipart upload.

    {
      "bucketKeyPrefix": "api-upload-file",
      "parts": [
        {
          "md5": "1B2M2Y8AsgTpgAmY7PhCfg==",
          "partNumber": 1
        }
      ]
    }

    Response

    OK

    Response containing presigned URLs for multipart file upload and the bucket key.

    Expand All

    Field

    Type

    Description

    bucketKey

    string

    The bucket key that references the uploaded file after completion.

    multipart_presigned_urls_params

    object

    Presigned URL parameters returned for a multipart upload.

    key

    string

    The full storage path for the file being uploaded.

    upload_id

    string

    The upload ID assigned by the storage provider for this multipart upload.

    urls

    object

    A map of part numbers to presigned upload URLs.

    <any-key>

    string

    {
      "bucketKey": "api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json",
      "multipart_presigned_urls_params": {
        "key": "org-123/api-upload-file/abc-def-123/2024-01-01T00:00:00_uuid.json",
        "upload_id": "upload-id-abc123",
        "urls": {
          "<any-key>": "string"
        }
      }
    }

    API error response.

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [string]

    A list of errors.

    {
      "errors": [
        "Bad Request"
      ]
    }

    Forbidden.

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [string]

    A list of errors.

    {
      "errors": [
        "Bad Request"
      ]
    }

    API error response.

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [string]

    A list of errors.

    {
      "errors": [
        "Bad Request"
      ]
    }

    Too many requests

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [string]

    A list of errors.

    {
      "errors": [
        "Bad Request"
      ]
    }

    Code Example

                      ## default
    # 
    
    # Path parameters
    export public_id="abc-def-123"
    # Curl command
    curl -X POST "https://api.ap1.datadoghq.com"https://api.ap2.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.us2.ddog-gov.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/synthetics/tests/${public_id}/files/multipart-presigned-urls" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "DD-API-KEY: ${DD_API_KEY}" \ -H "DD-APPLICATION-KEY: ${DD_APP_KEY}" \ -d @- << EOF { "bucketKeyPrefix": "api-upload-file", "parts": [ { "md5": "1B2M2Y8AsgTpgAmY7PhCfg==", "partNumber": 1 } ] } EOF
    """
    Get presigned URLs for uploading a test file returns "OK" response
    """
    
    from datadog_api_client import ApiClient, Configuration
    from datadog_api_client.v2.api.synthetics_api import SyntheticsApi
    from datadog_api_client.v2.model.synthetics_test_file_multipart_presigned_urls_part import (
        SyntheticsTestFileMultipartPresignedUrlsPart,
    )
    from datadog_api_client.v2.model.synthetics_test_file_multipart_presigned_urls_request import (
        SyntheticsTestFileMultipartPresignedUrlsRequest,
    )
    from datadog_api_client.v2.model.synthetics_test_file_multipart_presigned_urls_request_bucket_key_prefix import (
        SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix,
    )
    
    body = SyntheticsTestFileMultipartPresignedUrlsRequest(
        bucket_key_prefix=SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix.API_UPLOAD_FILE,
        parts=[
            SyntheticsTestFileMultipartPresignedUrlsPart(
                md5="1B2M2Y8AsgTpgAmY7PhCfg==",
                part_number=1,
            ),
        ],
    )
    
    configuration = Configuration()
    with ApiClient(configuration) as api_client:
        api_instance = SyntheticsApi(api_client)
        response = api_instance.get_test_file_multipart_presigned_urls(public_id="abc-def-123", body=body)
    
        print(response)
    

    Instructions

    First install the library and its dependencies and then save the example to example.py and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" python3 "example.py"
    # Get presigned URLs for uploading a test file returns "OK" response
    
    require "datadog_api_client"
    api_instance = DatadogAPIClient::V2::SyntheticsAPI.new
    
    body = DatadogAPIClient::V2::SyntheticsTestFileMultipartPresignedUrlsRequest.new({
      bucket_key_prefix: DatadogAPIClient::V2::SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix::API_UPLOAD_FILE,
      parts: [
        DatadogAPIClient::V2::SyntheticsTestFileMultipartPresignedUrlsPart.new({
          md5: "1B2M2Y8AsgTpgAmY7PhCfg==",
          part_number: 1,
        }),
      ],
    })
    p api_instance.get_test_file_multipart_presigned_urls("abc-def-123", body)
    

    Instructions

    First install the library and its dependencies and then save the example to example.rb and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" rb "example.rb"
    // Get presigned URLs for uploading a test file returns "OK" response
    
    package main
    
    import (
    	"context"
    	"encoding/json"
    	"fmt"
    	"os"
    
    	"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
    	"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
    )
    
    func main() {
    	body := datadogV2.SyntheticsTestFileMultipartPresignedUrlsRequest{
    		BucketKeyPrefix: datadogV2.SYNTHETICSTESTFILEMULTIPARTPRESIGNEDURLSREQUESTBUCKETKEYPREFIX_API_UPLOAD_FILE,
    		Parts: []datadogV2.SyntheticsTestFileMultipartPresignedUrlsPart{
    			{
    				Md5:        "1B2M2Y8AsgTpgAmY7PhCfg==",
    				PartNumber: 1,
    			},
    		},
    	}
    	ctx := datadog.NewDefaultContext(context.Background())
    	configuration := datadog.NewConfiguration()
    	apiClient := datadog.NewAPIClient(configuration)
    	api := datadogV2.NewSyntheticsApi(apiClient)
    	resp, r, err := api.GetTestFileMultipartPresignedUrls(ctx, "abc-def-123", body)
    
    	if err != nil {
    		fmt.Fprintf(os.Stderr, "Error when calling `SyntheticsApi.GetTestFileMultipartPresignedUrls`: %v\n", err)
    		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
    	}
    
    	responseContent, _ := json.MarshalIndent(resp, "", "  ")
    	fmt.Fprintf(os.Stdout, "Response from `SyntheticsApi.GetTestFileMultipartPresignedUrls`:\n%s\n", responseContent)
    }
    

    Instructions

    First install the library and its dependencies and then save the example to main.go and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" go run "main.go"
    // 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();
        }
      }
    }
    

    Instructions

    First install the library and its dependencies and then save the example to Example.java and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" java "Example.java"
    // Get presigned URLs for uploading a test file returns "OK" response
    use datadog_api_client::datadog;
    use datadog_api_client::datadogV2::api_synthetics::SyntheticsAPI;
    use datadog_api_client::datadogV2::model::SyntheticsTestFileMultipartPresignedUrlsPart;
    use datadog_api_client::datadogV2::model::SyntheticsTestFileMultipartPresignedUrlsRequest;
    use datadog_api_client::datadogV2::model::SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix;
    
    #[tokio::main]
    async fn main() {
        let body = SyntheticsTestFileMultipartPresignedUrlsRequest::new(
            SyntheticsTestFileMultipartPresignedUrlsRequestBucketKeyPrefix::API_UPLOAD_FILE,
            vec![SyntheticsTestFileMultipartPresignedUrlsPart::new(
                "1B2M2Y8AsgTpgAmY7PhCfg==".to_string(),
                1,
            )],
        );
        let configuration = datadog::Configuration::new();
        let api = SyntheticsAPI::with_config(configuration);
        let resp = api
            .get_test_file_multipart_presigned_urls("abc-def-123".to_string(), body)
            .await;
        if let Ok(value) = resp {
            println!("{:#?}", value);
        } else {
            println!("{:#?}", resp.unwrap_err());
        }
    }
    

    Instructions

    First install the library and its dependencies and then save the example to src/main.rs and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run
    /**
     * Get presigned URLs for uploading a test file returns "OK" response
     */
    
    import { client, v2 } from "@datadog/datadog-api-client";
    
    const configuration = client.createConfiguration();
    const apiInstance = new v2.SyntheticsApi(configuration);
    
    const params: v2.SyntheticsApiGetTestFileMultipartPresignedUrlsRequest = {
      body: {
        bucketKeyPrefix: "api-upload-file",
        parts: [
          {
            md5: "1B2M2Y8AsgTpgAmY7PhCfg==",
            partNumber: 1,
          },
        ],
      },
      publicId: "abc-def-123",
    };
    
    apiInstance
      .getTestFileMultipartPresignedUrls(params)
      .then((data: v2.SyntheticsTestFileMultipartPresignedUrlsResponse) => {
        console.log(
          "API called successfully. Returned data: " + JSON.stringify(data)
        );
      })
      .catch((error: any) => console.error(error));
    

    Instructions

    First install the library and its dependencies and then save the example to example.ts and run following commands:

        
    DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" tsc "example.ts"