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

# POST /mr-api/application/{appId}/rollout-strategy-validation

`POST /mr-api/application/{appId}/rollout-strategy-validation`

Provide server validation responses for this group of rollout strategies

## Path parameters

- `appId` string, uuid, required

## Request body

- RolloutStrategyValidationRequest — A collection of strategies to validate together to see if it violates any rules
  - `customStrategies` RolloutStrategy[]
    - `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.
  - `sharedStrategies` RolloutStrategyInstance[]
    - `name` string — This is copied from the shared rollout strategy on return, it is read only from the client perspective
    - `strategyId` string, uuid
    - `value` unknown
    - `disabled` boolean

## Response `200`

validation results

- RolloutStrategyValidationResponse
  - `customStategyViolations` CustomRolloutStrategyViolation[]
    - `strategy` 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.
    - `violations` RolloutStrategyViolation[]
      - `id` string — The id of the attribute (if any)
      - `violation` 'no_name' | 'name_too_long' | 'empty_match_criteria' | 'negative_percentage' | 'percentage_over_100_percent' | 'array_attribute_no_values' | 'attr_invalid_well_known_enum' | 'attr_missing_value' | 'attr_missing_conditional' | 'attr_missing_field_name' | 'attr_missing_field_type' | 'attr_val_not_semantic_version' | 'attr_val_not_number' | 'attr_val_not_date' | 'attr_val_not_date_time' | 'attr_val_not_cidr' | 'attr_unknown_failure', required
  - `sharedStrategyViolations` SharedRolloutStrategyViolation[]
    - `strategy` RolloutStrategyInstance
      - `name` string — This is copied from the shared rollout strategy on return, it is read only from the client perspective
      - `strategyId` string, uuid
      - `value` unknown
      - `disabled` boolean
    - `violation` RolloutStrategyViolation[]
      - `id` string — The id of the attribute (if any)
      - `violation` 'no_name' | 'name_too_long' | 'empty_match_criteria' | 'negative_percentage' | 'percentage_over_100_percent' | 'array_attribute_no_values' | 'attr_invalid_well_known_enum' | 'attr_missing_value' | 'attr_missing_conditional' | 'attr_missing_field_name' | 'attr_missing_field_type' | 'attr_val_not_semantic_version' | 'attr_val_not_number' | 'attr_val_not_date' | 'attr_val_not_date_time' | 'attr_val_not_cidr' | 'attr_unknown_failure', required
  - `violations` RolloutStrategyCollectionViolationType[]

## Other responses

- `400` — invalid body
- `401` — no permission

---

[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)
