Added

OnSched 3.10.0 - filter locations by custom field, filter appointments by status

API

  • Filter locations by custom field: GET /v3/locations accepts CustomFields.<key>=<value> query parameters, matched exactly and combined with AND, the same way GET /v3/customers already works. Use it to look up a location by your own region code, store number, or CRM id. See Locations.
  • Authenticated requests only: GET /v3/public/locations returns 400 for CustomFields.<key> parameters, because public location responses contain only id and name.
  • Invalid shapes are rejected: CustomFields={...} and customFields.<key> return 400, matching the customers list.
  • Filter appointments by status: GET /v3/appointments accepts status with one or more values. Repeat the parameter (?status=BK&status=CN) or send a comma-separated list (?status=BK,CN) to retrieve booked and cancelled appointments together. Values are case-insensitive, so ?status=bk also works. See Appointment Guide.
  • Appointment status default unchanged: Omitting status still returns appointments of every status, including holds (IN, RS) and rescheduled placeholders (RE). An unrecognized or empty status returns 400 listing the accepted values, where such a request previously failed with 500.

Dashboard

  • Custom Fields tab on locations: the Location profile has a Custom Fields tab, alongside the existing tabs on Resource, Service, and Customer profiles.

Availability

  • Weekly allocation days are local: GET /v3/availability and hold/book validation no longer offer the previous local evening when a resource, service, or pair weekly Allocation omits that weekday. Friday-only 09:00–17:00 in America/New_York does not return Thursday 20:00–00:00 (EDT) or 19:00–00:00 (EST). Weekly Operating Hours that run to 22:00 still offer Friday 20:00. A location that is closed on a calendar day stays closed across UTC midnight when a weekly allocation is open on a neighboring day.
  • Rescheduled holds keep their slot: PUT /v3/appointment/{id}/reschedule on a hold at a location with expirationDelay 0 no longer writes an already-elapsed expiration, so GET /v3/availability keeps the new slot blocked until you book or delete the hold.
  • Zero booking timer does not break availability: GET /v3/availability for a location with expirationDelay 0 returns slots instead of 500.