Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
253 changes: 252 additions & 1 deletion .generator/schemas/v2/openapi.yaml

Large diffs are not rendered by default.

35 changes: 35 additions & 0 deletions examples/v2/experiments/ListExperimentHoldouts.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// List experiment holdouts returns "OK" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.ExperimentsApi;
import com.datadog.api.client.v2.model.ExperimentsExperimentHoldoutV2DTOArray;
import java.util.UUID;

public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN"));
ExperimentsApi apiInstance = new ExperimentsApi(defaultClient);

// there is a valid "experiment" in the system
UUID EXPERIMENT_DATA_ID = null;
try {
EXPERIMENT_DATA_ID = UUID.fromString(System.getenv("EXPERIMENT_DATA_ID"));
} catch (IllegalArgumentException e) {
System.err.println("Error parsing UUID: " + e.getMessage());
}

try {
ExperimentsExperimentHoldoutV2DTOArray result =
apiInstance.listExperimentHoldouts(EXPERIMENT_DATA_ID);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ExperimentsApi#listExperimentHoldouts");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
151 changes: 151 additions & 0 deletions src/main/java/com/datadog/api/client/v2/api/ExperimentsApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import com.datadog.api.client.v2.model.ExperimentsCreateMetricV2Request;
import com.datadog.api.client.v2.model.ExperimentsCreateSubjectTypeV2Request;
import com.datadog.api.client.v2.model.ExperimentsExperimentDiagnosticsV2DTO;
import com.datadog.api.client.v2.model.ExperimentsExperimentHoldoutV2DTOArray;
import com.datadog.api.client.v2.model.ExperimentsExperimentMetricGroupMutationV2;
import com.datadog.api.client.v2.model.ExperimentsExperimentMetricGroupV2DTOArray;
import com.datadog.api.client.v2.model.ExperimentsExperimentV2DTO;
Expand Down Expand Up @@ -4947,6 +4948,156 @@ public ApiResponse<ExperimentsSubjectTypeV2DTO> getSubjectTypeWithHttpInfo(
new GenericType<ExperimentsSubjectTypeV2DTO>() {});
}

/**
* List experiment holdouts.
*
* <p>See {@link #listExperimentHoldoutsWithHttpInfo}.
*
* @param experimentId The UUID of the experiment. (required)
* @return ExperimentsExperimentHoldoutV2DTOArray
* @throws ApiException if fails to make API call
*/
public ExperimentsExperimentHoldoutV2DTOArray listExperimentHoldouts(UUID experimentId)
throws ApiException {
return listExperimentHoldoutsWithHttpInfo(experimentId).getData();
}

/**
* List experiment holdouts.
*
* <p>See {@link #listExperimentHoldoutsWithHttpInfoAsync}.
*
* @param experimentId The UUID of the experiment. (required)
* @return CompletableFuture&lt;ExperimentsExperimentHoldoutV2DTOArray&gt;
*/
public CompletableFuture<ExperimentsExperimentHoldoutV2DTOArray> listExperimentHoldoutsAsync(
UUID experimentId) {
return listExperimentHoldoutsWithHttpInfoAsync(experimentId)
.thenApply(
response -> {
return response.getData();
});
}

