Skip to content

List price rules

GET
/price-rules
curl --request GET \
--url 'https://example.com/price-rules?audience=consumer&customerId=019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f&rateSetId=019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f&productId=019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f' \
--cookie bottle.session_token=<bottle.session_token>

Every rule, oldest first, narrowed by audience, customerId, rateSetId or productId. productId gives every rule that could cover that product: its own, its gas type’s, its shop categories’ and those for everything. Who pays what, in order: a rule for that customer (off their agreed rate where there is one), then the rate agreed with them, then their rate set’s rules and prices, then trade or consumer rules, then the trade or consumer price. Within a level the most specific rule applies; between two equally specific, the cheaper for the customer.

audience

Consumer: everybody who is not a trade customer, signed in or not. trade: trade customers. rate_set: the members of one rate set, named by rateSetId. customer: one customer, named by customerId.

string
Allowed values: consumer trade rate_set customer

Consumer: everybody who is not a trade customer, signed in or not. trade: trade customers. rate_set: the members of one rate set, named by rateSetId. customer: one customer, named by customerId.

customerId

UUID v7

string format: uuid
Example
019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f

UUID v7

rateSetId

UUID v7

string format: uuid
Example
019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f

UUID v7

productId

Rules that could apply to this product: its own, its gas type, its categories and everything.

string format: uuid
Example
019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f

Rules that could apply to this product: its own, its gas type, its categories and everything.

The rules

Media typeapplication/json
object
items
required
Array<object>
object
name
required
string | null
<= 120 characters
audience
required

Consumer: everybody who is not a trade customer, signed in or not. trade: trade customers. rate_set: the members of one rate set, named by rateSetId. customer: one customer, named by customerId.

string
Allowed values: consumer trade rate_set customer
customerId
required

UUID v7

string | null format: uuid
rateSetId
required

UUID v7

string | null format: uuid
scope
required

What the rule covers: one product (productId), every size of a gas type (gasTypeId), a shop category (categoryId), or everything sold. Never deposits, rent or delivery.

string
Allowed values: product gas_type category all
productId
required

UUID v7

string | null format: uuid
gasTypeId
required

UUID v7

string | null format: uuid
categoryId
required

UUID v7

string | null format: uuid
counting
required

Stepped: each step prices only the units within it (“first 5 at £38, next 5 at £36, then £34.20”). bulk: the highest step reached prices every unit (“10 or more and all of them are £34.20”).

string
Allowed values: stepped bulk
steps
required
Array
>= 1 items <= 10 items
One of:
object
kind
required
string
Allowed values: percent_off
fromQuantity
required
integer
>= 1 <= 100000
percent
required
number
<= 100
active
required
boolean
id
required

UUID v7

string format: uuid
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
Example
{
"items": [
{
"audience": "consumer",
"customerId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"rateSetId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"scope": "product",
"productId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"gasTypeId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"categoryId": "019205d1-6e7a-7c3b-9f6e-3a2b1c0d9e8f",
"counting": "stepped",
"steps": [
{
"kind": "percent_off"
}
],
"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"
}

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