Skip to content
Open
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
1,224 changes: 1,224 additions & 0 deletions .generator/schemas/v2/openapi.yaml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2026-04-01T20:36:45.896Z

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2026-04-01T20:36:50.944Z

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Create targeting rules for a flag env returns "Created" response

require "datadog_api_client"
api_instance = DatadogAPIClient::V2::FeatureFlagsAPI.new

body = DatadogAPIClient::V2::CreateAllocationsRequest.new({
data: DatadogAPIClient::V2::AllocationDataRequest.new({
attributes: DatadogAPIClient::V2::UpsertAllocationRequest.new({
experiment_id: "550e8400-e29b-41d4-a716-446655440030",
exposure_schedule: DatadogAPIClient::V2::ExposureScheduleRequest.new({
absolute_start_time: "2025-06-13T12:00:00Z",
control_variant_id: "550e8400-e29b-41d4-a716-446655440012",
control_variant_key: "control",
id: "550e8400-e29b-41d4-a716-446655440010",
rollout_options: DatadogAPIClient::V2::RolloutOptionsRequest.new({
autostart: false,
selection_interval_ms: 3600000,
strategy: DatadogAPIClient::V2::RolloutStrategy::UNIFORM_INTERVALS,
}),
rollout_steps: [
DatadogAPIClient::V2::ExposureRolloutStepRequest.new({
exposure_ratio: 0.5,
grouped_step_index: 1,
id: "550e8400-e29b-41d4-a716-446655440040",
interval_ms: 3600000,
is_pause_record: false,
}),
],
}),
guardrail_metrics: [
DatadogAPIClient::V2::GuardrailMetricRequest.new({
metric_id: "metric-error-rate",
trigger_action: DatadogAPIClient::V2::GuardrailTriggerAction::PAUSE,
}),
],
id: "550e8400-e29b-41d4-a716-446655440020",
key: "prod-rollout",
name: "Production Rollout",
targeting_rules: [
DatadogAPIClient::V2::TargetingRuleRequest.new({
conditions: [
DatadogAPIClient::V2::ConditionRequest.new({
attribute: "user_tier",
operator: DatadogAPIClient::V2::ConditionOperator::ONE_OF,
value: [
"premium",
"enterprise",
],
}),
],
}),
],
type: DatadogAPIClient::V2::AllocationType::FEATURE_GATE,
variant_weights: [
DatadogAPIClient::V2::VariantWeightRequest.new({
value: 50,
variant_id: "550e8400-e29b-41d4-a716-446655440001",
variant_key: "control",
}),
],
}),
type: DatadogAPIClient::V2::AllocationDataType::ALLOCATIONS,
}),
})
p api_instance.create_allocations_for_feature_flag_in_environment("550e8400-e29b-41d4-a716-446655440000", "550e8400-e29b-41d4-a716-446655440001", body)
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Create allocation for a flag in an environment returns "Created" response

require "datadog_api_client"
api_instance = DatadogAPIClient::V2::FeatureFlagsAPI.new

# there is a valid "feature_flag" in the system
FEATURE_FLAG_DATA_ATTRIBUTES_VARIANTS_0_ID = ENV["FEATURE_FLAG_DATA_ATTRIBUTES_VARIANTS_0_ID"]
FEATURE_FLAG_DATA_ID = ENV["FEATURE_FLAG_DATA_ID"]

# there is a valid "environment" in the system
ENVIRONMENT_DATA_ID = ENV["ENVIRONMENT_DATA_ID"]

body = DatadogAPIClient::V2::CreateAllocationsRequest.new({
data: DatadogAPIClient::V2::AllocationDataRequest.new({
type: DatadogAPIClient::V2::AllocationDataType::ALLOCATIONS,
attributes: DatadogAPIClient::V2::UpsertAllocationRequest.new({
name: "New targeting rule Example-Feature-Flag",
key: "new-targeting-rule-example-feature-flag",
targeting_rules: [],
variant_weights: [
DatadogAPIClient::V2::VariantWeightRequest.new({
variant_id: FEATURE_FLAG_DATA_ATTRIBUTES_VARIANTS_0_ID,
value: 100,
}),
],
guardrail_metrics: [],
type: DatadogAPIClient::V2::AllocationType::CANARY,
}),
}),
})
p api_instance.create_allocations_for_feature_flag_in_environment(FEATURE_FLAG_DATA_ID, ENVIRONMENT_DATA_ID, body)
5 changes: 5 additions & 0 deletions examples/v2/feature-flags/PauseExposureSchedule.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Pause a progressive rollout returns "OK" response

