Skip to main content

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.

📄️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. A draft is checked before it is published: with its `validTo` day over (`valid_to_past`) or a price of zero or less (`price_not_positive`) publishing answers 409 `offer_not_publishable`, and the message names what stands in the way.