---
title: "Create/Add change to a change request"
method: POST
path: "/api/admin/projects/{projectId}/environments/{environment}/change-requests"
tags: ["Change Requests"]
---

# Create/Add change to a change request

`POST /api/admin/projects/{projectId}/environments/{environment}/change-requests`

**Enterprise feature**

Given a change request exists, this endpoint will attempt to add a change to

an existing change request for the user. If a change request does not exist,

it will attempt to create one.

## Path parameters

- `projectId` string, required
- `environment` string, required

## Request body

- union — Either a single change or a list of changes to create a change request from.
  - object
    - `action` 'updateSegment', required — The name of this action.
    - `payload` UpsertSegmentSchema, required — Data used to create or update a segment
      - `name` string, required — The name of the segment
      - `description` string, nullable — A description of what the segment is for
      - `project` string, nullable — The project the segment belongs to if any.
      - `constraints` ConstraintSchema[], required — The list of constraints that make up this segment
        - `contextName` string, required — The name of the context field that this constraint should apply to.
        - `operator` 'NOT_IN' | 'IN' | 'STR_ENDS_WITH' | 'STR_STARTS_WITH' | 'STR_CONTAINS' | 'NUM_EQ' | 'NUM_GT' | 'NUM_GTE' | 'NUM_LT' | 'NUM_LTE' | 'DATE_AFTER' | 'DATE_BEFORE' | 'SEMVER_EQ' | 'SEMVER_GT' | 'SEMVER_LT' | 'SEMVER_GTE' | 'SEMVER_LTE' | 'REGEX', required — The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators).
        - `caseInsensitive` boolean — Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive).
        - `inverted` boolean — Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa.
        - `values` string[] — The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values.
        - `value` string — The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values.
  - object
    - `action` 'deleteSegment', required — The name of this action.
    - `payload` object, required — Required data to delete a segment.
      - `id` integer, required — The ID of the segment to delete.
  - object — Update the enabled state for a feature.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'updateEnabled', required — The name of this action.
    - `payload` object, required
      - `enabled` boolean, required — The new state of the feature.
      - `shouldActivateDisabledStrategies` boolean — Only relevant when ALL the strategies are disabled. If `true`, all the disabled strategies will be enabled. If `false`, the default strategy will be added
  - object — Add a strategy to the feature
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'addStrategy', required — The name of this action.
    - `payload` CreateFeatureStrategySchema, required — Create a strategy configuration in a feature
      - `name` string, required — The name of the strategy type
      - `title` string, nullable — A descriptive title for the strategy
      - `disabled` boolean, nullable — A toggle to disable the strategy. defaults to false. Disabled strategies are not evaluated or returned to the SDKs
      - `sortOrder` number — The order of the strategy in the list
      - `constraints` ConstraintSchema[] — A list of the constraints attached to the strategy. See https://docs.getunleash.io/concepts/activation-strategies#constraints
        - `contextName` string, required — The name of the context field that this constraint should apply to.
        - `operator` 'NOT_IN' | 'IN' | 'STR_ENDS_WITH' | 'STR_STARTS_WITH' | 'STR_CONTAINS' | 'NUM_EQ' | 'NUM_GT' | 'NUM_GTE' | 'NUM_LT' | 'NUM_LTE' | 'DATE_AFTER' | 'DATE_BEFORE' | 'SEMVER_EQ' | 'SEMVER_GT' | 'SEMVER_LT' | 'SEMVER_GTE' | 'SEMVER_LTE' | 'REGEX', required — The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators).
        - `caseInsensitive` boolean — Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive).
        - `inverted` boolean — Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa.
        - `values` string[] — The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values.
        - `value` string — The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values.
      - `variants` CreateStrategyVariantSchema[] — Strategy level variants
        - `name` string, required — The variant name. Must be unique for this feature flag
        - `weight` integer, required — The weight is the likelihood of any one user getting this variant. It is an integer between 0 and 1000. See the section on [variant weights](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight) for more information
        - `weightType` 'variable' | 'fix', required — Set to `fix` if this variant must have exactly the weight allocated to it. If the type is `variable`, the weight will adjust so that the total weight of all variants adds up to 1000. Refer to the [variant weight documentation](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight).
        - `stickiness` string, required — The [stickiness](https://docs.getunleash.io/concepts/feature-flag-variants#variant-stickiness) to use for distribution of this variant. Stickiness is how Unleash guarantees that the same user gets the same variant every time
        - `payload` object — Extra data configured for this variant
          - `type` 'json' | 'csv' | 'string' | 'number', required — The type of the value. Commonly used types are string, number, json and csv.
          - `value` string, required — The actual value of payload
      - `parameters` ParametersSchema — A list of parameters for a strategy
      - `segments` number[] — Ids of segments to use for this strategy
  - object — Update a milestone strategy belonging to this feature.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'updateMilestoneStrategy', required — The name of this action.
    - `payload` UpdateMilestoneStrategySchema, required — Update a milestone strategy configuration for a feature flag
      - `sortOrder` number — The order of the strategy in the list in feature environment configuration
      - `constraints` ConstraintSchema[] — A list of the constraints attached to the strategy. See https://docs.getunleash.io/concepts/activation-strategies#constraints
        - `contextName` string, required — The name of the context field that this constraint should apply to.
        - `operator` 'NOT_IN' | 'IN' | 'STR_ENDS_WITH' | 'STR_STARTS_WITH' | 'STR_CONTAINS' | 'NUM_EQ' | 'NUM_GT' | 'NUM_GTE' | 'NUM_LT' | 'NUM_LTE' | 'DATE_AFTER' | 'DATE_BEFORE' | 'SEMVER_EQ' | 'SEMVER_GT' | 'SEMVER_LT' | 'SEMVER_GTE' | 'SEMVER_LTE' | 'REGEX', required — The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators).
        - `caseInsensitive` boolean — Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive).
        - `inverted` boolean — Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa.
        - `values` string[] — The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values.
        - `value` string — The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values.
      - `title` string, nullable — A descriptive title for the strategy
      - `disabled` boolean, nullable — A toggle to disable the strategy. defaults to true. Disabled strategies are not evaluated or returned to the SDKs
      - `variants` StrategyVariantSchema[] — Strategy level variants
        - `name` string, required — The variant name. Must be unique for this feature flag
        - `weight` integer, required — The weight is the likelihood of any one user getting this variant. It is an integer between 0 and 1000. See the section on [variant weights](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight) for more information
        - `weightType` 'variable' | 'fix', required — Set to `fix` if this variant must have exactly the weight allocated to it. If the type is `variable`, the weight will adjust so that the total weight of all variants adds up to 1000. Refer to the [variant weight documentation](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight).
        - `stickiness` string, required — The [stickiness](https://docs.getunleash.io/concepts/feature-flag-variants#variant-stickiness) to use for distribution of this variant. Stickiness is how Unleash guarantees that the same user gets the same variant every time
        - `payload` object — Extra data configured for this variant
          - `type` 'json' | 'csv' | 'string' | 'number', required — The type of the value. Commonly used types are string, number, json and csv.
          - `value` string, required — The actual value of payload
      - `segments` number[] — A list of segment ids attached to the strategy
      - `parameters` ParametersSchema — A list of parameters for a strategy
  - object — Update a strategy belonging to this feature.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'updateStrategy', required — The name of this action.
    - `payload` UpdateFeatureStrategySchema, required — Update a strategy configuration in a feature
      - `name` string — The name of the strategy type. This property is deprecated and the ability to change a strategy's type will be removed in a future release.
      - `sortOrder` number — The order of the strategy in the list in feature environment configuration
      - `constraints` ConstraintSchema[] — A list of the constraints attached to the strategy. See https://docs.getunleash.io/concepts/activation-strategies#constraints
        - `contextName` string, required — The name of the context field that this constraint should apply to.
        - `operator` 'NOT_IN' | 'IN' | 'STR_ENDS_WITH' | 'STR_STARTS_WITH' | 'STR_CONTAINS' | 'NUM_EQ' | 'NUM_GT' | 'NUM_GTE' | 'NUM_LT' | 'NUM_LTE' | 'DATE_AFTER' | 'DATE_BEFORE' | 'SEMVER_EQ' | 'SEMVER_GT' | 'SEMVER_LT' | 'SEMVER_GTE' | 'SEMVER_LTE' | 'REGEX', required — The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators).
        - `caseInsensitive` boolean — Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive).
        - `inverted` boolean — Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa.
        - `values` string[] — The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values.
        - `value` string — The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values.
      - `title` string, nullable — A descriptive title for the strategy
      - `disabled` boolean, nullable — A toggle to disable the strategy. defaults to true. Disabled strategies are not evaluated or returned to the SDKs
      - `variants` StrategyVariantSchema[] — Strategy level variants
        - `name` string, required — The variant name. Must be unique for this feature flag
        - `weight` integer, required — The weight is the likelihood of any one user getting this variant. It is an integer between 0 and 1000. See the section on [variant weights](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight) for more information
        - `weightType` 'variable' | 'fix', required — Set to `fix` if this variant must have exactly the weight allocated to it. If the type is `variable`, the weight will adjust so that the total weight of all variants adds up to 1000. Refer to the [variant weight documentation](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight).
        - `stickiness` string, required — The [stickiness](https://docs.getunleash.io/concepts/feature-flag-variants#variant-stickiness) to use for distribution of this variant. Stickiness is how Unleash guarantees that the same user gets the same variant every time
        - `payload` object — Extra data configured for this variant
          - `type` 'json' | 'csv' | 'string' | 'number', required — The type of the value. Commonly used types are string, number, json and csv.
          - `value` string, required — The actual value of payload
      - `segments` number[] — A list of segment ids attached to the strategy
      - `parameters` ParametersSchema — A list of parameters for a strategy
  - object — Delete a strategy from this feature.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'deleteStrategy', required — The name of this action.
    - `payload` object, required
      - `id` string, required — The ID of the strategy to update.
  - object — Archive a feature.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'archiveFeature', required — The name of this action.
  - object — Update variants for this feature.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'patchVariant', required — The name of this action.
    - `payload` object, required
      - `variants` VariantSchema[], required
        - `name` string, required — The variants name. Is unique for this feature flag
        - `weight` number, required — The weight is the likelihood of any one user getting this variant. It is a number between 0 and 1000. See the section on [variant weights](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight) for more information
        - `weightType` 'variable' | 'fix' — Set to fix if this variant must have exactly the weight allocated to it. If the type is variable, the weight will adjust so that the total weight of all variants adds up to 1000
        - `stickiness` string — [Stickiness](https://docs.getunleash.io/concepts/feature-flag-variants#variant-stickiness) is how Unleash guarantees that the same user gets the same variant every time
        - `payload` object — Extra data configured for this variant
          - `type` 'json' | 'csv' | 'string' | 'number', required — The type of the value. Commonly used types are string, number, json and csv.
          - `value` string, required — The actual value of payload
        - `overrides` OverrideSchema[] — Overrides assigning specific variants to specific users. The weighting system automatically assigns users to specific groups for you, but any overrides in this list will take precedence.
          - `contextName` string, required — The name of the context field used to determine overrides
          - `values` string[], required — Which values that should be overriden
  - object — Reorder strategies for this feature
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'reorderStrategy', required — The name of this action.
    - `payload` object[], required — An array of strategies with their new sort order
      - `id` string, required — The ID of the strategy
      - `sortOrder` number, required — The new sort order of the strategy
  - object — Add a parent feature dependency.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'addDependency', required — The name of this action.
    - `payload` CreateDependentFeatureSchema, required — Feature dependency on a parent feature in write model
      - `feature` string, required — The name of the feature we depend on.
      - `enabled` boolean — Whether the parent feature should be enabled. When `false` variants are ignored. `true` by default.
      - `variants` string[] — The list of variants the parent feature should resolve to. Leave empty when you only want to check the `enabled` status.
  - object — Remove a parent feature dependency or all dependencies if no payload.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'deleteDependency', required — The name of this action.
  - object — Add a release plan to this feature environment.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'addReleasePlan', required — The name of this action.
    - `payload` ReleasePlanTemplateIdSchema, required — Schema for creating a release plan for a feature flag environment by copying and applying the configuration from a release plan template.
      - `templateId` string, required — The release plan template's ID. Release template IDs are ulids.
  - object — Start milestone of feature environment release plan.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'startMilestone', required — The name of this action.
    - `payload` object, required — The ID of the release plan and which of its milestones to start.
      - `milestoneId` string, required — The ID of the milestone to start. This ID is an ulid
      - `planId` string, required — The ID of the release plan. This ID is an ulid
  - object — Remove a release plan from feature environment.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'deleteReleasePlan', required — The name of this action.
    - `payload` object, required — The Id of the release plan to remove.
      - `planId` string, required — The Id of the release plan. This id is an ulid
  - object — Create or update milestone progression from one milestone to another.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'changeMilestoneProgression', required — The name of this action.
    - `payload` object, required
      - `sourceMilestone` string, required — The ID of the source milestone
      - `targetMilestone` string, required — The ID of the target milestone
      - `transitionCondition` TransitionConditionSchema, required — A transition condition for milestone progression
        - `intervalMinutes` integer, required — The interval in minutes before transitioning
  - object — Delete milestone progression.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'deleteMilestoneProgression', required — The name of this action.
    - `payload` object, required
      - `sourceMilestone` string, required — The ID of the source milestone with progression to delete.
  - object — Resume paused milestone progressions for a release plan.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'resumeMilestoneProgression', required — The name of this action.
    - `payload` object, required
      - `planId` string, required — The release plan's unique identifier (ULID format)
  - object — Create or update a safeguard for a release plan.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'changeReleasePlanSafeguard', required — The name of this action.
    - `payload` object, required
      - `planId` string, required — The ID of the release plan. This ID is an ulid
      - `safeguard` CreateSafeguardSchema, required — Request body to create a safeguard with metric-based alert condition.
        - `impactMetric` object, required — Metric configuration that should be evaluated for the safeguard.
          - `metricName` string, required — The Prometheus metric series to query. It includes both unleash prefix and metric type and display name
          - `timeRange` 'hour' | 'day' | 'week' | 'month', required — The time range for the metric data.
          - `aggregationMode` 'rps' | 'count' | 'avg' | 'sum' | 'p95' | 'p99' | 'p50', required — The aggregation mode for the metric data.
          - `labelSelectors` object, required — The selected labels and their values for filtering the metric data.
          - `source` 'internal' | 'external' — The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.
        - `triggerCondition` SafeguardTriggerConditionSchema, required — The condition that triggers the safeguard.
          - `operator` '>' | '<', required — The comparison operator for the threshold check.
          - `threshold` number, required — The threshold value to compare against.
  - object — Delete a safeguard from a release plan.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'deleteReleasePlanSafeguard', required — The name of this action.
    - `payload` object, required
      - `planId` string, required — The ID of the release plan. This ID is an ulid
      - `safeguardId` string, required — The ID of the safeguard to delete.
  - object — Create or update a safeguard for a feature environment.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'changeFeatureEnvSafeguard', required — The name of this action.
    - `payload` object, required
      - `safeguard` CreateSafeguardSchema, required — Request body to create a safeguard with metric-based alert condition.
        - `impactMetric` object, required — Metric configuration that should be evaluated for the safeguard.
          - `metricName` string, required — The Prometheus metric series to query. It includes both unleash prefix and metric type and display name
          - `timeRange` 'hour' | 'day' | 'week' | 'month', required — The time range for the metric data.
          - `aggregationMode` 'rps' | 'count' | 'avg' | 'sum' | 'p95' | 'p99' | 'p50', required — The aggregation mode for the metric data.
          - `labelSelectors` object, required — The selected labels and their values for filtering the metric data.
          - `source` 'internal' | 'external' — The Prometheus data source for this metric. Internal is the Unleash-managed Prometheus, external is a customer-provided Prometheus instance. Defaults to internal if not specified.
        - `triggerCondition` SafeguardTriggerConditionSchema, required — The condition that triggers the safeguard.
          - `operator` '>' | '<', required — The comparison operator for the threshold check.
          - `threshold` number, required — The threshold value to compare against.
  - object — Delete a safeguard from a feature environment.
    - `feature` string, required — The name of the feature that this change applies to.
    - `action` 'deleteFeatureEnvSafeguard', required — The name of this action.
    - `payload` object, required
      - `safeguardId` string, required — The ID of the safeguard to delete.
  - ChangeRequestCreateSchema[]
    - union — Data used to create a [change request](https://docs.getunleash.io/concepts/change-requests) for a single feature or segment change.
      - object
        - `action` 'updateSegment', required — The name of this action.
        - `payload` UpsertSegmentSchema, required — Data used to create or update a segment
          - `name` string, required — The name of the segment
          - `description` string, nullable — A description of what the segment is for
          - `project` string, nullable — The project the segment belongs to if any.
          - `constraints` ConstraintSchema[], required — The list of constraints that make up this segment
            - `contextName` string, required — The name of the context field that this constraint should apply to.
            - `operator` 'NOT_IN' | 'IN' | 'STR_ENDS_WITH' | 'STR_STARTS_WITH' | 'STR_CONTAINS' | 'NUM_EQ' | 'NUM_GT' | 'NUM_GTE' | 'NUM_LT' | 'NUM_LTE' | 'DATE_AFTER' | 'DATE_BEFORE' | 'SEMVER_EQ' | 'SEMVER_GT' | 'SEMVER_LT' | 'SEMVER_GTE' | 'SEMVER_LTE' | 'REGEX', required — The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators).
            - `caseInsensitive` boolean — Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive).
            - `inverted` boolean — Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa.
            - `values` string[] — The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values.
            - `value` string — The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values.
      - object
        - `action` 'deleteSegment', required — The name of this action.
        - `payload` object, required — Required data to delete a segment.
          - `id` integer, required — The ID of the segment to delete.
      - object — Update the enabled state for a feature.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'updateEnabled', required — The name of this action.
        - `payload` object, required
          - `enabled` boolean, required — The new state of the feature.
          - `shouldActivateDisabledStrategies` boolean — Only relevant when ALL the strategies are disabled. If `true`, all the disabled strategies will be enabled. If `false`, the default strategy will be added
      - object — Add a strategy to the feature
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'addStrategy', required — The name of this action.
        - `payload` CreateFeatureStrategySchema, required — Create a strategy configuration in a feature
          - `name` string, required — The name of the strategy type
          - `title` string, nullable — A descriptive title for the strategy
          - `disabled` boolean, nullable — A toggle to disable the strategy. defaults to false. Disabled strategies are not evaluated or returned to the SDKs
          - `sortOrder` number — The order of the strategy in the list
          - `constraints` ConstraintSchema[] — A list of the constraints attached to the strategy. See https://docs.getunleash.io/concepts/activation-strategies#constraints
            - `contextName` string, required — The name of the context field that this constraint should apply to.
            - `operator` 'NOT_IN' | 'IN' | 'STR_ENDS_WITH' | 'STR_STARTS_WITH' | 'STR_CONTAINS' | 'NUM_EQ' | 'NUM_GT' | 'NUM_GTE' | 'NUM_LT' | 'NUM_LTE' | 'DATE_AFTER' | 'DATE_BEFORE' | 'SEMVER_EQ' | 'SEMVER_GT' | 'SEMVER_LT' | 'SEMVER_GTE' | 'SEMVER_LTE' | 'REGEX', required — The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators).
            - `caseInsensitive` boolean — Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive).
            - `inverted` boolean — Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa.
            - `values` string[] — The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values.
            - `value` string — The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values.
          - `variants` CreateStrategyVariantSchema[] — Strategy level variants
            - `name` string, required — The variant name. Must be unique for this feature flag
            - `weight` integer, required — The weight is the likelihood of any one user getting this variant. It is an integer between 0 and 1000. See the section on [variant weights](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight) for more information
            - `weightType` 'variable' | 'fix', required — Set to `fix` if this variant must have exactly the weight allocated to it. If the type is `variable`, the weight will adjust so that the total weight of all variants adds up to 1000. Refer to the [variant weight documentation](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight).
            - `stickiness` string, required — The [stickiness](https://docs.getunleash.io/concepts/feature-flag-variants#variant-stickiness) to use for distribution of this variant. Stickiness is how Unleash guarantees that the same user gets the same variant every time
            - `payload` object — Extra data configured for this variant
              - …
          - `parameters` ParametersSchema — A list of parameters for a strategy
          - `segments` number[] — Ids of segments to use for this strategy
      - object — Update a milestone strategy belonging to this feature.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'updateMilestoneStrategy', required — The name of this action.
        - `payload` UpdateMilestoneStrategySchema, required — Update a milestone strategy configuration for a feature flag
          - `sortOrder` number — The order of the strategy in the list in feature environment configuration
          - `constraints` ConstraintSchema[] — A list of the constraints attached to the strategy. See https://docs.getunleash.io/concepts/activation-strategies#constraints
            - `contextName` string, required — The name of the context field that this constraint should apply to.
            - `operator` 'NOT_IN' | 'IN' | 'STR_ENDS_WITH' | 'STR_STARTS_WITH' | 'STR_CONTAINS' | 'NUM_EQ' | 'NUM_GT' | 'NUM_GTE' | 'NUM_LT' | 'NUM_LTE' | 'DATE_AFTER' | 'DATE_BEFORE' | 'SEMVER_EQ' | 'SEMVER_GT' | 'SEMVER_LT' | 'SEMVER_GTE' | 'SEMVER_LTE' | 'REGEX', required — The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators).
            - `caseInsensitive` boolean — Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive).
            - `inverted` boolean — Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa.
            - `values` string[] — The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values.
            - `value` string — The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values.
          - `title` string, nullable — A descriptive title for the strategy
          - `disabled` boolean, nullable — A toggle to disable the strategy. defaults to true. Disabled strategies are not evaluated or returned to the SDKs
          - `variants` StrategyVariantSchema[] — Strategy level variants
            - `name` string, required — The variant name. Must be unique for this feature flag
            - `weight` integer, required — The weight is the likelihood of any one user getting this variant. It is an integer between 0 and 1000. See the section on [variant weights](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight) for more information
            - `weightType` 'variable' | 'fix', required — Set to `fix` if this variant must have exactly the weight allocated to it. If the type is `variable`, the weight will adjust so that the total weight of all variants adds up to 1000. Refer to the [variant weight documentation](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight).
            - `stickiness` string, required — The [stickiness](https://docs.getunleash.io/concepts/feature-flag-variants#variant-stickiness) to use for distribution of this variant. Stickiness is how Unleash guarantees that the same user gets the same variant every time
            - `payload` object — Extra data configured for this variant
              - …
          - `segments` number[] — A list of segment ids attached to the strategy
          - `parameters` ParametersSchema — A list of parameters for a strategy
      - object — Update a strategy belonging to this feature.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'updateStrategy', required — The name of this action.
        - `payload` UpdateFeatureStrategySchema, required — Update a strategy configuration in a feature
          - `name` string — The name of the strategy type. This property is deprecated and the ability to change a strategy's type will be removed in a future release.
          - `sortOrder` number — The order of the strategy in the list in feature environment configuration
          - `constraints` ConstraintSchema[] — A list of the constraints attached to the strategy. See https://docs.getunleash.io/concepts/activation-strategies#constraints
            - `contextName` string, required — The name of the context field that this constraint should apply to.
            - `operator` 'NOT_IN' | 'IN' | 'STR_ENDS_WITH' | 'STR_STARTS_WITH' | 'STR_CONTAINS' | 'NUM_EQ' | 'NUM_GT' | 'NUM_GTE' | 'NUM_LT' | 'NUM_LTE' | 'DATE_AFTER' | 'DATE_BEFORE' | 'SEMVER_EQ' | 'SEMVER_GT' | 'SEMVER_LT' | 'SEMVER_GTE' | 'SEMVER_LTE' | 'REGEX', required — The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators).
            - `caseInsensitive` boolean — Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive).
            - `inverted` boolean — Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa.
            - `values` string[] — The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values.
            - `value` string — The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values.
          - `title` string, nullable — A descriptive title for the strategy
          - `disabled` boolean, nullable — A toggle to disable the strategy. defaults to true. Disabled strategies are not evaluated or returned to the SDKs
          - `variants` StrategyVariantSchema[] — Strategy level variants
            - `name` string, required — The variant name. Must be unique for this feature flag
            - `weight` integer, required — The weight is the likelihood of any one user getting this variant. It is an integer between 0 and 1000. See the section on [variant weights](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight) for more information
            - `weightType` 'variable' | 'fix', required — Set to `fix` if this variant must have exactly the weight allocated to it. If the type is `variable`, the weight will adjust so that the total weight of all variants adds up to 1000. Refer to the [variant weight documentation](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight).
            - `stickiness` string, required — The [stickiness](https://docs.getunleash.io/concepts/feature-flag-variants#variant-stickiness) to use for distribution of this variant. Stickiness is how Unleash guarantees that the same user gets the same variant every time
            - `payload` object — Extra data configured for this variant
              - …
          - `segments` number[] — A list of segment ids attached to the strategy
          - `parameters` ParametersSchema — A list of parameters for a strategy
      - object — Delete a strategy from this feature.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'deleteStrategy', required — The name of this action.
        - `payload` object, required
          - `id` string, required — The ID of the strategy to update.
      - object — Archive a feature.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'archiveFeature', required — The name of this action.
      - object — Update variants for this feature.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'patchVariant', required — The name of this action.
        - `payload` object, required
          - `variants` VariantSchema[], required
            - `name` string, required — The variants name. Is unique for this feature flag
            - `weight` number, required — The weight is the likelihood of any one user getting this variant. It is a number between 0 and 1000. See the section on [variant weights](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight) for more information
            - `weightType` 'variable' | 'fix' — Set to fix if this variant must have exactly the weight allocated to it. If the type is variable, the weight will adjust so that the total weight of all variants adds up to 1000
            - `stickiness` string — [Stickiness](https://docs.getunleash.io/concepts/feature-flag-variants#variant-stickiness) is how Unleash guarantees that the same user gets the same variant every time
            - `payload` object — Extra data configured for this variant
              - …
            - `overrides` OverrideSchema[] — Overrides assigning specific variants to specific users. The weighting system automatically assigns users to specific groups for you, but any overrides in this list will take precedence.
              - …
      - object — Reorder strategies for this feature
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'reorderStrategy', required — The name of this action.
        - `payload` object[], required — An array of strategies with their new sort order
          - `id` string, required — The ID of the strategy
          - `sortOrder` number, required — The new sort order of the strategy
      - object — Add a parent feature dependency.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'addDependency', required — The name of this action.
        - `payload` CreateDependentFeatureSchema, required — Feature dependency on a parent feature in write model
          - `feature` string, required — The name of the feature we depend on.
          - `enabled` boolean — Whether the parent feature should be enabled. When `false` variants are ignored. `true` by default.
          - `variants` string[] — The list of variants the parent feature should resolve to. Leave empty when you only want to check the `enabled` status.
      - object — Remove a parent feature dependency or all dependencies if no payload.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'deleteDependency', required — The name of this action.
      - object — Add a release plan to this feature environment.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'addReleasePlan', required — The name of this action.
        - `payload` ReleasePlanTemplateIdSchema, required — Schema for creating a release plan for a feature flag environment by copying and applying the configuration from a release plan template.
          - `templateId` string, required — The release plan template's ID. Release template IDs are ulids.
      - object — Start milestone of feature environment release plan.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'startMilestone', required — The name of this action.
        - `payload` object, required — The ID of the release plan and which of its milestones to start.
          - `milestoneId` string, required — The ID of the milestone to start. This ID is an ulid
          - `planId` string, required — The ID of the release plan. This ID is an ulid
      - object — Remove a release plan from feature environment.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'deleteReleasePlan', required — The name of this action.
        - `payload` object, required — The Id of the release plan to remove.
          - `planId` string, required — The Id of the release plan. This id is an ulid
      - object — Create or update milestone progression from one milestone to another.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'changeMilestoneProgression', required — The name of this action.
        - `payload` object, required
          - `sourceMilestone` string, required — The ID of the source milestone
          - `targetMilestone` string, required — The ID of the target milestone
          - `transitionCondition` TransitionConditionSchema, required — A transition condition for milestone progression
            - `intervalMinutes` integer, required — The interval in minutes before transitioning
      - object — Delete milestone progression.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'deleteMilestoneProgression', required — The name of this action.
        - `payload` object, required
          - `sourceMilestone` string, required — The ID of the source milestone with progression to delete.
      - object — Resume paused milestone progressions for a release plan.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'resumeMilestoneProgression', required — The name of this action.
        - `payload` object, required
          - `planId` string, required — The release plan's unique identifier (ULID format)
      - object — Create or update a safeguard for a release plan.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'changeReleasePlanSafeguard', required — The name of this action.
        - `payload` object, required
          - `planId` string, required — The ID of the release plan. This ID is an ulid
          - `safeguard` CreateSafeguardSchema, required — Request body to create a safeguard with metric-based alert condition.
            - `impactMetric` object, required — Metric configuration that should be evaluated for the safeguard.
              - …
            - `triggerCondition` SafeguardTriggerConditionSchema, required — The condition that triggers the safeguard.
              - …
      - object — Delete a safeguard from a release plan.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'deleteReleasePlanSafeguard', required — The name of this action.
        - `payload` object, required
          - `planId` string, required — The ID of the release plan. This ID is an ulid
          - `safeguardId` string, required — The ID of the safeguard to delete.
      - object — Create or update a safeguard for a feature environment.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'changeFeatureEnvSafeguard', required — The name of this action.
        - `payload` object, required
          - `safeguard` CreateSafeguardSchema, required — Request body to create a safeguard with metric-based alert condition.
            - `impactMetric` object, required — Metric configuration that should be evaluated for the safeguard.
              - …
            - `triggerCondition` SafeguardTriggerConditionSchema, required — The condition that triggers the safeguard.
              - …
      - object — Delete a safeguard from a feature environment.
        - `feature` string, required — The name of the feature that this change applies to.
        - `action` 'deleteFeatureEnvSafeguard', required — The name of this action.
        - `payload` object, required
          - `safeguardId` string, required — The ID of the safeguard to delete.

## Response `200`

changeRequestSchema

- union — A [change request](https://docs.getunleash.io/concepts/change-requests)
  - object
    - `id` number, required — This change requests's ID.
    - `title` string — A title describing the change request's content.
    - `environment` string, required — The environment in which the changes should be applied.
    - `minApprovals` number, required — The minimum number of approvals required before this change request can be applied.
    - `project` string, required — The project this change request belongs to.
    - `features` ChangeRequestFeatureSchema[], required — The list of features and their changes that relate to this change request.
      - `name` string, required — The name of the feature
      - `conflict` string — A string describing the conflicts related to this change. Only present if there are any conflicts on the feature level.
      - `changes` ChangeRequestChangeSchema[], required — List of changes inside change request. This list may be empty when listing all change requests for a project.
        - `id` number, required — The ID of this change.
        - `action` string, required — The kind of action that the change contains information about.
        - `conflict` string — A description of the conflict caused by this change. Only present if there are any conflicts.
        - `payload` union — The data required to perform this action.
          - string
          - boolean
          - object
          - number
          - object[] — An array of strategies with their new sort order
            - `id` string, required — The ID of the strategy
            - `sortOrder` number, required — The new sort order of the strategy
        - `createdBy` object — The user who created this change.
          - `username` string, nullable — The user's username.
          - `imageUrl` string, uri, nullable — The URL where the user's image can be found.
        - `createdAt` string, date-time — When this change was suggested
        - `scheduleConflicts` object — Information about scheduled change requests that would casue conflicts with this change if applied.
          - `changeRequests` object[], required — The list of scheduled change requests that would cause conflict with this change.
            - `id` number, required — The ID of the change request.
            - `title` string — The title of the change request, if any. Only present if there is a title.
      - `defaultChange` ChangeRequestDefaultChangeSchema — A description of a default change that will be applied with the change request to prevent invalid states. Default changes are changes that are applied in addition to explicit user-specified changes when a change request is applied. Any default changes are applied in the background and are not a real part of the change request.
        - `action` string, required — The kind of action this is.
        - `payload` object, required — The necessary data to perform this change.
    - `segments` ChangeRequestSegmentChangeSchema[], required — The list of segments and their changes that relate to this change request.
      - `id` number, required — The ID of this change.
      - `action` string, required — The kind of action that the change contains information about.
      - `conflict` string — A description of the conflict caused by this change. Only present if there are any conflicts.
      - `payload` union, required — The data required to perform this action.
        - string
        - boolean
        - object
        - number
        - object[] — An array of strategies with their new sort order
          - `id` string, required — The ID of the strategy
          - `sortOrder` number, required — The new sort order of the strategy
      - `createdBy` object — The user who created this change.
        - `username` string, nullable — The user's username.
        - `imageUrl` string, uri, nullable — The URL where the user's image can be found.
      - `createdAt` string, date-time — When this change was suggested
      - `scheduleConflicts` object — Information about scheduled change requests that would casue conflicts with this change if applied.
        - `changeRequests` object[], required — The list of scheduled change requests that would cause conflict with this change.
          - `id` number, required — The ID of the change request.
          - `title` string — The title of the change request, if any. Only present if there is a title.
      - `name` string, required — The current name of the segment
    - `approvals` ChangeRequestApprovalSchema[] — A list of approvals that this change request has received.
      - `createdBy` object, required — Information about the user who gave this approval.
        - `id` number — The ID of the user who gave this approval.
        - `username` string — The approving user's username.
        - `imageUrl` string, uri — The URL where the user's image can be found.
      - `createdAt` string, date-time, required — When the approval was given.
    - `rejections` ChangeRequestApprovalSchema[] — A list of rejections that this change request has received.
      - `createdBy` object, required — Information about the user who gave this approval.
        - `id` number — The ID of the user who gave this approval.
        - `username` string — The approving user's username.
        - `imageUrl` string, uri — The URL where the user's image can be found.
      - `createdAt` string, date-time, required — When the approval was given.
    - `comments` ChangeRequestCommentSchema[] — All comments that have been made on this change request.
      - `id` number — The comment's ID. Unique per change request.
      - `text` string, required — The content of the comment.
      - `createdBy` object, required — Information about the user who posted the comment
        - `username` string, nullable — The user's username.
        - `imageUrl` string, uri, nullable — The URL where the user's image can be found.
      - `createdAt` string, date-time, required — When the comment was made.
    - `createdBy` object, required — The user who created this change request.
      - `username` string, nullable
      - `imageUrl` string, uri, nullable — The URL of the user's profile image.
    - `createdAt` string, date-time, required — When this change request was created.
    - `stateTimestamps` object, required — A mapping of each state this change request has entered to the most recent time when it entered that state. If a change request has entered the same state multiple times, only the most recent timestamp will be included.
    - `state` 'Draft' | 'In review' | 'Approved' | 'Applied' | 'Cancelled' | 'Rejected', required — The current state of the change request.
  - object
    - `id` number, required — This change requests's ID.
    - `title` string — A title describing the change request's content.
    - `environment` string, required — The environment in which the changes should be applied.
    - `minApprovals` number, required — The minimum number of approvals required before this change request can be applied.
    - `project` string, required — The project this change request belongs to.
    - `features` ChangeRequestFeatureSchema[], required — The list of features and their changes that relate to this change request.
      - `name` string, required — The name of the feature
      - `conflict` string — A string describing the conflicts related to this change. Only present if there are any conflicts on the feature level.
      - `changes` ChangeRequestChangeSchema[], required — List of changes inside change request. This list may be empty when listing all change requests for a project.
        - `id` number, required — The ID of this change.
        - `action` string, required — The kind of action that the change contains information about.
        - `conflict` string — A description of the conflict caused by this change. Only present if there are any conflicts.
        - `payload` union — The data required to perform this action.
          - string
          - boolean
          - object
          - number
          - object[] — An array of strategies with their new sort order
            - `id` string, required — The ID of the strategy
            - `sortOrder` number, required — The new sort order of the strategy
        - `createdBy` object — The user who created this change.
          - `username` string, nullable — The user's username.
          - `imageUrl` string, uri, nullable — The URL where the user's image can be found.
        - `createdAt` string, date-time — When this change was suggested
        - `scheduleConflicts` object — Information about scheduled change requests that would casue conflicts with this change if applied.
          - `changeRequests` object[], required — The list of scheduled change requests that would cause conflict with this change.
            - `id` number, required — The ID of the change request.
            - `title` string — The title of the change request, if any. Only present if there is a title.
      - `defaultChange` ChangeRequestDefaultChangeSchema — A description of a default change that will be applied with the change request to prevent invalid states. Default changes are changes that are applied in addition to explicit user-specified changes when a change request is applied. Any default changes are applied in the background and are not a real part of the change request.
        - `action` string, required — The kind of action this is.
        - `payload` object, required — The necessary data to perform this change.
    - `segments` ChangeRequestSegmentChangeSchema[], required — The list of segments and their changes that relate to this change request.
      - `id` number, required — The ID of this change.
      - `action` string, required — The kind of action that the change contains information about.
      - `conflict` string — A description of the conflict caused by this change. Only present if there are any conflicts.
      - `payload` union, required — The data required to perform this action.
        - string
        - boolean
        - object
        - number
        - object[] — An array of strategies with their new sort order
          - `id` string, required — The ID of the strategy
          - `sortOrder` number, required — The new sort order of the strategy
      - `createdBy` object — The user who created this change.
        - `username` string, nullable — The user's username.
        - `imageUrl` string, uri, nullable — The URL where the user's image can be found.
      - `createdAt` string, date-time — When this change was suggested
      - `scheduleConflicts` object — Information about scheduled change requests that would casue conflicts with this change if applied.
        - `changeRequests` object[], required — The list of scheduled change requests that would cause conflict with this change.
          - `id` number, required — The ID of the change request.
          - `title` string — The title of the change request, if any. Only present if there is a title.
      - `name` string, required — The current name of the segment
    - `approvals` ChangeRequestApprovalSchema[] — A list of approvals that this change request has received.
      - `createdBy` object, required — Information about the user who gave this approval.
        - `id` number — The ID of the user who gave this approval.
        - `username` string — The approving user's username.
        - `imageUrl` string, uri — The URL where the user's image can be found.
      - `createdAt` string, date-time, required — When the approval was given.
    - `rejections` ChangeRequestApprovalSchema[] — A list of rejections that this change request has received.
      - `createdBy` object, required — Information about the user who gave this approval.
        - `id` number — The ID of the user who gave this approval.
        - `username` string — The approving user's username.
        - `imageUrl` string, uri — The URL where the user's image can be found.
      - `createdAt` string, date-time, required — When the approval was given.
    - `comments` ChangeRequestCommentSchema[] — All comments that have been made on this change request.
      - `id` number — The comment's ID. Unique per change request.
      - `text` string, required — The content of the comment.
      - `createdBy` object, required — Information about the user who posted the comment
        - `username` string, nullable — The user's username.
        - `imageUrl` string, uri, nullable — The URL where the user's image can be found.
      - `createdAt` string, date-time, required — When the comment was made.
    - `createdBy` object, required — The user who created this change request.
      - `username` string, nullable
      - `imageUrl` string, uri, nullable — The URL of the user's profile image.
    - `createdAt` string, date-time, required — When this change request was created.
    - `stateTimestamps` object, required — A mapping of each state this change request has entered to the most recent time when it entered that state. If a change request has entered the same state multiple times, only the most recent timestamp will be included.
    - `state` 'Scheduled', required — The current state of the change request.
    - `schedule` union, required — A schedule for a change request's application. The schedule can either be pending, failed, or suspended. The schedule will always contain the state of the schedule and the last scheduled time, but other data varies between the different states.
      - object — A pending schedule for a change request.
        - `scheduledAt` string, date-time, required — When this change request will be applied.
        - `status` 'pending', required — The status of the schedule.
      - object — A failed schedule for a change request.
        - `scheduledAt` string, date-time, required — When Unleash last attempted to apply this change request.
        - `status` 'failed', required — The status of the schedule.
        - `reason` string, required — The reason the scheduled failed to apply.
        - `failureReason` string, nullable — The reason the scheduled failed to apply. Deprecated in favor of the `reason` property.
      - object — A suspended schedule for a change request.
        - `scheduledAt` string, date-time, required — When Unleash would have attempted to apply this change request if the schedule was not suspended.
        - `status` 'suspended', required — The status of the schedule.
        - `reason` string, required — Why the schedule was suspended.

## Other responses

- `400` — The request data does not match what we expect.

---

[API](https://skmtc.net/unleash/apis/unleash-api-3.md) · [All operations](https://skmtc.net/unleash/apis/unleash-api-3/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/unleash/unleash-api-3/revisions/b2c3116e633e/schema)