require "datadog_api_client"
api_instance = DatadogAPIClient::V2::FeatureFlagsAPI.new
p api_instance.pause_exposure_schedule("550e8400-e29b-41d4-a716-446655440010")
5 changes: 5 additions & 0 deletions examples/v2/feature-flags/ResumeExposureSchedule.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Resume a progressive rollout returns "OK" response

require "datadog_api_client"
api_instance = DatadogAPIClient::V2::FeatureFlagsAPI.new
p api_instance.resume_exposure_schedule("550e8400-e29b-41d4-a716-446655440010")
5 changes: 5 additions & 0 deletions examples/v2/feature-flags/StartExposureSchedule.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Start a progressive rollout returns "OK" response

require "datadog_api_client"
api_instance = DatadogAPIClient::V2::FeatureFlagsAPI.new
p api_instance.start_exposure_schedule("550e8400-e29b-41d4-a716-446655440010")
5 changes: 5 additions & 0 deletions examples/v2/feature-flags/StopExposureSchedule.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Stop a progressive rollout returns "OK" response

require "datadog_api_client"
api_instance = DatadogAPIClient::V2::FeatureFlagsAPI.new
p api_instance.stop_exposure_schedule("550e8400-e29b-41d4-a716-446655440010")
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Update targeting rules for a flag returns "OK" response

require "datadog_api_client"
api_instance = DatadogAPIClient::V2::FeatureFlagsAPI.new

body = DatadogAPIClient::V2::OverwriteAllocationsRequest.new({
data: [
DatadogAPIClient::V2::AllocationDataRequest.new({
attributes: DatadogAPIClient::V2::UpsertAllocationRequest.new({
experiment_id: "550e8400-e29b-41d4-a716-446655440030",
exposure_schedule: DatadogAPIClient::V2::ExposureScheduleRequest.new({
absolute_start_time: "2025-06-13T12:00:00Z",
control_variant_id: "550e8400-e29b-41d4-a716-446655440012",
control_variant_key: "control",
id: "550e8400-e29b-41d4-a716-446655440010",
rollout_options: DatadogAPIClient::V2::RolloutOptionsRequest.new({
autostart: false,
selection_interval_ms: 3600000,
strategy: DatadogAPIClient::V2::RolloutStrategy::UNIFORM_INTERVALS,
}),
rollout_steps: [
DatadogAPIClient::V2::ExposureRolloutStepRequest.new({
exposure_ratio: 0.5,
grouped_step_index: 1,
id: "550e8400-e29b-41d4-a716-446655440040",
interval_ms: 3600000,
is_pause_record: false,
}),
],
}),
guardrail_metrics: [
DatadogAPIClient::V2::GuardrailMetricRequest.new({
metric_id: "metric-error-rate",
trigger_action: DatadogAPIClient::V2::GuardrailTriggerAction::PAUSE,
}),
],
id: "550e8400-e29b-41d4-a716-446655440020",
key: "prod-rollout",
name: "Production Rollout",
targeting_rules: [
DatadogAPIClient::V2::TargetingRuleRequest.new({
conditions: [
DatadogAPIClient::V2::ConditionRequest.new({
attribute: "user_tier",
operator: DatadogAPIClient::V2::ConditionOperator::ONE_OF,
value: [
"premium",
"enterprise",
],
}),
],
}),
],
type: DatadogAPIClient::V2::AllocationType::FEATURE_GATE,
variant_weights: [
DatadogAPIClient::V2::VariantWeightRequest.new({
value: 50,
variant_id: "550e8400-e29b-41d4-a716-446655440001",
variant_key: "control",
}),
],
}),
type: DatadogAPIClient::V2::AllocationDataType::ALLOCATIONS,
}),
],
})
p api_instance.update_allocations_for_feature_flag_in_environment("550e8400-e29b-41d4-a716-446655440000", "550e8400-e29b-41d4-a716-446655440001", body)
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Update targeting rules for a flag in an environment returns "OK" response

