Create or replace an exposure limit
PUT/v1/exposure-limits/:issuer_bank_id/:asset_id
Create the calling bank's exposure limit on one issuer's root asset, or replace it if one exists.
Who may call it. Only the holder: the limit is always stored under the
authenticated bank as holder_bank_id. The issuer named in the path cannot set or see
it.
Upsert semantics. The request is a full replacement, not a partial update: the new
amount replaces the previous one, and the first call for an issuer and root asset
creates the limit. reason is recorded with the change but is not returned by GET.
Request identity checks (rejected synchronously with 400):
data.attributes.asset_idmust equal the pathasset_id(INVALID_FIELD_FORMAT, pointer/data/attributes/asset_id).data.idmust be exactlyv1:{your_bank_id}:{issuer_bank_id}:{asset_id}using the path values, for examplev1:22222222-2222-7222-8222-222222222222:11111111-1111-7111-8111-111111111111:usd(RESOURCE_ID_MISMATCH). Note thatGETreturns anidbuilt from the issued asset id (...:usd.bank-alpha); do not reuse that value here.
Amount. amount.value is a non-negative integer string in the asset's minor units
("10000000" is 100,000.00 for a 2-decimal asset). amount.scale must be a
non-negative integer; set it to the asset's decimals. The value is not rescaled by
scale. Values above 9223372036854775807 are rejected with 400.
Asynchronous completion. Returns 202 Accepted with an operation. The operation
reaches SUCCEEDED once the new limit is published to the platform; from then on it
applies to new inbound transfers, and GET shows it shortly after. Poll
GET /v1/operations/{operation_id} for the outcome.
In-flight changes. Only one change per exposure limit can be in progress. A new
PUT for the same issuer and root asset while an earlier change has not finished is
rejected with 400 and the title an earlier change to this resource is unresolved.
Lowering a limit below the current holding does not unwind anything already held, but
blocks further inbound transfers from that issuer until the holding falls below the new
cap.
Retries. Send an Idempotency-Key. Repeating the same key with the same body
returns the original 202 document; the same key with a different body returns 409.
Request
Responses
- 202
- 400
- 401
- 403
- 409
- 422
- 429
- 503
Change accepted for asynchronous processing. data.id is the operation_id;
data.relationships.resource identifies the exposure limit being changed.
The request failed a synchronous check: asset_id mismatch, wrong data.id,
malformed amount, blank reason, missing Idempotency-Key, amount too large, or an
earlier change to the same limit still in progress.
The bearer token is missing, malformed, expired, signed by an unknown key, or was not issued by the platform IAM for the Lyriq Connector. Obtain a new token and retry. See the Authentication section.
The token is valid but may not perform this request: it lacks the required scope, has
no bank membership, needs an x-dan-bank-id header to choose between several
memberships, names a bank in x-dan-bank-id it has no membership for, or the caller's
bank is suspended or terminated. A new token with the same configuration fails the same
way. See the Authentication section.
The request conflicts with an earlier request or with the current state of the target:
an Idempotency-Key reused with a different body (IDEMPOTENCY_CONFLICT), a request with
the same key still in progress (IDEMPOTENCY_PENDING), or a target resource in a state
that does not allow the request (STATE_CONFLICT).
The request is well-formed JSON but cannot be processed: the body does not match the
expected shape (a missing or unknown member, a wrong type, or a wrong data.type), or it
breaks a business or cross-field rule. Correct the request before retrying.
The request was refused because a rate limit was reached (code RATE_LIMITED). No
Retry-After header is sent; retry with exponential backoff.
The request could not be served right now. Either the network is not fully operational
(OUTBOUND_HALTED or READ_ONLY: mutations are refused while read endpoints keep
working; OPERATIONAL_STATE_UNKNOWN: the state could not be determined), or a platform
dependency is temporarily unavailable. No Retry-After header is sent; retry later with
backoff. When retrying a mutation, reuse the same Idempotency-Key and body.