---
title: "Update Zones in Bulk"
method: PUT
path: "/v2/locations/zones"
---

# Update Zones in Bulk

`PUT /v2/locations/zones`

Update up to 100 zones in a single request.

## Query parameters

- `inheritLocale` boolean

## Request body

- object[]
  - `identifierName` 'ID' | 'CODE' | 'EXTERNAL_ID', required — How to identify the target zone. One of ID, CODE, EXTERNAL_ID (case-insensitive).
  - `identifierValue` string, required — The identifier value matching identifierName.
  - `name` string — Display name for the zone. Cannot be null or empty. Cannot equal root (any case). Max 100 characters. Accepts letters, digits, underscores, and spaces.
  - `description` string, nullable — Free-text description. Set to null to clear.
  - `isAdmin` boolean — Whether the zone has admin access.
  - `isActive` boolean — Whether the zone is active. Deactivation fails if children are active. Activation fails if parent is inactive.
  - `areaParentCode` string — Code of the parent zone. Must be a valid active zone code. Cannot be set to null.
  - `externalIds` object, nullable — Key-value map of external identifiers. Omit to preserve. Set to null to clear all. Set a key's value to null to remove that specific key. Pass {} to make no change. Maximum five entries. Keys and values must not exceed 200 characters each.
  - `customFields` object, nullable — Key-value map of custom field values. Omit to preserve. Set to null to clear all. Set a key's value to null to remove that specific key. Pass {} to make no change. Keys must match custom fields configured for the org.
  - `language` string — IETF BCP 47 language code (e.g. en-IN). Must be enabled for the org.
  - `currency` string — ISO 4217 currency code (e.g. INR). Must be enabled for the org.
  - `timezone` string — IANA timezone name (e.g. Asia/Kolkata). Must be enabled for the org.

## Response `200`

All zones updated successfully.

- BulkResponseList
  - `response` object[]
    - `entityId` integer — System ID of the updated concept. Present when the concept was identified, regardless of whether the update succeeded. Absent when the concept could not be identified, or when an unexpected error occurs.
    - `result` object — Echo of the submitted request object for this concept.
    - `errors` object[]
      - `status` boolean
      - `code` integer
      - `message` string
    - `warnings` object[]
      - `status` boolean
      - `code` integer
      - `message` string
  - `totalCount` integer — Total number of concept records in the request.
  - `failureCount` integer — Number of concepts that failed to update.

## Other responses

- `207` — Partial success — some zones updated, some failed.
- `400` — All items failed or request is invalid (e.g. more than 100 items, empty body).

---

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