Offers
A quote for a project. Offers are built from materials, services and costs, move through DRAFT → PUBLISHED → ACCEPTED/DECLINED, and can be created as a complete nested document or edited piece by piece.
List offers
List offers
Create an offer
Creates a new offer (starts as DRAFT). All collections are optional — a minimal body is just `offer`.
Get an offer
Get an offer
Replace an offer
Atomically replaces the entire offer (delete + re-insert) from a full payload. Only DRAFT offers can be replaced: a published, accepted or declined offer is what the customer saw and answers 409 `offer_not_draft` — create a new offer instead.
Delete an offer
Delete an offer
Change offer state
Transition an offer's state (e.g. publish or accept). The DB trigger materializes the published/accepted snapshot. Offers only move forward: once an offer left DRAFT it cannot go back to DRAFT (409 `offer_not_draft`) — create a new offer instead. An offer can be accepted until the end of its `validTo` day (German time); after that, accepting answers 409 `offer_expired` — publish a new offer instead.
Offer services
4 items
Offer additional costs
4 items
Offer batteries
4 items
Offer wallboxes
4 items
Offer misc materials
4 items