---
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`

## Request

- Base URL: `https://docs.ripple.com` (the document declares no server; this is the origin it was published from)
- URL: `https://docs.ripple.com/v1/domains/{domainId}/sweep-thresholds`
- Auth: none declared
- TypeScript: <https://skmtc.dev/ripple/apis/ripple-custody-api/docs/v1/domains/:domainId/sweep-thresholds/put.ts> (a function with typed inputs; its response is checked against the schema)

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.dev/ripple/apis/ripple-custody-api.md) - [All operations](https://skmtc.dev/ripple/apis/ripple-custody-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ripple/apis/ripple-custody-api/revisions/c6f0ad6b70c0?raw)
