Appointments 4.5.0 or newer is required. Before digging further, make sure to check the WooCommerce REST API library. Once you have generate the REST API key in WooCommerce > Settings > Advanced > REST API, you can test it with services like Postman or Insomnia. Read more about API testing here.
1. Appointments Controller
Get all appointments on your website inside.
Attributes:
Attribute | Type | Description |
product_id | integer | Product ID. |
customer_id | integer | Customer ID. |
staff_id | integer | Staff ID. |
date_from | string | From date in Y-m-d format. (like “2020-10-01”) |
date_to | string | To date in Y-m-d format. (like “2020-12-20”) |
Endpoint:
GET https://yoursite.com/wp-json/wc-appointments/v1/appointments
Result:
[ { "id": 5560, "all_day": false, "cost": "0", "customer_id": 0, "date_created": 1554385263, "date_modified": 1554385263, "start": 1559912400, "end": 1559916000, "google_calendar_event_id": "0", "google_calendar_staff_event_ids": "", "order_id": 0, "order_item_id": 0, "parent_id": 0, "product_id": 45, "staff_id": [], "staff_ids": [], "status": "paid", "customer_status": "expected", "qty": "1", "timezone": "", "_links": { "self": [ { "href": "https://yoursite.com/wp-json/wc-appointments/v1/appointments/5560" } ], "collection": [ { "href": "https://yoursite.com/wp-json/wc-appointments/v1/appointments" } ] } } ]
2. Slots Controller
Get all slots (available and unavailable) based on the attributes set.
Attributes:
Attribute | Type | Description |
product_ids | string | Comma-separated product IDs. |
category_ids | string | Comma-separated category IDs. |
get_past_times | bool | True or False. |
staff_ids | string | Comma-separated staff/user IDs. |
min_date | string | The minimum date range. |
max_date | string | The maximum date range. |
page | integer | The page you want to query. |
limit | integer | Records per page. |
Endpoint:
GET https://yoursite.com/wp-json/wc-appointments/v1/slots
Result:
{ "records": [ { "date": "2019-05-01T00:00", "duration": 2, "duration_unit": "month", "available": 2, "scheduled": 0, "product_id": 6856, "product_name": "Product One" }, { "date": "2019-05-21T00:00", "duration": 1, "duration_unit": "day", "available": 5, "scheduled": 0, "product_id": 6911, "product_name": "Product Two" }, { "date": "2019-05-22T00:00", "duration": 7, "duration_unit": "day", "available": 8, "scheduled": 0, "product_id": 6362, "product_name": "Product Three" }, { "date": "2019-05-22T00:00", "duration": 1, "duration_unit": "day", "available": 6, "scheduled": 0, "product_id": 10528, "product_name": "Product Four" } ], "count": 4 }
3. Availabilities Controller
Get all availability rules on your website. You can filter the results.
Endpoint:
GET https://yoursite.com/wp-json/wc-appointments/v1/availabilities
Result:
[ { "ID": "314", "kind": "availability#product", "kind_id": "6911", "event_id": "", "title": "", "range_type": "days", "from_date": "", "to_date": "", "from_range": "1", "to_range": "7", "rrule": "", "appointable": "yes", "priority": "10", "qty": "0", "ordering": "0", "date_created": "2019-03-07 18:16:48", "date_modified": "2019-04-13 16:40:23", "start_date": "0000-00-00", "end_date": "9999-99-99", "type": "days", "to": "7", "from": "1" }, { "ID": "399", "kind": "availability#global", "kind_id": "", "event_id": "5uoj868siln23qoq3m0fuvv7nu", "title": "RRule for dates", "range_type": "rrule", "from_date": "", "to_date": "", "from_range": "2019-04-05", "to_range": "2019-04-05", "rrule": "RRULE:FREQ=WEEKLY;WKST=MO;COUNT=3;BYDAY=FR", "appointable": "no", "priority": "5", "qty": "0", "ordering": "0", "date_created": "2019-03-22 21:16:59", "date_modified": "2019-04-12 14:00:13", "start_date": "0000-00-00", "end_date": "9999-99-99", "type": "rrule", "to": "2019-04-05", "from": "2019-04-05" }, { "ID": "491", "kind": "availability#staff", "kind_id": "6", "event_id": "", "title": "", "range_type": "time:range", "from_date": "2018-11-14", "to_date": "2018-11-15", "from_range": "09:00", "to_range": "13:00", "rrule": "", "appointable": "yes", "priority": "10", "qty": "0", "ordering": "0", "date_created": "2019-03-28 18:10:57", "date_modified": "2019-03-28 18:10:57", "start_date": "2018-11-14", "end_date": "2018-11-15", "type": "time:range", "to": "13:00", "from": "09:00" } ]
4. Staff Controller
Get all staff on your website.
Endpoint:
GET https://yoursite.com/wp-json/wc-appointments/v1/staff
Result:
[ { "id": 7, "display_name": "Staff Name", "full_name": "Staff Full Name", "email": "staff@email.com", "availability": [ { "ID": "392", "kind": "availability#staff", "kind_id": "7", "event_id": "", "title": "", "range_type": "time:range", "from_date": "2018-12-13", "to_date": "2018-12-14", "from_range": "09:00", "to_range": "13:00", "rrule": "", "appointable": "yes", "priority": "10", "qty": "0", "ordering": "0", "date_created": "2019-03-07 18:16:48", "date_modified": "2019-03-07 18:16:48", "start_date": "2018-12-13", "end_date": "2018-12-14", "type": "time:range", "to": "13:00", "from": "09:00" }, { "ID": "494", "kind": "availability#staff", "kind_id": "7", "event_id": "", "title": "", "range_type": "days", "from_date": "", "to_date": "", "from_range": "1", "to_range": "1", "rrule": "", "appointable": "no", "priority": "10", "qty": "0", "ordering": "1", "date_created": "2019-03-28 18:10:57", "date_modified": "2019-03-28 18:10:57", "start_date": "0000-00-00", "end_date": "9999-99-99", "type": "days", "to": "1", "from": "1" } ], "products": [ { "id": 7165, "name": "Product Name", "price": "50", "price_html": "€50.00 60 minutes ", "staff_cost": "", "staff_qty": "", "self": { "href": "https://yoursite.com/wp-json/wc-appointments/v1/products/7165" }, "collection": { "href": "https://yoursite.com/wp-json/wc-appointments/v1/products" } } ], "_links": { "self": [ { "href": "https://yoursite.com/wp-json/wc-appointments/v1/staff/7" } ], "collection": [ { "href": "https://yoursite.com/wp-json/wc-appointments/v1/staff" } ] } } ]
5. Products Controller
Get all appointable products on your website.
Endpoint:
GET https://yoursite.com/wp-json/wc-appointments/v1/products
Result:
[ { "id": 18597, "name": "Product Name", "slug": "product-name", "permalink": "https://yoursite.com/product/product-name/", "date_created": "2019-05-14T19:55:18", "date_created_gmt": "2019-05-14T17:55:18", "date_modified": "2019-05-15T19:48:00", "date_modified_gmt": "2019-05-15T17:48:00", "type": "appointment", "status": "publish", "featured": false, "catalog_visibility": "visible", "description": "", "short_description": "", "sku": "", "price": "28", "regular_price": "28", "sale_price": "", "date_on_sale_from": null, "date_on_sale_from_gmt": null, "date_on_sale_to": null, "date_on_sale_to_gmt": null, "price_html": "From $56 1 hour ", "on_sale": false, "purchasable": true, "total_sales": 0, "virtual": true, "downloadable": false, "downloads": [], "download_limit": -1, "download_expiry": -1, "external_url": "", "button_text": "", "tax_status": "taxable", "tax_class": "", "manage_stock": false, "stock_quantity": null, "stock_status": "instock", "backorders": "no", "backorders_allowed": false, "backordered": false, "sold_individually": false, "weight": "", "dimensions": { "length": "", "width": "", "height": "" }, "shipping_required": false, "shipping_taxable": false, "shipping_class": "", "shipping_class_id": 0, "reviews_allowed": true, "average_rating": "0.00", "rating_count": 0, "related_ids": [ 6045, 242, 5900, 6051, 6277 ], "upsell_ids": [], "cross_sell_ids": [], "parent_id": 0, "purchase_note": "", "categories": [ { "id": 15, "name": "Uncategorized", "slug": "uncategorized" } ], "tags": [], "images": [], "attributes": [], "default_attributes": [], "variations": [], "grouped_products": [], "menu_order": 0, "meta_data": [ { "id": 43195, "key": "_product_addons", "value": [] }, { "id": 43196, "key": "_product_addons_exclude_global", "value": "0" }, ], "has_price_label": "1", "price_label": "From $56", "has_pricing": "1", "pricing": [ { "type": "quant", "cost": "", "modifier": "", "base_cost": "3", "base_modifier": "minus", "from": "3", "to": "3" }, { "type": "time", "cost": "", "modifier": "", "base_cost": "4", "base_modifier": "", "from": "17:00", "to": "00:00" } ], "qty": 5, "qty_min": 2, "qty_max": 5, "duration_unit": "hour", "duration": 1, "interval_unit": "hour", "interval": 1, "padding_duration_unit": "day", "padding_duration": 0, "min_date_unit": "day", "min_date": 0, "max_date_unit": "month", "max_date": 12, "user_can_cancel": false, "cancel_limit_unit": "month", "cancel_limit": 1, "requires_confirmation": false, "customer_timezones": false, "cal_color": "#0073aa", "availability_span": "", "availability_autoselect": false, "availability": [ { "ID": "696", "kind": "availability#product", "kind_id": "18597", "event_id": "", "title": "", "range_type": "time", "from_date": "", "to_date": "", "from_range": "11:00", "to_range": "00:00", "rrule": "", "appointable": "yes", "priority": "10", "qty": "0", "ordering": "0", "date_created": "2019-05-14 19:55:18", "date_modified": "2019-05-15 19:48:00", "start_date": "0000-00-00", "end_date": "9999-99-99", "type": "time", "to": "00:00", "from": "11:00" } ], "has_restricted_days": "", "restricted_days": "", "staff_label": "", "staff_assignment": "customer", "staff_nopref": true, "staff_ids": [], "staff_base_costs": [], "staff_qtys": [], "_links": { "self": [ { "href": "https://yoursite.com/wp-json/wc-appointments/v1/products/18597" } ], "collection": [ { "href": "https://yoursite.com/wp-json/wc-appointments/v1/products" } ] } } ]
6. Product Categories Controller
Get all appointable product categories on your website.
Endpoint:
GET https://yoursite.com/wp-json/wc-appointments/v1/products/categories
Result:
[ { "id": 26, "name": "Events", "slug": "events", "parent": 0, "description": "", "display": "default", "image": null, "menu_order": 0, "count": 2, "_links": { "self": [ { "href": "https://yoursite.com/wp-json/wc-appointments/v1/products/categories/26" } ], "collection": [ { "href": "https://yoursite.com/wp-json/wc-appointments/v1/products/categories" } ] } } ]