Browse Appointment Definitions
curl --request GET \
--url https://api.{tenant}.getomneo.com/api/v3/appointment-definitionsimport requests
url = "https://api.{tenant}.getomneo.com/api/v3/appointment-definitions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.{tenant}.getomneo.com/api/v3/appointment-definitions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.{tenant}.getomneo.com/api/v3/appointment-definitions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.{tenant}.getomneo.com/api/v3/appointment-definitions"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.{tenant}.getomneo.com/api/v3/appointment-definitions")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.{tenant}.getomneo.com/api/v3/appointment-definitions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": [
{
"id": 123,
"handle": "<string>",
"name": "<string>",
"description": "<string>",
"short_description": "<string>",
"long_description": "<string>",
"icon": "<string>",
"image_url": "<string>",
"terms_conditions": "<string>",
"internal_notes": "<string>",
"visibility_condition": [
"<unknown>"
],
"is_published": true,
"is_archived": true,
"duration_minutes": 123,
"buffer_before_minutes": 123,
"buffer_after_minutes": 123,
"min_lead_minutes": 123,
"max_advance_days": 123,
"slot_interval_minutes": 123,
"booking_type": "<string>",
"allow_customer_booking": true,
"allow_walk_in": true,
"requires_staff": true,
"customer_must_select_staff": true,
"use_staff_from_location": true,
"max_concurrent_bookings": 123,
"allow_waitlist": true,
"allow_queue": true,
"meta": [
"<unknown>"
],
"created_target_id": 123,
"confirmed_target_id": 123,
"cancelled_target_id": 123,
"rejected_target_id": 123,
"reminder_target_id": 123,
"completed_target_id": 123,
"notify_created_offset_days": 123,
"notify_created_offset_hours": 123,
"notify_confirmed_offset_days": 123,
"notify_confirmed_offset_hours": 123,
"notify_cancelled_offset_days": 123,
"notify_cancelled_offset_hours": 123,
"notify_rejected_offset_days": 123,
"notify_rejected_offset_hours": 123,
"notify_reminder_offset_days": 123,
"notify_reminder_offset_hours": 123,
"notify_completed_offset_days": 123,
"notify_completed_offset_hours": 123,
"has_booking_questionnaire": true,
"created_at": "<string>",
"updated_at": "<string>",
"normal_hours": [
{
"id": 123,
"appointment_definition_id": 123,
"day_of_week": "<string>",
"available_from": "<string>",
"available_until": "<string>",
"is_closed": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}
],
"special_hours": [
{
"id": 123,
"appointment_definition_id": 123,
"name": "<string>",
"is_repeating": true,
"available_from": "<string>",
"available_until": "<string>",
"start_at": "<string>",
"end_at": "<string>",
"is_closed": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}
],
"locations": [
"<unknown>"
],
"staff": [
{
"id": 123,
"appointment_definition_id": 123,
"staff_id": "<string>",
"is_active": true,
"staff": {
"id": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"mobile_phone": "<string>",
"normal_hours": [
{
"id": "<string>",
"day_of_week": "<string>",
"available_from": "<string>",
"available_until": "<string>",
"is_closed": "<string>"
}
],
"special_hours": [
{
"id": "<string>",
"name": "<string>",
"is_repeating": "<string>",
"available_from": "<string>",
"available_until": "<string>",
"start_at": "<string>",
"end_at": "<string>"
}
]
},
"created_at": "<string>",
"updated_at": "<string>"
}
],
"booking_questionnaire": {
"id": "<string>",
"name": "<string>",
"purpose": "<string>",
"is_active": "<string>",
"pages": "<string>"
}
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}Appointment Definition
Browse Appointment Definitions
A GET to the /appointment-definitions endpoint allows your application to retrieve all appointment definition records.
GET
/
v3
/
appointment-definitions
Browse Appointment Definitions
curl --request GET \
--url https://api.{tenant}.getomneo.com/api/v3/appointment-definitionsimport requests
url = "https://api.{tenant}.getomneo.com/api/v3/appointment-definitions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.{tenant}.getomneo.com/api/v3/appointment-definitions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.{tenant}.getomneo.com/api/v3/appointment-definitions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.{tenant}.getomneo.com/api/v3/appointment-definitions"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.{tenant}.getomneo.com/api/v3/appointment-definitions")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.{tenant}.getomneo.com/api/v3/appointment-definitions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": [
{
"id": 123,
"handle": "<string>",
"name": "<string>",
"description": "<string>",
"short_description": "<string>",
"long_description": "<string>",
"icon": "<string>",
"image_url": "<string>",
"terms_conditions": "<string>",
"internal_notes": "<string>",
"visibility_condition": [
"<unknown>"
],
"is_published": true,
"is_archived": true,
"duration_minutes": 123,
"buffer_before_minutes": 123,
"buffer_after_minutes": 123,
"min_lead_minutes": 123,
"max_advance_days": 123,
"slot_interval_minutes": 123,
"booking_type": "<string>",
"allow_customer_booking": true,
"allow_walk_in": true,
"requires_staff": true,
"customer_must_select_staff": true,
"use_staff_from_location": true,
"max_concurrent_bookings": 123,
"allow_waitlist": true,
"allow_queue": true,
"meta": [
"<unknown>"
],
"created_target_id": 123,
"confirmed_target_id": 123,
"cancelled_target_id": 123,
"rejected_target_id": 123,
"reminder_target_id": 123,
"completed_target_id": 123,
"notify_created_offset_days": 123,
"notify_created_offset_hours": 123,
"notify_confirmed_offset_days": 123,
"notify_confirmed_offset_hours": 123,
"notify_cancelled_offset_days": 123,
"notify_cancelled_offset_hours": 123,
"notify_rejected_offset_days": 123,
"notify_rejected_offset_hours": 123,
"notify_reminder_offset_days": 123,
"notify_reminder_offset_hours": 123,
"notify_completed_offset_days": 123,
"notify_completed_offset_hours": 123,
"has_booking_questionnaire": true,
"created_at": "<string>",
"updated_at": "<string>",
"normal_hours": [
{
"id": 123,
"appointment_definition_id": 123,
"day_of_week": "<string>",
"available_from": "<string>",
"available_until": "<string>",
"is_closed": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}
],
"special_hours": [
{
"id": 123,
"appointment_definition_id": 123,
"name": "<string>",
"is_repeating": true,
"available_from": "<string>",
"available_until": "<string>",
"start_at": "<string>",
"end_at": "<string>",
"is_closed": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}
],
"locations": [
"<unknown>"
],
"staff": [
{
"id": 123,
"appointment_definition_id": 123,
"staff_id": "<string>",
"is_active": true,
"staff": {
"id": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>",
"mobile_phone": "<string>",
"normal_hours": [
{
"id": "<string>",
"day_of_week": "<string>",
"available_from": "<string>",
"available_until": "<string>",
"is_closed": "<string>"
}
],
"special_hours": [
{
"id": "<string>",
"name": "<string>",
"is_repeating": "<string>",
"available_from": "<string>",
"available_until": "<string>",
"start_at": "<string>",
"end_at": "<string>"
}
]
},
"created_at": "<string>",
"updated_at": "<string>"
}
],
"booking_questionnaire": {
"id": "<string>",
"name": "<string>",
"purpose": "<string>",
"is_active": "<string>",
"pages": "<string>"
}
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}Filtering
This endpoint accepts
filter and sort query parameters. See Filtering, sorting, and search for paging and for the shared search_with, custom_field, and json_contains filters.Examples
curl -X GET "https://api.[tenant].getomneo.com/api/v3/appointment-definitions?filter[handle]={handle}" \
-H "Authorization: Bearer ${TOKEN}"
curl -X GET "https://api.[tenant].getomneo.com/api/v3/appointment-definitions?filter[created_at][gte]=2026-01-01&filter[created_at][lt]=2026-02-01" \
-H "Authorization: Bearer ${TOKEN}"
curl -X GET "https://api.[tenant].getomneo.com/api/v3/appointment-definitions?filter[definitionLocations.location_id]=123" \
-H "Authorization: Bearer ${TOKEN}"
Operators
| Operator | Meaning | Example |
|---|---|---|
eq | Equal to. Applied when you give no operator. | filter[handle]={handle} |
ne | Not equal to. | filter[handle][ne]={handle} |
gt | Greater than. | filter[created_at][gt]=2026-01-01 |
gte | Greater than or equal to. | filter[created_at][gte]=2026-01-01 |
lt | Less than. | filter[created_at][lt]=2026-02-01 |
lte | Less than or equal to. | filter[created_at][lte]=2026-02-01 |
in | Matches any value in a comma separated list. | filter[id][in]=123,456 |
not_in | Excludes every value in a comma separated list. | filter[id][not_in]=123,456 |
nullable | 1 returns records where the attribute is empty. Any other value returns records where it is set. | filter[created_at][nullable]=1 |
not_has | Excludes records that have a matching related record. Related attributes only. | filter[definitionLocations.location_id][not_has]=123 |
Filter attributes
| Attribute | Attribute | Attribute |
|---|---|---|
id | handle | name |
is_published | is_archived | booking_type |
allow_customer_booking | allow_walk_in | requires_staff |
customer_must_select_staff | allow_waitlist | allow_queue |
queue_code | created_at | updated_at |
sort key, for example ?sort=-created_at for descending order.
Related attributes
Dot notation filters on a related record. Usenot_has to exclude rows that have a matching related record. Related attributes are filter only, not sort keys.
| Attribute | Relationship |
|---|---|
definitionLocations.location_id | definitionLocations |
definitionLocations.is_active | definitionLocations |
Search attributes
filter[search] runs one partial match term across handle, name, tags.handle. A record matches when any one of those attributes contains the term.
curl -X GET "https://api.[tenant].getomneo.com/api/v3/appointment-definitions?filter[search]={term}" \
-H "Authorization: Bearer ${TOKEN}"
Custom field filters
AppointmentDefinition records carry custom fields, so this endpoint also acceptsfilter[custom_field][namespace:handle].
curl -X GET "https://api.[tenant].getomneo.com/api/v3/appointment-definitions?filter[custom_field][{namespace}:{handle}]={value}" \
-H "Authorization: Bearer ${TOKEN}"
⌘I