Skip to main content

Availabilities Endpoints

Manage appointment availability rules with read (V1) or full CRUD (V2) operations.

V1 Endpoint

GET /wc-appointments/v1/availabilities

Read appointment availability rules directly from the data store.

Permissions: Public read.

Parameters:

ParameterTypeDescription
filterarray of objectsLow-level query filters executed by the availability data store

Filter Object Shape:

{
"key": "string",
"compare": "string",
"value": "scalar|array"
}

Allowed Compare Values:

  • =, !=
  • >, >=, <, <=
  • IN, NOT IN
  • BETWEEN, NOT BETWEEN
  • LIKE, NOT LIKE
  • REGEXP, NOT REGEXP, RLIKE
  • IS NULL, IS NOT NULL

Common Key Values:

  • Store columns: id, kind, kind_id, event_id, title, range_type, from_date, to_date, from_range, to_range, appointable, priority, qty, ordering, rrule, date_created, date_modified
  • Computed: start_date, end_date (enable range filtering via BETWEEN/>=/<=)

Response Fields:

  • id (int)
  • kind (string)
  • kind_id (int)
  • event_id (int|null)
  • title (string)
  • range_type (string)
  • from_date (string, YYYY-MM-DD)
  • to_date (string, YYYY-MM-DD)
  • from_range (string)
  • to_range (string)
  • appointable (bool)
  • priority (int)
  • qty (int)
  • ordering (int)
  • rrule (string|null, iCal RRULE)
  • date_created (datetime)
  • date_modified (datetime)

Notes:

  • This controller is read-only. CRUD is provided by the V2 controller.

Example Request:

GET /wp-json/wc-appointments/v1/availabilities?filter[0][key]=kind_id&filter[0][compare]==&filter[0][value]=123

V2 Endpoints

List Availabilities

GET /wc-appointments/v2/availabilities

Get a collection of availability rules.

Permissions: Public read.

Parameters: Same filter parameter as V1.

Get Single Availability

GET /wc-appointments/v2/availabilities/{id}

Get a single availability rule by ID.

Permissions: Public read.

Create Availability

POST /wc-appointments/v2/availabilities

Create a new availability rule.

Permissions: Requires manage_woocommerce capability.

Item Schema (JSON):

  • id (int, read-only)
  • kind (string enum): global, product, staff, etc.
  • kind_id (int)
  • event_id (int|null)
  • title (string)
  • range_type (string enum): custom, months, weeks, days, time:range, time:all
  • from_date (string, YYYY-MM-DD)
  • to_date (string, YYYY-MM-DD)
  • from_range (string, time or day index)
  • to_range (string)
  • appointable (bool)
  • priority (int)
  • qty (int)
  • ordering (int)
  • rrule (string|null, iCal RRULE)

Example Request:

POST /wp-json/wc-appointments/v2/availabilities
{
"kind": "product",
"kind_id": 123,
"range_type": "custom",
"from_date": "2025-01-10",
"to_date": "2025-01-15",
"from_range": "09:00",
"to_range": "17:00",
"appointable": true,
"priority": 10,
"qty": 1
}

Update Availability

PUT|PATCH /wc-appointments/v2/availabilities/{id}

Update an existing availability rule.

Permissions: Requires manage_woocommerce capability.

Fields: Same as create endpoint. Only provided fields are updated.

Delete Availability

DELETE /wc-appointments/v2/availabilities/{id}

Delete an availability rule.

Permissions: Requires manage_woocommerce capability.


Filter Examples

Filter by Product and Date Range

GET /wp-json/wc-appointments/v2/availabilities?filter[0][key]=kind_id&filter[0][compare]==&filter[0][value]=123&filter[1][key]=start_date&filter[1][compare]=BETWEEN&filter[1][value][0]=2025-01-01&filter[1][value][1]=2025-01-31

Filter by Appointable Status

GET /wp-json/wc-appointments/v2/availabilities?filter[0][key]=appointable&filter[0][compare]==&filter[0][value]=true

Filter by Priority

GET /wp-json/wc-appointments/v2/availabilities?filter[0][key]=priority&filter[0][compare]=>&filter[0][value]=5

Best Practices

  1. Use V2 for CRUD - V1 is read-only
  2. Use Index endpoint - For time-window queries at scale (V2 Index controller)
  3. Filter efficiently - Use specific filters to reduce response size
  4. Understand priority - Higher priority rules override lower priority ones