---
title: "Bulk update sweep threshold configurations"
method: PUT
path: "/v1/domains/{domainId}/sweep-thresholds"
tags: ["Sweep thresholds"]
---

# Bulk update sweep threshold configurations

`PUT /v1/domains/{domainId}/sweep-thresholds`

Upserts multiple sweep thresholds in a single transaction: a threshold row is created on first configuration of an asset and updated thereafter. Each (tickerId, ledgerId) pair must exist in the Custody catalog. All updates are applied atomically (all-or-nothing); if any update fails, the entire request is rolled back.  Optimistic locking: send the `version` from the corresponding GET row in each update. If any submitted `version` no longer matches the stored row (or a `version` is sent for an asset that has since been configured), the whole request is rejected with 409 and nothing is written.

## Path parameters

- `domainId` string, uuid, required

## Request body

- OmnibusBulkUpdateSweepThresholdsRequest
  - `updates` OmnibusSweepThresholdUpdate[], required — List of threshold updates to apply atomically
    - `tickerId` string, uuid, required — Ticker UUID to update
    - `ledgerId` string, required — Ledger ID to update
    - `minSweepAmount` string, required — New minimum sweep amount in smallest unit. Must be a non-negative integer string (e.g., "10000000000000000" for 0.01 ETH).
    - `version` integer — Optimistic-lock version from the GET row being edited. Required to update an already-configured asset. Omit (or null) only when configuring an asset for the first time (no stored row yet); sending a version for such an asset is treated as a conflict.

## Response `200`

All thresholds updated successfully

- OmnibusBulkUpdateSweepThresholdsResponse
  - `updatedCount` integer, required — Number of thresholds successfully updated
  - `message` string — Success message

## Other responses

- `400` — Invalid request (e.g., negative threshold, invalid UUID, duplicate or unknown ticker/ledger pair)
- `403` — Caller is not permitted to update this domain's thresholds
- `404` — Domain not found
- `409` — One or more submitted thresholds are stale: the row was modified by someone else since it was read. No changes are applied (atomic all-or-nothing). The body identifies the conflicting rows with their current values so the client can refresh, re-verify, and resubmit.

---

[API](https://skmtc.net/ripple/apis/ripple-custody-api.md) · [All operations](https://skmtc.net/ripple/apis/ripple-custody-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ripple/ripple-custody-api/versions/0b55c0ddf07a/schema)
