---
title: "Edit Dynamic Config Review"
method: PUT
path: "/console/v1/dynamic_configs/{id}/reviews/{reviewID}"
tags: ["Dynamic Configs"]
---

# Edit Dynamic Config Review

`PUT /console/v1/dynamic_configs/{id}/reviews/{reviewID}`

## Path parameters

- `id` string, required
- `reviewID` string, required

## Request body

- EditDCReviewRequestDto — Request body for PUT /console/v1/dynamic_configs/:id/reviews/:reviewID
  - `description` string — Updated human-readable description of the proposed change.
  - `reviewer_ids` string[] — Replacement set of user IDs to request review from. Replaces the existing set.
  - `reviewer_group_ids` string[] — Replacement set of reviewer group IDs to request review from. Replaces the existing set.
  - `change` object — The proposed change. Provide exactly one change slot: the content bundle (`rules` and/or `default_value`), one verb/metadata field, or `restore`.
    - `rules` object[] — Proposed full rule set for the dynamic config. Same shape as the DC update contract.
      - `name` string, required — The name of this rule.
      - `passPercentage` number — Of the users that meet the conditions of this rule, what percent should return true.
      - `conditions` object[], required — An array of Condition objects.
        - `targetValue` union
          - string[]
          - number[]
          - string
          - number
        - `operator` string
        - `field` string, nullable
        - `customID` string, nullable
        - `type` 'app_version' | 'browser_name' | 'browser_version' | 'country' | 'custom_field' | 'email' | 'environment_tier' | 'fails_gate' | 'fails_segment' | 'ip_address' | 'locale' | 'os_name' | 'os_version' | 'passes_gate' | 'passes_segment' | 'public' | 'time' | 'unit_id' | 'user_id' | 'user_agent' | 'url' | 'javascript' | 'device_model' | 'target_app' | 'experiment_group', required
      - `environments` string[], nullable
      - `id` string — The Statsig ID of this rule.
      - `baseID` string — The base ID of this rule, i.e. without any added metadata. Will remain the exact same throughout
      - `returnValue` object
      - `completedAutomatedRollouts` object[] — Read-only: Automated rollout phases that have already completed.
        - `time` number
        - `passPercent` number, required
      - `pendingAutomatedRollouts` object[] — Read-only: Automated rollout phases that are scheduled but not yet complete.
        - `time` number
        - `passPercent` number, required
      - `returnValueJson5` string
      - `variants` object[]
        - `id` string
        - `name` string, required
        - `passPercentage` number, required
        - `returnValue` object
        - `returnValueJson5` string
    - `default_value` object — Proposed default value for the dynamic config as a JSON object.
    - `is_enabled` boolean — Proposed enabled state for the dynamic config. An explicit target, not a toggle.
    - `is_archived` boolean — Proposed archived state for the dynamic config. `true` archives, `false` unarchives.
    - `delete` true — Delete the dynamic config. Set to `true`.
    - `resalt` true — Re-randomize the dynamic config's salt. Set to `true`.
    - `disable_reviews_locally` true — Stop requiring review on this dynamic config. Set to `true`.
    - `restore` object — Revert to a prior committed snapshot (review type `rules`).
      - `snapshot_id` string, required — Snapshot ID (SUID) of the committed historical state to restore.
    - `release_pipeline_id` string, nullable — Set or clear the dynamic config's release pipeline (review type `update_release_pipeline`). Pass a pipeline ID to attach, or `null` to detach.
    - `id_type` string — Change the dynamic config's primary unit ID type (review type `edit_id_type`).
    - `allow_self_approval` boolean — Whether this dynamic config's reviews may be self-approved (review type `update_allow_self_approval`).
    - `target_app_ids` string[] — Replace the dynamic config's target applications (review type `update_target_applications`).
    - `allowed_reviewers` object — Set who may review this dynamic config (review type `allowed_reviewers`).
      - `user_ids` string[] — User IDs allowed to review. Replaces the existing set.
      - `group_ids` string[] — Reviewer group IDs allowed to review. Replaces the existing set.

## Response `200`

The updated dynamic config review.

- object
  - `message` string, required — A simple string explaining the result of the operation.
  - `data` object, required — A single result.
    - `review_id` string, required — Unique ID of the review.
    - `status` 'pending' | 'accepted' | 'rejected' | 'committed' | 'changes_requested' | 'pending_webhook_validation' | 'failed_webhook_validation' | 'approved_webhook_validation', required — Lifecycle status of the review.
    - `type` 'rules' | 'toggle_enabled' | 'archive' | 'delete' | 'resalt' | 'disable_reviews_locally' | 'update_team' | 'update_release_pipeline' | 'edit_id_type' | 'update_allow_self_approval' | 'update_target_applications' | 'update_owners' | 'allowed_reviewers', required — Kind of change the review proposes.
    - `author` object, required — The user who created the review.
      - `id` string, required
      - `email` string, nullable, required
    - `reviewers` object[], required — Requested reviewers (users and groups).
      - `id` string, required
      - `kind` 'user' | 'group', required
    - `description` string, required — Human-readable description of the proposed change.
    - `created_at` string, required — ISO-8601 timestamp of when the review was created.

## Other responses

- `404` — Not Found. The requested resource could not be found.

---

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