/**
* List the holdouts an experiment is attached to, in evaluation order: MANAGED holdouts first,
* starting with the GLOBAL holdout, followed by EXTERNAL holdouts. For a draft experiment, the
* response includes the GLOBAL holdout that the experiment would join if it started. The response
* excludes archived and deleted holdouts, and MANAGED holdouts past their analysis window.
* EXTERNAL holdouts are listed until they are archived. MANAGED holdouts are listed only for
* experiments that use a Datadog feature flag, because Datadog serves holdouts only through its
* flags. The order matches the experiment's <code>holdout_ids</code> attribute.
*
* @param experimentId The UUID of the experiment. (required)
* @return ApiResponse&lt;ExperimentsExperimentHoldoutV2DTOArray&gt;
* @throws ApiException if fails to make API call
* @http.response.details
* <table border="1">
* <caption>Response details</caption>
* <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
* <tr><td> 200 </td><td> OK </td><td> - </td></tr>
* <tr><td> 400 </td><td> Malformed experiment ID (not a valid UUID). </td><td> - </td></tr>
* <tr><td> 401 </td><td> Missing or invalid authentication. </td><td> - </td></tr>
* <tr><td> 403 </td><td> The caller lacks the &#x60;product_analytics_experiments_read&#x60; permission or lacks permission to view this experiment. </td><td> - </td></tr>
* <tr><td> 404 </td><td> No experiment with this ID exists for the organization. </td><td> - </td></tr>
* <tr><td> 429 </td><td> Too many requests </td><td> - </td></tr>
* </table>
*/
public ApiResponse<ExperimentsExperimentHoldoutV2DTOArray> listExperimentHoldoutsWithHttpInfo(
UUID experimentId) throws ApiException {
Object localVarPostBody = null;

// verify the required parameter 'experimentId' is set
if (experimentId == null) {
throw new ApiException(
400, "Missing the required parameter 'experimentId' when calling listExperimentHoldouts");
}
// create path and map variables
String localVarPath =
"/api/v2/experiments/{experiment_id}/holdouts"
.replaceAll(
"\\{" + "experiment_id" + "\\}", apiClient.escapeString(experimentId.toString()));

Map<String, String> localVarHeaderParams = new HashMap<String, String>();

Invocation.Builder builder =
apiClient.createBuilder(
"v2.ExperimentsApi.listExperimentHoldouts",
localVarPath,
new ArrayList<Pair>(),
localVarHeaderParams,
new HashMap<String, String>(),
new String[] {"application/json"},
new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
return apiClient.invokeAPI(
"GET",
builder,
localVarHeaderParams,
new String[] {},
localVarPostBody,
new HashMap<String, Object>(),
false,
new GenericType<ExperimentsExperimentHoldoutV2DTOArray>() {});
}

/**
* List experiment holdouts.
*
* <p>See {@link #listExperimentHoldoutsWithHttpInfo}.
*
* @param experimentId The UUID of the experiment. (required)
* @return CompletableFuture&lt;ApiResponse&lt;ExperimentsExperimentHoldoutV2DTOArray&gt;&gt;
*/
public CompletableFuture<ApiResponse<ExperimentsExperimentHoldoutV2DTOArray>>
listExperimentHoldoutsWithHttpInfoAsync(UUID experimentId) {
Object localVarPostBody = null;

// verify the required parameter 'experimentId' is set
if (experimentId == null) {
CompletableFuture<ApiResponse<ExperimentsExperimentHoldoutV2DTOArray>> result =
new CompletableFuture<>();
result.completeExceptionally(
new ApiException(
400,
"Missing the required parameter 'experimentId' when calling listExperimentHoldouts"));
return result;
}
// create path and map variables
String localVarPath =
"/api/v2/experiments/{experiment_id}/holdouts"
.replaceAll(
"\\{" + "experiment_id" + "\\}", apiClient.escapeString(experimentId.toString()));

Map<String, String> localVarHeaderParams = new HashMap<String, String>();

Invocation.Builder builder;
try {
builder =
apiClient.createBuilder(
"v2.ExperimentsApi.listExperimentHoldouts",
localVarPath,
new ArrayList<Pair>(),
localVarHeaderParams,
new HashMap<String, String>(),
new String[] {"application/json"},
new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
} catch (ApiException ex) {
CompletableFuture<ApiResponse<ExperimentsExperimentHoldoutV2DTOArray>> result =
new CompletableFuture<>();
result.completeExceptionally(ex);
return result;
}
return apiClient.invokeAPIAsync(
"GET",
builder,
localVarHeaderParams,
new String[] {},
localVarPostBody,
new HashMap<String, Object>(),
false,
new GenericType<ExperimentsExperimentHoldoutV2DTOArray>() {});
}

/**
* List experiment metric groups.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
/*
* 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;

/** Response containing the holdouts an experiment is attached to. */
@JsonPropertyOrder({ExperimentsExperimentHoldoutV2DTOArray.JSON_PROPERTY_DATA})
@jakarta.annotation.Generated(
value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator")
public class ExperimentsExperimentHoldoutV2DTOArray {
@JsonIgnore public boolean unparsed = false;
public static final String JSON_PROPERTY_DATA = "data";
private List<ExperimentsExperimentHoldoutV2DTOData> data = new ArrayList<>();

public ExperimentsExperimentHoldoutV2DTOArray() {}

@JsonCreator
public ExperimentsExperimentHoldoutV2DTOArray(
@JsonProperty(required = true, value = JSON_PROPERTY_DATA)
List<ExperimentsExperimentHoldoutV2DTOData> data) {
this.data = data;
for (ExperimentsExperimentHoldoutV2DTOData item : data) {
this.unparsed |= item.unparsed;
}
}

public ExperimentsExperimentHoldoutV2DTOArray data(
List<ExperimentsExperimentHoldoutV2DTOData> data) {
this.data = data;
for (ExperimentsExperimentHoldoutV2DTOData item : data) {
this.unparsed |= item.unparsed;
}
return this;
}

public ExperimentsExperimentHoldoutV2DTOArray addDataItem(
ExperimentsExperimentHoldoutV2DTOData dataItem) {
this.data.add(dataItem);
this.unparsed |= dataItem.unparsed;
return this;
}

/**
* Holdouts the experiment is attached to, in evaluation order.
*
* @return data
*/
@JsonProperty(JSON_PROPERTY_DATA)
@JsonInclude(value = JsonInclude.Include.ALWAYS)
public List<ExperimentsExperimentHoldoutV2DTOData> getData() {
return data;
}

public void setData(List<ExperimentsExperimentHoldoutV2DTOData> data) {
this.data = data;
if (data != null) {
for (ExperimentsExperimentHoldoutV2DTOData item : data) {
this.unparsed |= item.unparsed;
}
}
}

/**
* 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<String, Object> 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 ExperimentsExperimentHoldoutV2DTOArray
*/
@JsonAnySetter
public ExperimentsExperimentHoldoutV2DTOArray putAdditionalProperty(String key, Object value) {
if (this.additionalProperties == null) {
this.additionalProperties = new HashMap<String, Object>();
}
this.additionalProperties.put(key, value);
return this;
}

/**
* Return the additional (undeclared) property.
*
* @return The additional properties
*/
@JsonAnyGetter
public Map<String, Object> 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 ExperimentsExperimentHoldoutV2DTOArray object is equal to o. */
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
ExperimentsExperimentHoldoutV2DTOArray experimentsExperimentHoldoutV2DtoArray =
(ExperimentsExperimentHoldoutV2DTOArray) o;
return Objects.equals(this.data, experimentsExperimentHoldoutV2DtoArray.data)
&& Objects.equals(
this.additionalProperties, experimentsExperimentHoldoutV2DtoArray.additionalProperties);
}

@Override
public int hashCode() {
return Objects.hash(data, additionalProperties);
}

@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("class ExperimentsExperimentHoldoutV2DTOArray {\n");
sb.append(" data: ").append(toIndentedString(data)).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 ");
}
}
Loading
Loading