---
title: "config/edit"
method: POST
path: "/config/edit"
tags: ["Configuration"]
---

# config/edit

`POST /config/edit`

Apply typed app, ad unit, ad unit group, account bidder, network mapping, list, tag, test-device, line-item, and A/B test config edits. Requires the `configuration:write` permission. Ordinary config edit actions apply to a draft: if config_id points to a draft, that draft is edited in place; otherwise a new draft is created. A/B test create also creates a draft. A/B test update, start, end, promote, and delete actions publish the resulting configuration as live and must be submitted as the only operation in the request. Ad-unit and line-item `bidfloor` values are decimal USD CPM; for example, `1.5` means $1.50 CPM.

## Request body

- ConfigEditRequest
  - `config_id` string — Config row ID to edit. Defaults to the current live config. Draft configs are edited in place; published configs are copied into a new draft.
  - `summary` string — Draft name or edit summary. Required for ordinary draft edits. Optional for A/B test operations; when provided, it is used as the draft or published version label.
  - `operations` ConfigEditOperation[], required
    - union — One typed config edit operation. Each operation object must contain exactly one supported action key.
      - ConfigCreateAppOperation
        - `create_app` ConfigCreateAppOperationItem[], required
          - `name` string, required
          - `bundle_id` string, required
          - `platform` string, required
          - `os_category` string, required
          - `description` string, nullable
          - `store_url` string, nullable
          - `icon_url` string, nullable
          - `app_store_id` string, nullable
      - ConfigUpdateAppOperation
        - `update_app` ConfigUpdateAppOperationItem[], required — Patch one or more apps. Each item requires id; omitted fields keep their current values. Send an empty string to clear optional string fields. JSON null does not clear fields; it is equivalent to omission.
          - `id` string, required
          - `name` string, nullable
          - `bundle_id` string, nullable
          - `platform` string, nullable
          - `os_category` string, nullable
          - `description` string, nullable
          - `store_url` string, nullable
          - `icon_url` string, nullable
          - `status` string, nullable
          - `app_store_id` string, nullable
      - ConfigDeleteAppOperation
        - `delete_app` ConfigDeleteAppOperationItem[], required
          - `id` string, required
      - ConfigCreateAdUnitOperation
        - `create_ad_unit` ConfigCreateAdUnitOperationItem[], required
          - `name` string, required
          - `type` string, required
          - `appId` string, required
          - `bidfloor` number, double, required
          - `bannerRefreshRateMs` integer, nullable
          - `nativeTemplate` string, nullable
          - `rewardAmount` number, double, nullable
          - `rewardCurrency` string, nullable
          - `rewardCallbackUrl` string, nullable
          - `frequencyCap` ConfigEditFrequencyCap
            - `maxImpressions` integer, required
            - `timeWindow` string, required
          - `arbiterEnabled` boolean, nullable
      - ConfigUpdateAdUnitOperation
        - `update_ad_unit` ConfigUpdateAdUnitOperationItem[], required — Patch one or more ad units. Each item requires id; omitted fields keep their current values, except omitted type-specific fields may be cleared when `type` changes to a format that does not support them. JSON null clears bannerRefreshRateMs, rewardAmount, frequencyCap, and rewardCurrency; null for nativeTemplate, rewardCallbackUrl, networkMappings, and arbiterEnabled acts like omission. Send [] for networkMappings or an empty string for optional string fields to clear them.
          - `id` string, required
          - `name` string
          - `type` string
          - `bidfloor` number, double
          - `bannerRefreshRateMs` integer, nullable
          - `nativeTemplate` string, nullable
          - `rewardAmount` number, double, nullable
          - `rewardCurrency` string, nullable
          - `rewardCallbackUrl` string, nullable
          - `frequencyCap` ConfigEditFrequencyCap
            - `maxImpressions` integer, required
            - `timeWindow` string, required
          - `networkMappings` ConfigEditNetworkMapping[], nullable
            - `adapter` string, required
            - `fields` object
          - `arbiterEnabled` boolean, nullable
      - ConfigDeleteAdUnitOperation
        - `delete_ad_unit` ConfigDeleteAdUnitOperationItem[], required
          - `id` string, required
      - ConfigUpsertNetworkMappingOperation
        - `upsert_network_mapping` ConfigUpsertNetworkMappingOperationItem[], required — Upsert one or more app-level or ad-unit-level network mappings. Each item requires adapter, fields, and exactly one of appId or adUnitId. Draft validation preserves adapter-specific required fields and value formats.
          - `appId` string, nullable
          - `adUnitId` string, nullable
          - `adapter` string, required
          - `fields` object, required
      - ConfigDeleteNetworkMappingOperation
        - `delete_network_mapping` ConfigDeleteNetworkMappingOperationItem[], required — Delete one or more app-level or ad-unit-level network mappings. Each item requires adapter and exactly one of appId or adUnitId.
          - `appId` string, nullable
          - `adUnitId` string, nullable
          - `adapter` string, required
      - ConfigUpsertAccountBidderOperation
        - `upsert_account_bidder` ConfigUpsertAccountBidderOperationItem[], required — Create or update one or more account bidders. Changes are applied to a draft config and require the normal config approval/publish flow.
          - `bidder_adapter` string, required
          - `status` 'ACTIVE' | 'INACTIVE', required
          - `network_id` string, nullable
          - `external_mappings` object, nullable
      - ConfigCreateAdUnitGroupOperation
        - `create_ad_unit_group` ConfigCreateAdUnitGroupOperationItem[], required
          - `name` string, required
          - `adUnitIds` string[], required
      - ConfigUpdateAdUnitGroupOperation
        - `update_ad_unit_group` ConfigUpdateAdUnitGroupOperationItem[], required — Update one or more ad unit groups. Each item requires id and the desired `adUnitIds` membership; name is optional.
          - `id` string, required
          - `name` string, nullable
          - `adUnitIds` string[], required
      - ConfigDeleteAdUnitGroupOperation
        - `delete_ad_unit_group` ConfigDeleteAdUnitGroupOperationItem[], required
          - `id` string, required
      - ConfigRemoveAdUnitFromGroupOperation
        - `remove_ad_unit_from_group` ConfigRemoveAdUnitFromGroupOperationItem[], required — Remove one or more ad units from ad unit groups. Each item requires adUnitGroupId and adUnitId; both may be IDs or resolvable references.
          - `adUnitGroupId` string, required
          - `adUnitId` string, required
      - ConfigCreateListOperation
        - `create_list` ConfigCreateListOperationItem[], required
          - `name` string, required
          - `type` string, required
          - `values` string[], required
      - ConfigUpdateListOperation
        - `update_list` ConfigUpdateListOperationItem[], required — Patch one or more lists. Each item requires id; omitted name, type, and values keep their current values. JSON null for values acts like omission. Send [] for values to clear the list intentionally. id may be a list ID or resolvable list reference.
          - `id` string, required
          - `name` string, nullable
          - `type` string, nullable
          - `values` string[], nullable
      - ConfigDeleteListOperation
        - `delete_list` ConfigDeleteListOperationItem[], required — Delete one or more lists. Deletes fail while the list is referenced by line-item targeting or account blocked-list settings.
          - `id` string, required
      - ConfigCreateTagOperation
        - `create_tag` ConfigCreateTagOperationItem[], required — Create one or more tags. Each item requires id and name; id must be a lowercase slug.
          - `id` string, required
          - `name` string, required
          - `frequencyCap` ConfigEditFrequencyCap
            - `maxImpressions` integer, required
            - `timeWindow` string, required
      - ConfigUpdateTagOperation
        - `update_tag` ConfigUpdateTagOperationItem[], required — Patch one or more tags. Each item requires id; omitted name and frequencyCap keep their current values. Send null for frequencyCap to clear it. id may be a tag ID or resolvable tag reference.
          - `id` string, required
          - `name` string, nullable
          - `frequencyCap` ConfigEditFrequencyCap
            - `maxImpressions` integer, required
            - `timeWindow` string, required
      - ConfigDeleteTagOperation
        - `delete_tag` ConfigDeleteTagOperationItem[], required — Delete one or more tags. Deletes fail while the tag is referenced by a line item.
          - `id` string, required
      - ConfigUpsertTestDeviceOperation
        - `upsert_test_device` ConfigUpsertTestDeviceOperationItem[], required — Create or patch one or more app test devices. Each item requires appId and deviceIfa; appId may be an app ID or resolvable app reference. Omitted deviceName, test, and debug fields keep their current values on existing devices. New devices default omitted test to 0 and omitted debug to false.
          - `appId` string, required
          - `deviceIfa` string, required
          - `deviceName` string, nullable
          - `test` integer, nullable
          - `debug` boolean, nullable
      - ConfigDeleteTestDeviceOperation
        - `delete_test_device` ConfigDeleteTestDeviceOperationItem[], required — Delete one or more app test devices. Each item requires appId and deviceIfa; appId may be an app ID or resolvable app reference.
          - `appId` string, required
          - `deviceIfa` string, required
      - ConfigCreateABTestOperation
        - `create_ab_test` ConfigABTestCreateRequest[], required — Create one A/B test draft for an ad unit. This action clones direct line items into test variants and creates a draft config for review; it never publishes a config. This action must be submitted as the only operation in the request.
          - `ad_unit_id` string, required — Ad unit ID or resolvable ad unit reference.
          - `name` string, required — A/B test name.
          - `traffic_ratio` number, double — Fraction of traffic assigned to the test variant. Defaults to 0.5. Must be greater than 0 and at most 0.5.
          - `countries` string[] — Countries targeted by the test variant. Accepts ISO 3166-1 alpha-2 or alpha-3 codes; values are stored as alpha-3.
      - ConfigUpdateABTestOperation
        - `update_ab_test` ConfigABTestUpdateRequest[], required — Update one draft A/B test and publish the updated configuration as live. This action must be submitted as the only operation in the request.
          - `ad_unit_id` string, required — Ad unit ID or resolvable ad unit reference.
          - `name` string, required — A/B test name.
          - `traffic_ratio` number, double, required — Fraction of traffic assigned to the test variant. Must be greater than 0 and at most 0.5.
          - `countries` string[] — Countries targeted by the test variant. Accepts ISO 3166-1 alpha-2 or alpha-3 codes; values are stored as alpha-3.
      - ConfigStartABTestOperation
        - `start_ab_test` ConfigABTestAdUnitRequest[], required — Start one draft A/B test and publish the configuration as live. This action must be submitted as the only operation in the request.
          - `ad_unit_id` string, required — Ad unit ID or resolvable ad unit reference.
      - ConfigEndABTestOperation
        - `end_ab_test` ConfigABTestEndRequest[], required — End one active A/B test and publish the configuration as live. This action must be submitted as the only operation in the request.
          - `ad_unit_id` string, required — Ad unit ID or resolvable ad unit reference.
          - `winner` 'control' | 'test' — Winning variant, either control or test. Omit when no winner is selected.
      - ConfigPromoteABTestOperation
        - `promote_ab_test` ConfigABTestAdUnitRequest[], required — Promote one completed A/B test's test variants to control line items and publish the configuration as live. This action must be submitted as the only operation in the request.
          - `ad_unit_id` string, required — Ad unit ID or resolvable ad unit reference.
      - ConfigDeleteABTestOperation
        - `delete_ab_test` ConfigABTestAdUnitRequest[], required — Delete one draft or completed A/B test and publish the configuration as live. This action must be submitted as the only operation in the request.
          - `ad_unit_id` string, required — Ad unit ID or resolvable ad unit reference.
      - ConfigCreateLineItemOperation
        - `create_line_item` ConfigCreateLineItemOperationItem[], required
          - `name` string, required
          - `priority` integer, required
          - `bidfloor` number, double, required
          - `status` 'draft' | 'active' | 'paused'
          - `tagRefs` string[], nullable
          - `flight` ConfigEditOpenObject
          - `schedule` ConfigEditOpenObject
          - `newTags` ConfigEditOpenObject[], nullable
          - `bidders` string[], nullable
          - `adUnitId` string, nullable
          - `adUnitGroupId` string, nullable
          - `blockedCategoriesListId` string, nullable
          - `blockedDomainsListId` string, nullable
          - `target` ConfigEditOpenObject
      - ConfigUpdateLineItemOperation
        - `update_line_item` ConfigUpdateLineItemOperationItem[], required — Patch one or more line items. Each item requires id; omitted fields keep their current values. Send null for nullable object/reference fields, or [] for array fields, to clear them. JSON null for array fields is accepted for compatibility and also clears them.
          - `id` string, required
          - `name` string
          - `priority` integer
          - `bidfloor` number, double
          - `status` 'draft' | 'active' | 'paused'
          - `tagRefs` string[], nullable
          - `flight` ConfigEditOpenObject
          - `schedule` ConfigEditOpenObject
          - `newTags` ConfigEditOpenObject[], nullable
          - `bidders` string[], nullable
          - `adUnitId` string, nullable
          - `adUnitGroupId` string, nullable
          - `blockedCategoriesListId` string, nullable
          - `blockedDomainsListId` string, nullable
          - `target` ConfigEditOpenObject
      - ConfigDeleteLineItemOperation
        - `delete_line_item` ConfigDeleteLineItemOperationItem[], required
          - `id` string, required

