---
title: "Updates a strategy attached to a milestone"
method: PUT
path: "/api/admin/release-plan-templates/{templateId}/milestones/{milestoneId}/strategies/{strategyId}"
tags: ["Release Templates"]
deprecated: true
---

# Updates a strategy attached to a milestone

`PUT /api/admin/release-plan-templates/{templateId}/milestones/{milestoneId}/strategies/{strategyId}`

## Request

- Base URL: `https://app.unleash-instance.example.com`
- URL: `https://app.unleash-instance.example.com/api/admin/release-plan-templates/{templateId}/milestones/{milestoneId}/strategies/{strategyId}`
- Auth: one of:
  - API key in header `Authorization`
  - HTTP bearer

> **Deprecated.**

**Enterprise feature**

Overwrites existing strategy configuration for the strategy referenced by the id

## Path parameters

- `templateId` string, required
- `milestoneId` string, required
- `strategyId` string, required

## Response `200`

#/components/schemas/releasePlanMilestoneStrategySchema

- ReleasePlanMilestoneStrategySchema: Schema representing the creation of a release plan milestone strategy.
  - `id` string, required: The milestone strategy's ID. Milestone strategy IDs are ulids.
  - `milestoneId` string, required: The ID of the milestone that this strategy belongs to.
  - `sortOrder` number, required: The order of the strategy in the list
  - `title` string, nullable: A descriptive title for the strategy
  - `name` string, required: The name of the strategy type
  - `strategyName` string, required: The name of the strategy type
  - `parameters` ParametersSchema: A list of parameters for a strategy
  - `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
  - `segments` number[]: Ids of segments to use for this strategy
  - `disabled` boolean, nullable: A toggle to disable the strategy. defaults to false. Disabled strategies are not evaluated or returned to the SDKs

## Other responses

- `401`: Authorization information is missing or invalid. Provide a valid API token as the `authorization` header, e.g. `authorization:*.*.my-admin-token`.
- `403`: The provided user credentials are valid, but the user does not have the necessary permissions to perform this operation
- `404`: The requested resource was not found.

## Changes

- **2026-07-31** `b2c3116e633e`: 2 warning
  - added the new `SEMVER_GTE` enum value to the `constraints/items/operator` response property for the response status `200`
  - added the new `SEMVER_LTE` enum value to the `constraints/items/operator` response property for the response status `200`
- **2026-06-15** `774670258f04`: 1 warning, 4 info
  - added the new `REGEX` enum value to the `constraints/items/operator` response property for the response status `200`
  - endpoint deprecated (stability: stable)
  - added the optional property `disabled` to the response with the `200` status
  - response property `strategyName` deprecated (stability: stable)
  - …1 more

[Operation history](https://skmtc.dev/unleash/apis/unleash-api-3/changes/api/admin/release-plan-templates/:templateId/milestones/:milestoneId/strategies/:strategyId/put.md)

---

[API](https://skmtc.dev/unleash/apis/unleash-api-3.md) - [All operations](https://skmtc.dev/unleash/apis/unleash-api-3/llms.txt) - [OpenAPI document](https://skmtc.dev/unleash/apis/unleash-api-3/revisions/b2c3116e633e?raw)
