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:
| Parameter | Type | Description |
|---|---|---|
filter | array of objects | Low-level query filters executed by the availability data store |
Filter Object Shape:
{
"key": "string",
"compare": "string",
"value": "scalar|array"
}
Allowed Compare Values:
=,!=>,>=,<,<=IN,NOT INBETWEEN,NOT BETWEENLIKE,NOT LIKEREGEXP,NOT REGEXP,RLIKEIS 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 viaBETWEEN/>=/<=)
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:allfrom_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
- Use V2 for CRUD - V1 is read-only
- Use Index endpoint - For time-window queries at scale (V2 Index controller)
- Filter efficiently - Use specific filters to reduce response size
- Understand priority - Higher priority rules override lower priority ones
Related Documentation
- Index Endpoint - For fast time-window queries
- Slots Endpoints - For computed availability slots
- Products Endpoints - Product availability configuration