## Response `200`

Result of the applied config edit. Ordinary edits and A/B test create return a draft result; A/B test update, start, end, promote, and delete return a published config result.

- union
  - ConfigEditResponse
    - `id` string, required — Draft config ID containing the edited config.
    - `account_id` string, required
    - `kind` 'draft', required
    - `created` boolean, required — True when a new draft was created from a published or live config.
    - `base_config_id` string, required — Source config row ID that was edited or copied.
    - `applied_paths` string[], required
    - `validation` ConfigValidationResponse, required
      - `valid` boolean, required
      - `error_count` integer, required
      - `warning_count` integer, required
      - `issues` ConfigValidationIssue[], required
        - `code` string, required
        - `path` string
        - `message` string, required
        - `severity` 'error' | 'warning', required
        - `line` integer
        - `column` integer
        - `length` integer
      - `yaml` string, required
      - `source` ConfigValidationSource
        - `type` string
        - `name` string
  - ConfigABTestCreateResponse
    - `draft_id` string, required — Draft config ID containing the created A/B test.
  - ConfigABTestPublishResponse
    - `config_id` string, required — Published config row ID that is now live.
    - `version_number` integer, required — Account-local published config version number.

## Other responses

- `400` — Invalid request or config edit.
- `401` — Unauthorized.
- `403` — Forbidden.
- `404` — Config not found.
- `500` — Internal server error.

---

[API](https://skmtc.dev/cloudx/apis/cloudx-api.md) · [All operations](https://skmtc.dev/cloudx/apis/cloudx-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/cloudx/cloudx-api/revisions/ad78aa79d28a/schema)
