---
title: "Perform a bulk update on comp bands"
method: POST
path: "/v1/org/{orgId}/band/bulkupdate"
tags: ["band"]
---

# Perform a bulk update on comp bands

`POST /v1/org/{orgId}/band/bulkupdate`

## Path parameters

- `orgId` string, required

## Request body

- BulkCompBandUpdateRequest
  - `updates` CompBandUpdateOperation[], required — List of update operations to perform
    - `compBandId` string, required — Comp band ID to update
    - `update` UpdateCompBand, required
      - `label` string, required — human-readable name of content
      - `color` string, required — hex color associated with the band level
      - `baseCompMax` Money
        - `amount` number, required
        - `currency` string, required
        - `places` integer
      - `baseCompMid` Money
        - `amount` number, required
        - `currency` string, required
        - `places` integer
      - `baseCompMin` Money
        - `amount` number, required
        - `currency` string, required
        - `places` integer
      - `baseSpread` number — spread percent used to calculate base comp from the midpoint
      - `baseInterval` EnumValue, required
        - `name` string, required — enum value name
        - `label` string, required — enum value label
        - `color` string — color of property
        - `expr` string — computed expression, for ENUM_EXPR type
        - `num` number — numeric value, for ENUM_SCALE type
        - `sort` integer — sort order
        - `rank` integer — rank order, if selected in rank order
        - `id` string — unique identifier for enum
        - `labelTr` Translations
          - `values` object, required
      - `baseTargetPay` Money
        - `amount` number, required
        - `currency` string, required
        - `places` integer
      - `baseTargetPayPercentile` number — base target pay associated with open jobs at this band level, as a percentile
      - `equityTargetShares` number — target equity for the band, in shares
      - `equityTargetPercentOfBase` number — target equity for the band, as a percentage of base
      - `equityTargetValue` number — target equity for the band, as a monetary value, in the same currency as the base
      - `equityRefreshShares` number — refresh grant equity for the band, in shares
      - `equityRefreshPercentOfBase` number — refresh grant equity for the band, as a percentage of base
      - `equityRefreshValue` number — refresh grant equity for the band, as a monetary value, in the same currency as the base
      - `variableValue` Money
        - `amount` number, required
        - `currency` string, required
        - `places` integer
      - `variablePercentOfBase` number — variable compensation for the band, specified as a percentage of base
      - `startingSalary` Money
        - `amount` number, required
        - `currency` string, required
        - `places` integer
      - `jobTierOneField` JobTierField
        - `code` string
        - `value` string, required
      - `jobTierTwoField` JobTierField
        - `code` string
        - `value` string, required
      - `jobTierThreeField` JobTierField
        - `code` string
        - `value` string, required
      - `jobLevel` string — job level associated with the comp band
  - `date` string, date — Effective date for all updates

## Response `200`

successful operation

- Process
  - `id` string, required — globally unique id
  - `orgId` string, required — parent org id
  - `label` string, required — human-readable label that identifies this process
  - `type` string, required — process type
  - `status` 'PENDING' | 'RUNNING' | 'DONE' | 'ERROR', required — current status of process
  - `filePath` string — data file path
  - `logPath` string — data log path
  - `runUserId` string, required — user id who is running the process
  - `parentProcessId` string — process id of parent process
  - `createId` string, required — created by user id (user who requested the process run)
  - `createBehalfId` string — created on behalf of user id
  - `createAttribution` Attribution
    - `principalUserId` string
    - `agentUserIds` string[]
    - `eventId` string
    - `aiChatId` string
    - `aiToolUseId` string
    - `channel` 'WEB' | 'MOBILE' | 'SLACK' | 'TEAMS' | 'MCP'
  - `createAt` string, required — created timestamp
  - `updateId` string — last updated by user id
  - `updateBehalfId` string — last updated on behalf of user id
  - `updateAttribution` Attribution
    - `principalUserId` string
    - `agentUserIds` string[]
    - `eventId` string
    - `aiChatId` string
    - `aiToolUseId` string
    - `channel` 'WEB' | 'MOBILE' | 'SLACK' | 'TEAMS' | 'MCP'
  - `updateAt` string — last updated timestamp
  - `startAt` string — started at timestamp
  - `endAt` string — ended at timestamp
  - `message` string — status or error message
  - `progress` number, double — percent progress so far
  - `internalError` string — internal-only error message
  - `options` object, required — options passed to the process
  - `results` object — results summary for the process
  - `logDataList` LogData[] — list of log data that occurred during running of this process
    - `level` 'INFO' | 'WARN' | 'ERROR', required
    - `at` string, required — created timestamp
    - `message` string
    - `data` object, required
  - `state` object — process-specific state data
  - `summary` string — human-readable, searchable summary of what this process did
  - `appId` string — app id of the process
  - `uuid` string — unique ID of the process at queue time

## Other responses

- `400` — bad request
- `401` — not authorized

---

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