Offerings catalog

Yield Rules

A YieldRule adjusts an offering's price according to how busy the site is, on top of the offering's existing price rules and within its yield price guardrails.

The YieldRule object

Attributes

  • iduuidrequired
  • offering_typestringrequired

    The kind of offering a rule applies to. Limited to offerings booked against a service date, which is what demand is measured over.

    Possible values:appointmentarea_bookingsessionpackage
  • offering_iduuidrequired

    The offering this rule adjusts the price of.

  • site_iduuidrequired
  • created_batch_iduuidrequirednullable

    Shared by every rule created in the same request. The rules remain independent of one another — editing one does not affect the others — so this only records that they were created together.

  • weekdaysstring[]required

    The days of the week this rule applies on.

  • time_fromstringrequirednullable

    Start of the daily window this rule applies within, in the site's local time. 24-hour HH:MM. Each selected weekday is the day its window starts on. Null alongside a null time_to means the rule applies all day.

  • time_tostringrequirednullable

    End of the daily window this rule applies within, in the site's local time. 24-hour HH:MM. A value earlier than time_from means the window runs past midnight into the following day. Null alongside a null time_from means the rule applies all day.

  • triggersrequired

    The demand conditions under which a rule fires.

    Which demand a rule can respond to depends on what its offering is made of, so the shape varies by offering_type. An appointment needs a practitioner and a room, an area booking needs the area itself, and a session has neither — its demand is how much of the session's own capacity is taken.

    Only the triggers listed for the rule's offering type are accepted. Sending one belonging to another type is rejected rather than stored, because the engine has no way to measure it for this offering.

    At least one band must be set. Where an offering type has more than one and both are set, the rule fires if either is satisfied, so setting both widens a rule rather than narrowing it.

  • adjustmentobjectrequired

    The change a rule makes to the price it applies to. Signed, so a rule can discount to shift demand as well as add a premium at peak.

  • roundingstringrequirednullable

    Rounds the adjusted price to the nearest whole unit of currency. null leaves the adjusted price unrounded.

    Possible values:onefiveten
  • reporting_tierstringrequired

    Groups yielded sales in reporting. Descriptive only — it never affects the adjustment a rule makes. Sales made when no rule applied report as an implicit standard tier, which is why it is absent here. The yielded sales report lists and totals sales by this tier.

    Possible values:lowhighpeak
  • created_atdate-timerequired
  • updated_atdate-timerequired

    When several rules could apply to the same slot, the most recently updated one wins. Saving a rule without changing it leaves this as it was.

{
  "id": "00000000-0000-0000-0000-000000000000",
  "offering_type": "appointment",
  "offering_id": "00000000-0000-0000-0000-000000000000",
  "site_id": "00000000-0000-0000-0000-000000000000",
  "created_batch_id": "00000000-0000-0000-0000-000000000000",
  "weekdays": [
    "monday"
  ],
  "time_from": "12:00",
  "time_to": "21:00",
  "triggers": {
    "practitioner_pressure": "string",
    "room_pressure": {
      "from": 70,
      "to": 90
    }
  },
  "adjustment": {
    "type": "amount",
    "value": 15
  },
  "rounding": "one",
  "reporting_tier": "low",
  "created_at": "2026-01-15T09:30:00+00:00",
  "updated_at": "2026-01-15T09:30:00+00:00"
}