Skip to content

Add the same opening cylinders to several customers

POST
/customers/holdings/add
curl --request POST \
--url https://example.com/customers/holdings/add \
--header 'Content-Type: application/json' \
--cookie __Host-bottle.session_token=<__Host-bottle.session_token> \
--data '{ "customerIds": [ "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f" ], "opening": { "items": [ { "productId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "quantity": 1, "since": "2026-04-15" } ] } }'

Adds the same cylinders to the opening balance of every customer named, on top of what each holds now. All of them are written or none are. An archived or missing customer is left out and listed as skipped. Each optional date sets when rent and deposit-refund timing starts. When a date is omitted, Bottle uses the date each customer was added.

Media typeapplication/json
object
customerIds
required
Array<string>
>= 1 items <= 200 items
opening
required
object
items
required
Array<object>
>= 1 items <= 50 items
object
productId
required

UUID v7

string format: uuid

Example

019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f
quantity
required
integer
>= 1 <= 1000
since
string format: date

Who the cylinders were added to, and who was skipped

Media typeapplication/json
object
done
required
Array<object>
object
customerId
required

UUID v7

string format: uuid
name
required
string
skipped
required
Array<object>
object
customerId
required

UUID v7

string format: uuid
name
required
string | null
reason
required
string
Allowed values: not_found archived unchanged

Example

{
"done": [
{
"customerId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f"
}
],
"skipped": [
{
"customerId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"reason": "not_found"
}
]
}

Not signed in

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

Not a member of that tenant

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

Not found

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

A product is a charge, not a cylinder, or a day is in the future

Media typeapplication/json
object
error
required
string
message
required
string

Example

{
"error": "not_found",
"message": "Customer not found"
}

Validation failed

Media typeapplication/json
object
error
required
string
Allowed values: validation
message
required
string
issues
required
Array<object>
object
path
required
string
message
required
string

Example

{
"error": "validation",
"issues": [
{
"path": "email",
"message": "Invalid email"
}
]
}