Skip to content

Report a problem with a cylinder

POST
/storefront/sites/{host}/account/cylinders/reports
curl --request POST \
--url https://example.com/storefront/sites/northgate.shop.getbottle.app/account/cylinders/reports \
--header 'Content-Type: application/json' \
--data '{ "customerId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "productId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f", "quantity": 1, "problem": "lost", "note": "example" }'

Deliberately without a staff session: a shopper on the business’s own shop. Lost, stolen, damaged, or moved to another supplier, with an optional note. Only a notice to the business, told in the office and by email: the cylinder stays on the customer’s account, marked as reported, and rent goes on, until the business writes it off, invoices for it or dismisses the report. No deposit is refunded by it. The customer can withdraw it until then. Never more than they hold less what is already reported (409 more_than_held). Only a consumer, or a manager of a trade customer, may report (403 not_manager).

host
required
string

Example

northgate.shop.getbottle.app
Media typeapplication/json
object
customerId
required

UUID v7

string format: uuid

Example

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

UUID v7

string format: uuid

Example

019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f
quantity
required
integer
>= 1 <= 500
problem
required

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

string
Allowed values: lost stolen damaged moved_supplier
note
string
<= 500 characters

Reported

Media typeapplication/json
object
id
required

UUID v7

string format: uuid
productId
required

UUID v7

string format: uuid
name
required
string
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
decidedAt
required
string | null format: date-time
businessNote
required
string | null
invoicePence
required
integer | null

Example

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

Refused: the message says why

Media typeapplication/json
object
error
required
string
message
required
string

Example

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

Not signed in

Media typeapplication/json
object
error
required
string
message
required
string

Example

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

Not from the shop itself, or the email is not confirmed yet

Media typeapplication/json
object
error
required
string
message
required
string

Example

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

Not a shop. No body.

More than they hold, or the shop is not selling 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"
}
]
}

Too many tries

Media typeapplication/json
object
error
required
string
message
required
string

Example

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