---
title: "PUT /mr-api/application/{appId}/rollout-strategy/{strategyIdOrName}"
method: PUT
path: "/mr-api/application/{appId}/rollout-strategy/{strategyIdOrName}"
tags: ["RolloutStrategyService"]
---

# PUT /mr-api/application/{appId}/rollout-strategy/{strategyIdOrName}

`PUT /mr-api/application/{appId}/rollout-strategy/{strategyIdOrName}`

## Request body

- RolloutStrategy — if the feature in an environment is different from its default, this will be the reason for it. a rollout strategy is defined at the Application level and then applied to a specific feature value. When they are copied to the cache layer they are cloned and the feature value for that strategy is inserted into the clone and those are published.
  - `id` string
  - `percentage` integer — value between 0 and 1000000 - for four decimal places
  - `percentageAttributes` string[] — if you don't wish to apply percentage based on user id, you can use one or more attributes defined here
  - `value` unknown
  - `attributes` object[]
    - `conditional` 'EQUALS' | 'ENDS_WITH' | 'STARTS_WITH' | 'GREATER' | 'GREATER_EQUALS' | 'LESS' | 'LESS_EQUALS' | 'NOT_EQUALS' | 'INCLUDES' | 'EXCLUDES' | 'REGEX'
    - `fieldName` string
    - `values` RolloutStrategyArrayType[] — the value(s) associated with this rule
      - unknown
    - `type` 'STRING' | 'SEMANTIC_VERSION' | 'NUMBER' | 'DATE' | 'DATETIME' | 'BOOLEAN' | 'IP_ADDRESS'
    - `id` string — A temporary id used only when validating. Saving strips these out as they are not otherwise necessary
  - `name` string, required — names are unique in a case insensitive fashion
  - `colouring` integer — the colour used to display the strategy in the UI. indexed table of background/foreground combos.
  - `avatar` string — url to avatar (if any). Not sent to SDK. Preferably a unicorn.

## Response `200`

The created rollout strategy for this application

- RolloutStrategyInfo
  - `rolloutStrategy` RolloutStrategy, required — if the feature in an environment is different from its default, this will be the reason for it. a rollout strategy is defined at the Application level and then applied to a specific feature value. When they are copied to the cache layer they are cloned and the feature value for that strategy is inserted into the clone and those are published.
    - `id` string
    - `percentage` integer — value between 0 and 1000000 - for four decimal places
    - `percentageAttributes` string[] — if you don't wish to apply percentage based on user id, you can use one or more attributes defined here
    - `value` unknown
    - `attributes` object[]
      - `conditional` 'EQUALS' | 'ENDS_WITH' | 'STARTS_WITH' | 'GREATER' | 'GREATER_EQUALS' | 'LESS' | 'LESS_EQUALS' | 'NOT_EQUALS' | 'INCLUDES' | 'EXCLUDES' | 'REGEX'
      - `fieldName` string
      - `values` RolloutStrategyArrayType[] — the value(s) associated with this rule
        - unknown
      - `type` 'STRING' | 'SEMANTIC_VERSION' | 'NUMBER' | 'DATE' | 'DATETIME' | 'BOOLEAN' | 'IP_ADDRESS'
      - `id` string — A temporary id used only when validating. Saving strips these out as they are not otherwise necessary
    - `name` string, required — names are unique in a case insensitive fashion
    - `colouring` integer — the colour used to display the strategy in the UI. indexed table of background/foreground combos.
    - `avatar` string — url to avatar (if any). Not sent to SDK. Preferably a unicorn.
  - `whenArchived` string, date-time
  - `changedBy` Person
    - `id` PersonId
      - `id` string, uuid, required
    - `name` string
    - `email` string, email
    - `personType` 'person' | 'serviceAccount' | 'sdkServiceAccount'
    - `other` string
    - `source` string
    - `version` integer
    - `passwordRequiresReset` boolean
    - `groups` Group[]
      - `createdBy` Person — recursive
      - `updatedBy` Person — recursive
      - `whenCreated` string, date-time
      - `whenUpdated` string, date-time
      - `id` string, uuid
      - `admin` boolean — is this an admin group?
      - `portfolioId` string, uuid
      - `organizationId` string, uuid — this will be the organisation this group belongs to at the top level, or if a portfolio group, the organisation of the portfolio
      - `version` integer
      - `name` string, required
      - `members` Person[]
      - `applicationRoles` ApplicationGroupRole[]
        - `applicationId` string, uuid, required
        - `groupId` string, uuid, required
        - `roles` ApplicationRoleType[], required
      - `environmentRoles` EnvironmentGroupRole[]
        - `environmentId` string, uuid, required
        - `groupId` string, uuid, required
        - `roles` RoleType[], required
      - `whenArchived` string, date-time
    - `whenArchived` string, date-time
    - `whenLastAuthenticated` string, date-time — This is the timestamp in UTC when they last logged into the system
    - `whenLastSeen` string, date-time — This is the timestamp in UTC when they last made a request to the system on their most recent login. If it is null it means they have no current token or have never logged in.
    - `additional` PersonInfo[]
      - `key` string, required — e.g. serviceAccountId
      - `value` string, required

## Other responses

- `400` — Bad Request
- `401` — no permission
- `403` — forbidden
- `404` — not found
- `409` — duplicate strategy name

---

[API](https://skmtc.net/featurehub-io/apis/managementresourceapi.md) · [All operations](https://skmtc.net/featurehub-io/apis/managementresourceapi/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/featurehub-io/managementresourceapi/versions/faed5fd616c3/schema)
