Skip to content

Write off a reported cylinder

POST
/customers/{id}/cylinder-reports/{reportId}/write-off
curl --request POST \
--url https://example.com/customers/019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f/cylinder-reports/019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f/write-off \
--header 'Content-Type: application/json' \
--cookie __Host-bottle.session_token=<__Host-bottle.session_token> \
--data '{ "note": "example", "assetIds": [ "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f" ] }'

The holding ends from now, with no charge: one stock movement from the customer to nowhere, so rent stops from now. No deposit is refunded. Never more than they hold now. 409 already_decided once acted on or withdrawn, 409 not_held_now when they hold none of it any more. The customer is emailed, with the note if given.

id
required

UUID v7

string format: uuid

Example

019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f

UUID v7

reportId
required

UUID v7

string format: uuid

Example

019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f

UUID v7

Media typeapplication/json
object
note

Shown to the customer on the shop and in the email, such as “Found at your gate”. Optional.

string
<= 500 characters
assetIds
Array<string>
<= 500 items

Written off

Media typeapplication/json
object
id
required

UUID v7

string format: uuid
customerId
required

UUID v7

string format: uuid
customerName
required
string
productId
required

UUID v7

string format: uuid
productName
required
string
gasType
required
object
name
required
string
colour
required
string | null
quantity
required
integer
> 0
problem
required

What the customer said happened: lost, stolen, damaged, or moved to another supplier.

string
Allowed values: lost stolen damaged moved_supplier
status
required

Pending: waiting for the business. written_off: the holding ended, with no charge. invoiced: the holding ended and the customer was invoiced. dismissed: closed with nothing changed. withdrawn: the customer took it back first.

string
Allowed values: pending written_off invoiced dismissed withdrawn
note
required
string | null
reportedAt
required
string format: date-time
reportedBy
required
string | null
withdrawnAt
required
string | null format: date-time
decidedAt
required
string | null format: date-time
decidedBy
required
string | null
businessNote
required
string | null
invoice
required
object
id
required

UUID v7

string format: uuid
number
required
string
pence
required
integer
description
required
string
heldNow
required
integer

Example

{
"id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"customerId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"productId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"problem": "lost",
"status": "pending",
"invoice": {
"id": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f"
}
}

Not signed in

Media typeapplication/json
object
error
required
string
message
required
string

Example

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

Not a member, or without the permission this needs

Media typeapplication/json
object
error
required
string
message
required
string

Example

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

No such customer or report

Media typeapplication/json
object
error
required
string
message
required
string

Example

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

Already acted on or withdrawn, or none held now

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"
}
]
}