require "datadog_api_client"
api_instance = DatadogAPIClient::V2::FeatureFlagsAPI.new

# there is a valid "feature_flag" in the system
FEATURE_FLAG_DATA_ATTRIBUTES_VARIANTS_0_ID = ENV["FEATURE_FLAG_DATA_ATTRIBUTES_VARIANTS_0_ID"]
FEATURE_FLAG_DATA_ID = ENV["FEATURE_FLAG_DATA_ID"]

# there is a valid "environment" in the system
ENVIRONMENT_DATA_ID = ENV["ENVIRONMENT_DATA_ID"]

body = DatadogAPIClient::V2::OverwriteAllocationsRequest.new({
data: [
DatadogAPIClient::V2::AllocationDataRequest.new({
type: DatadogAPIClient::V2::AllocationDataType::ALLOCATIONS,
attributes: DatadogAPIClient::V2::UpsertAllocationRequest.new({
key: "overwrite-allocation-example-feature-flag",
name: "New targeting rule Example-Feature-Flag",
targeting_rules: [],
variant_weights: [
DatadogAPIClient::V2::VariantWeightRequest.new({
variant_id: FEATURE_FLAG_DATA_ATTRIBUTES_VARIANTS_0_ID,
value: 100,
}),
],
exposure_schedule: DatadogAPIClient::V2::ExposureScheduleRequest.new({
rollout_options: DatadogAPIClient::V2::RolloutOptionsRequest.new({
strategy: DatadogAPIClient::V2::RolloutStrategy::UNIFORM_INTERVALS,
autostart: false,
selection_interval_ms: 86400000,
}),
rollout_steps: [
DatadogAPIClient::V2::ExposureRolloutStepRequest.new({
exposure_ratio: 0.05,
interval_ms: nil,
is_pause_record: false,
grouped_step_index: 0,
}),
DatadogAPIClient::V2::ExposureRolloutStepRequest.new({
exposure_ratio: 0.25,
interval_ms: nil,
is_pause_record: false,
grouped_step_index: 1,
}),
DatadogAPIClient::V2::ExposureRolloutStepRequest.new({
exposure_ratio: 1,
interval_ms: nil,
is_pause_record: false,
grouped_step_index: 2,
}),
],
}),
guardrail_metrics: [],
type: DatadogAPIClient::V2::AllocationType::CANARY,
}),
}),
],
})
p api_instance.update_allocations_for_feature_flag_in_environment(FEATURE_FLAG_DATA_ID, ENVIRONMENT_DATA_ID, body)
22 changes: 22 additions & 0 deletions features/scenarios_model_mapping.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2213,6 +2213,18 @@
"environment_id" => "UUID",
"body" => "UpdateEnvironmentRequest",
},
"v2.PauseExposureSchedule" => {
"exposure_schedule_id" => "UUID",
},
"v2.ResumeExposureSchedule" => {
"exposure_schedule_id" => "UUID",
},
"v2.StartExposureSchedule" => {
"exposure_schedule_id" => "UUID",
},
"v2.StopExposureSchedule" => {
"exposure_schedule_id" => "UUID",
},
"v2.GetFeatureFlag" => {
"feature_flag_id" => "UUID",
},
Expand All @@ -2223,6 +2235,16 @@
"v2.ArchiveFeatureFlag" => {
"feature_flag_id" => "UUID",
},
"v2.CreateAllocationsForFeatureFlagInEnvironment" => {
"feature_flag_id" => "UUID",
"environment_id" => "UUID",
"body" => "CreateAllocationsRequest",
},
"v2.UpdateAllocationsForFeatureFlagInEnvironment" => {
"feature_flag_id" => "UUID",
"environment_id" => "UUID",
"body" => "OverwriteAllocationsRequest",
},
"v2.DisableFeatureFlagEnvironment" => {
"feature_flag_id" => "UUID",
"environment_id" => "UUID",
Expand Down
Loading
Loading