appointo.api.* operation is listed below with parameter shapes and return types from the plugin Zod schemas.
New to Corsair? See API access, authentication, and error handling.
Appointments
getAvailability
appointments.getAvailability
Get calendar availability for an appointment
Risk: read
await corsair.appointo.api.appointments.getAvailability({});
| Name | Type | Required | Description |
|---|---|---|---|
appointment_id | number | Yes | — |
start_date | string | Yes | — |
end_date | string | No | — |
impersonated_tms | number[] | No | — |
object[]
Output full type
Output full type
{
id?: number,
weekday?: string,
weekday_index?: number,
slots?: {
start_time: string,
end_time: string,
surge?: boolean,
price?: string,
max_capacity?: number
}[],
shop_id?: number,
appointment_id?: number,
day_available?: boolean,
max_capacity?: number | null
}[]
list
appointments.list
List all appointments
Risk: read
await corsair.appointo.api.appointments.list({});
| Name | Type | Required | Description |
|---|---|---|---|
appointment_id | number | No | — |
product_id | number | No | — |
limit | number | No | — |
offset | number | No | — |
search_term | string | No | — |
object[]
Output full type
Output full type
{
id: number,
activate?: boolean | null,
product_uuid?: string,
calendly_event_uuid?: string | null,
duration_uuid?: string,
shop_id?: number,
product_detail_id?: number,
name?: string,
is_combo_service?: boolean,
price?: string,
currency?: string,
description?: string | null,
archived?: boolean
}[]
upsertConfig
appointments.upsertConfig
Update appointment configuration
Risk: write
await corsair.appointo.api.appointments.upsertConfig({});
| Name | Type | Required | Description |
|---|---|---|---|
appointment_id | number | Yes | — |
config | object | No | — |
availabilities | object[] | No | — |
override | object[] | No | — |
config full type
config full type
{
timezone?: string,
duration?: string,
minimum_notice?: string,
max_capacity?: string,
meeting_detail?: string,
note?: string,
interval?: string,
reminder_duration?: string,
send_reminder?: boolean,
whatsapp_duration?: string,
send_whatsapp_reminder?: boolean,
enable_max_events_per_day?: boolean,
max_events_per_day?: number,
start_buffer_time?: string,
end_buffer_time?: string,
location_type?: string,
location_value?: string,
allow_cancel?: boolean,
allow_reschedule?: boolean,
reschedule_duration?: number,
cancel_duration?: number,
date_range_type?: string,
tm_assign_rule?: string,
days_in_future?: string,
start_date_range?: string,
end_date_range?: string,
is_combo_service?: boolean,
send_text_reminder?: boolean,
text_duration?: string,
min_day_duration?: string,
max_day_duration?: string,
fixed_multi_day_price?: boolean,
rem_group_slot_after_booking?: boolean,
start_month?: string,
color?: string,
allow_waitlist?: boolean,
email_label?: string,
name_label?: string,
phone_label?: string,
show_phone?: boolean
}
availabilities full type
availabilities full type
{
id?: number,
weekday?: string,
weekday_index?: number,
slots?: {
start_time: string,
end_time: string,
surge?: boolean,
price?: string,
max_capacity?: number
}[],
shop_id?: number,
appointment_id?: number,
day_available?: boolean,
max_capacity?: number | null
}[]
override full type
override full type
{
id?: number,
day: string,
slots?: {
start_time: string,
end_time: string,
surge?: boolean,
price?: string,
max_capacity?: number
}[],
shop_id?: number,
appointment_id?: number,
day_available?: boolean
}[]
object[]
Output full type
Output full type
{
id: number,
activate?: boolean | null,
product_uuid?: string,
calendly_event_uuid?: string | null,
duration_uuid?: string,
shop_id?: number,
product_detail_id?: number,
name?: string,
is_combo_service?: boolean,
price?: string,
currency?: string,
description?: string | null,
archived?: boolean
}[]
Bookings
cancel
bookings.cancel
Cancel a booking
Risk: destructive
await corsair.appointo.api.bookings.cancel({});
| Name | Type | Required | Description |
|---|---|---|---|
booking_id | number | Yes | — |
customer_ids | number[] | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
response | object | No | — |
response full type
response full type
{
status: string,
booking?: {
id: number,
selected_time?: string,
timestring?: string,
shop_id?: number,
appointment_id?: number,
created_at?: string,
updated_at?: string,
customers_count?: number,
duration?: number,
product_name?: string,
variant_name?: string,
order_uuid?: string,
price?: string,
order_name?: string,
currency?: string,
meeting_detail?: string,
note?: string,
google_meta?: {
},
google_event_id?: string,
location_value?: string | null,
location_type?: string | null,
location_meta?: {
} | null,
quantity?: number,
team_member_id?: number | null,
scenario?: string,
day_duration?: number,
end_date?: string,
start_date?: string,
group_id?: number | null,
start_buffer_time?: number,
end_buffer_time?: number,
category?: string | null,
archived?: boolean,
notes_count?: number,
customers?: {
id: number,
email?: string,
payload?: {
phone?: string
},
name?: string,
shop_id?: number,
appointment_id?: number,
booking_id?: number,
created_at?: string,
updated_at?: string,
customer_uuid?: string,
reschedule_uuid?: string | null,
cancel_uuid?: string | null,
order_name?: string,
order_uuid?: string | null,
shipping_address?: {
id?: number,
customer_id?: number,
first_name?: string | null,
last_name?: string | null,
company?: string | null,
address1?: string | null,
address2?: string | null,
city?: string | null,
province?: string | null,
country?: string | null,
zip?: string | null,
phone?: string | null,
name?: string | null,
province_code?: string | null,
country_code?: string | null,
country_name?: string | null,
default?: boolean
},
override?: boolean,
signpanda_cust_uuid?: string | null,
parent_customer_id?: number | null,
is_active_sub?: boolean,
sub_interval?: string | null,
sub_booking_count?: number | null,
sub_booking_num?: number | null,
sub_recurring_type?: string | null,
customer_type?: string | null,
customer_timezone?: string | null,
archived?: boolean,
subscription_contract_id?: string | number | null,
selling_plan_id?: string | number | null,
checkin?: boolean,
checkin_qr_code?: string | null,
image_data?: string | null
}[],
archived_customers?: {
id: number,
email?: string,
payload?: {
phone?: string
},
name?: string,
shop_id?: number,
appointment_id?: number,
booking_id?: number,
created_at?: string,
updated_at?: string,
customer_uuid?: string,
reschedule_uuid?: string | null,
cancel_uuid?: string | null,
order_name?: string,
order_uuid?: string | null,
shipping_address?: {
id?: number,
customer_id?: number,
first_name?: string | null,
last_name?: string | null,
company?: string | null,
address1?: string | null,
address2?: string | null,
city?: string | null,
province?: string | null,
country?: string | null,
zip?: string | null,
phone?: string | null,
name?: string | null,
province_code?: string | null,
country_code?: string | null,
country_name?: string | null,
default?: boolean
},
override?: boolean,
signpanda_cust_uuid?: string | null,
parent_customer_id?: number | null,
is_active_sub?: boolean,
sub_interval?: string | null,
sub_booking_count?: number | null,
sub_booking_num?: number | null,
sub_recurring_type?: string | null,
customer_type?: string | null,
customer_timezone?: string | null,
archived?: boolean,
subscription_contract_id?: string | number | null,
selling_plan_id?: string | number | null,
checkin?: boolean,
checkin_qr_code?: string | null,
image_data?: string | null
}[],
appointment?: {
id: number,
activate?: boolean | null,
product_uuid?: string,
duration_uuid?: string,
shop_id?: number,
product_detail_id?: number,
name?: string,
is_combo_service?: boolean,
price?: string,
currency?: string,
description?: string | null,
archived?: boolean
}
}
}
create
bookings.create
Create a new booking
Risk: write
await corsair.appointo.api.bookings.create({});
| Name | Type | Required | Description |
|---|---|---|---|
appointment_id | number | Yes | — |
timestring | string | Yes | — |
email | string | Yes | — |
name | string | Yes | — |
quantity | number | No | — |
phone | string | No | — |
object[]
Output full type
Output full type
{
id: number,
selected_time?: string,
timestring?: string,
shop_id?: number,
appointment_id?: number,
created_at?: string,
updated_at?: string,
customers_count?: number,
duration?: number,
product_name?: string,
variant_name?: string,
order_uuid?: string,
price?: string,
order_name?: string,
currency?: string,
meeting_detail?: string,
note?: string,
google_meta?: {
},
google_event_id?: string,
location_value?: string | null,
location_type?: string | null,
location_meta?: {
} | null,
quantity?: number,
team_member_id?: number | null,
scenario?: string,
day_duration?: number,
end_date?: string,
start_date?: string,
group_id?: number | null,
start_buffer_time?: number,
end_buffer_time?: number,
category?: string | null,
archived?: boolean,
notes_count?: number,
customers?: {
id: number,
email?: string,
payload?: {
phone?: string
},
name?: string,
shop_id?: number,
appointment_id?: number,
booking_id?: number,
created_at?: string,
updated_at?: string,
customer_uuid?: string,
reschedule_uuid?: string | null,
cancel_uuid?: string | null,
order_name?: string,
order_uuid?: string | null,
shipping_address?: {
id?: number,
customer_id?: number,
first_name?: string | null,
last_name?: string | null,
company?: string | null,
address1?: string | null,
address2?: string | null,
city?: string | null,
province?: string | null,
country?: string | null,
zip?: string | null,
phone?: string | null,
name?: string | null,
province_code?: string | null,
country_code?: string | null,
country_name?: string | null,
default?: boolean
},
override?: boolean,
signpanda_cust_uuid?: string | null,
parent_customer_id?: number | null,
is_active_sub?: boolean,
sub_interval?: string | null,
sub_booking_count?: number | null,
sub_booking_num?: number | null,
sub_recurring_type?: string | null,
customer_type?: string | null,
customer_timezone?: string | null,
archived?: boolean,
subscription_contract_id?: string | number | null,
selling_plan_id?: string | number | null,
checkin?: boolean,
checkin_qr_code?: string | null,
image_data?: string | null
}[],
archived_customers?: {
id: number,
email?: string,
payload?: {
phone?: string
},
name?: string,
shop_id?: number,
appointment_id?: number,
booking_id?: number,
created_at?: string,
updated_at?: string,
customer_uuid?: string,
reschedule_uuid?: string | null,
cancel_uuid?: string | null,
order_name?: string,
order_uuid?: string | null,
shipping_address?: {
id?: number,
customer_id?: number,
first_name?: string | null,
last_name?: string | null,
company?: string | null,
address1?: string | null,
address2?: string | null,
city?: string | null,
province?: string | null,
country?: string | null,
zip?: string | null,
phone?: string | null,
name?: string | null,
province_code?: string | null,
country_code?: string | null,
country_name?: string | null,
default?: boolean
},
override?: boolean,
signpanda_cust_uuid?: string | null,
parent_customer_id?: number | null,
is_active_sub?: boolean,
sub_interval?: string | null,
sub_booking_count?: number | null,
sub_booking_num?: number | null,
sub_recurring_type?: string | null,
customer_type?: string | null,
customer_timezone?: string | null,
archived?: boolean,
subscription_contract_id?: string | number | null,
selling_plan_id?: string | number | null,
checkin?: boolean,
checkin_qr_code?: string | null,
image_data?: string | null
}[],
appointment?: {
id: number,
activate?: boolean | null,
product_uuid?: string,
duration_uuid?: string,
shop_id?: number,
product_detail_id?: number,
name?: string,
is_combo_service?: boolean,
price?: string,
currency?: string,
description?: string | null,
archived?: boolean
}
}[]
list
bookings.list
List all bookings
Risk: read
await corsair.appointo.api.bookings.list({});
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | No | — |
offset | number | No | — |
status | past | upcoming | No | — |
booking_id | number | No | — |
search_term | string | No | — |
object[]
Output full type
Output full type
{
id: number,
selected_time?: string,
timestring?: string,
shop_id?: number,
appointment_id?: number,
created_at?: string,
updated_at?: string,
customers_count?: number,
duration?: number,
product_name?: string,
variant_name?: string,
order_uuid?: string,
price?: string,
order_name?: string,
currency?: string,
meeting_detail?: string,
note?: string,
google_meta?: {
},
google_event_id?: string,
location_value?: string | null,
location_type?: string | null,
location_meta?: {
} | null,
quantity?: number,
team_member_id?: number | null,
scenario?: string,
day_duration?: number,
end_date?: string,
start_date?: string,
group_id?: number | null,
start_buffer_time?: number,
end_buffer_time?: number,
category?: string | null,
archived?: boolean,
notes_count?: number,
customers?: {
id: number,
email?: string,
payload?: {
phone?: string
},
name?: string,
shop_id?: number,
appointment_id?: number,
booking_id?: number,
created_at?: string,
updated_at?: string,
customer_uuid?: string,
reschedule_uuid?: string | null,
cancel_uuid?: string | null,
order_name?: string,
order_uuid?: string | null,
shipping_address?: {
id?: number,
customer_id?: number,
first_name?: string | null,
last_name?: string | null,
company?: string | null,
address1?: string | null,
address2?: string | null,
city?: string | null,
province?: string | null,
country?: string | null,
zip?: string | null,
phone?: string | null,
name?: string | null,
province_code?: string | null,
country_code?: string | null,
country_name?: string | null,
default?: boolean
},
override?: boolean,
signpanda_cust_uuid?: string | null,
parent_customer_id?: number | null,
is_active_sub?: boolean,
sub_interval?: string | null,
sub_booking_count?: number | null,
sub_booking_num?: number | null,
sub_recurring_type?: string | null,
customer_type?: string | null,
customer_timezone?: string | null,
archived?: boolean,
subscription_contract_id?: string | number | null,
selling_plan_id?: string | number | null,
checkin?: boolean,
checkin_qr_code?: string | null,
image_data?: string | null
}[],
archived_customers?: {
id: number,
email?: string,
payload?: {
phone?: string
},
name?: string,
shop_id?: number,
appointment_id?: number,
booking_id?: number,
created_at?: string,
updated_at?: string,
customer_uuid?: string,
reschedule_uuid?: string | null,
cancel_uuid?: string | null,
order_name?: string,
order_uuid?: string | null,
shipping_address?: {
id?: number,
customer_id?: number,
first_name?: string | null,
last_name?: string | null,
company?: string | null,
address1?: string | null,
address2?: string | null,
city?: string | null,
province?: string | null,
country?: string | null,
zip?: string | null,
phone?: string | null,
name?: string | null,
province_code?: string | null,
country_code?: string | null,
country_name?: string | null,
default?: boolean
},
override?: boolean,
signpanda_cust_uuid?: string | null,
parent_customer_id?: number | null,
is_active_sub?: boolean,
sub_interval?: string | null,
sub_booking_count?: number | null,
sub_booking_num?: number | null,
sub_recurring_type?: string | null,
customer_type?: string | null,
customer_timezone?: string | null,
archived?: boolean,
subscription_contract_id?: string | number | null,
selling_plan_id?: string | number | null,
checkin?: boolean,
checkin_qr_code?: string | null,
image_data?: string | null
}[],
appointment?: {
id: number,
activate?: boolean | null,
product_uuid?: string,
duration_uuid?: string,
shop_id?: number,
product_detail_id?: number,
name?: string,
is_combo_service?: boolean,
price?: string,
currency?: string,
description?: string | null,
archived?: boolean
}
}[]
reschedule
bookings.reschedule
Reschedule an existing booking
Risk: write
await corsair.appointo.api.bookings.reschedule({});
| Name | Type | Required | Description |
|---|---|---|---|
booking_id | number | Yes | — |
timestring | string | Yes | — |
customer_ids | number[] | No | — |
override | boolean | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
response | object | No | — |
response full type
response full type
{
status: string,
booking?: {
id: number,
selected_time?: string,
timestring?: string,
shop_id?: number,
appointment_id?: number,
created_at?: string,
updated_at?: string,
customers_count?: number,
duration?: number,
product_name?: string,
variant_name?: string,
order_uuid?: string,
price?: string,
order_name?: string,
currency?: string,
meeting_detail?: string,
note?: string,
google_meta?: {
},
google_event_id?: string,
location_value?: string | null,
location_type?: string | null,
location_meta?: {
} | null,
quantity?: number,
team_member_id?: number | null,
scenario?: string,
day_duration?: number,
end_date?: string,
start_date?: string,
group_id?: number | null,
start_buffer_time?: number,
end_buffer_time?: number,
category?: string | null,
archived?: boolean,
notes_count?: number,
customers?: {
id: number,
email?: string,
payload?: {
phone?: string
},
name?: string,
shop_id?: number,
appointment_id?: number,
booking_id?: number,
created_at?: string,
updated_at?: string,
customer_uuid?: string,
reschedule_uuid?: string | null,
cancel_uuid?: string | null,
order_name?: string,
order_uuid?: string | null,
shipping_address?: {
id?: number,
customer_id?: number,
first_name?: string | null,
last_name?: string | null,
company?: string | null,
address1?: string | null,
address2?: string | null,
city?: string | null,
province?: string | null,
country?: string | null,
zip?: string | null,
phone?: string | null,
name?: string | null,
province_code?: string | null,
country_code?: string | null,
country_name?: string | null,
default?: boolean
},
override?: boolean,
signpanda_cust_uuid?: string | null,
parent_customer_id?: number | null,
is_active_sub?: boolean,
sub_interval?: string | null,
sub_booking_count?: number | null,
sub_booking_num?: number | null,
sub_recurring_type?: string | null,
customer_type?: string | null,
customer_timezone?: string | null,
archived?: boolean,
subscription_contract_id?: string | number | null,
selling_plan_id?: string | number | null,
checkin?: boolean,
checkin_qr_code?: string | null,
image_data?: string | null
}[],
archived_customers?: {
id: number,
email?: string,
payload?: {
phone?: string
},
name?: string,
shop_id?: number,
appointment_id?: number,
booking_id?: number,
created_at?: string,
updated_at?: string,
customer_uuid?: string,
reschedule_uuid?: string | null,
cancel_uuid?: string | null,
order_name?: string,
order_uuid?: string | null,
shipping_address?: {
id?: number,
customer_id?: number,
first_name?: string | null,
last_name?: string | null,
company?: string | null,
address1?: string | null,
address2?: string | null,
city?: string | null,
province?: string | null,
country?: string | null,
zip?: string | null,
phone?: string | null,
name?: string | null,
province_code?: string | null,
country_code?: string | null,
country_name?: string | null,
default?: boolean
},
override?: boolean,
signpanda_cust_uuid?: string | null,
parent_customer_id?: number | null,
is_active_sub?: boolean,
sub_interval?: string | null,
sub_booking_count?: number | null,
sub_booking_num?: number | null,
sub_recurring_type?: string | null,
customer_type?: string | null,
customer_timezone?: string | null,
archived?: boolean,
subscription_contract_id?: string | number | null,
selling_plan_id?: string | number | null,
checkin?: boolean,
checkin_qr_code?: string | null,
image_data?: string | null
}[],
appointment?: {
id: number,
activate?: boolean | null,
product_uuid?: string,
duration_uuid?: string,
shop_id?: number,
product_detail_id?: number,
name?: string,
is_combo_service?: boolean,
price?: string,
currency?: string,
description?: string | null,
archived?: boolean
}
}
}
update
bookings.update
Update a booking (buffer updates)
Risk: write
await corsair.appointo.api.bookings.update({});
| Name | Type | Required | Description |
|---|---|---|---|
booking_id | number | Yes | — |
start_buffer_time | number | No | — |
end_buffer_time | number | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
response | object | No | — |
response full type
response full type
{
status: string,
booking?: {
id: number,
selected_time?: string,
timestring?: string,
shop_id?: number,
appointment_id?: number,
created_at?: string,
updated_at?: string,
customers_count?: number,
duration?: number,
product_name?: string,
variant_name?: string,
order_uuid?: string,
price?: string,
order_name?: string,
currency?: string,
meeting_detail?: string,
note?: string,
google_meta?: {
},
google_event_id?: string,
location_value?: string | null,
location_type?: string | null,
location_meta?: {
} | null,
quantity?: number,
team_member_id?: number | null,
scenario?: string,
day_duration?: number,
end_date?: string,
start_date?: string,
group_id?: number | null,
start_buffer_time?: number,
end_buffer_time?: number,
category?: string | null,
archived?: boolean,
notes_count?: number,
customers?: {
id: number,
email?: string,
payload?: {
phone?: string
},
name?: string,
shop_id?: number,
appointment_id?: number,
booking_id?: number,
created_at?: string,
updated_at?: string,
customer_uuid?: string,
reschedule_uuid?: string | null,
cancel_uuid?: string | null,
order_name?: string,
order_uuid?: string | null,
shipping_address?: {
id?: number,
customer_id?: number,
first_name?: string | null,
last_name?: string | null,
company?: string | null,
address1?: string | null,
address2?: string | null,
city?: string | null,
province?: string | null,
country?: string | null,
zip?: string | null,
phone?: string | null,
name?: string | null,
province_code?: string | null,
country_code?: string | null,
country_name?: string | null,
default?: boolean
},
override?: boolean,
signpanda_cust_uuid?: string | null,
parent_customer_id?: number | null,
is_active_sub?: boolean,
sub_interval?: string | null,
sub_booking_count?: number | null,
sub_booking_num?: number | null,
sub_recurring_type?: string | null,
customer_type?: string | null,
customer_timezone?: string | null,
archived?: boolean,
subscription_contract_id?: string | number | null,
selling_plan_id?: string | number | null,
checkin?: boolean,
checkin_qr_code?: string | null,
image_data?: string | null
}[],
archived_customers?: {
id: number,
email?: string,
payload?: {
phone?: string
},
name?: string,
shop_id?: number,
appointment_id?: number,
booking_id?: number,
created_at?: string,
updated_at?: string,
customer_uuid?: string,
reschedule_uuid?: string | null,
cancel_uuid?: string | null,
order_name?: string,
order_uuid?: string | null,
shipping_address?: {
id?: number,
customer_id?: number,
first_name?: string | null,
last_name?: string | null,
company?: string | null,
address1?: string | null,
address2?: string | null,
city?: string | null,
province?: string | null,
country?: string | null,
zip?: string | null,
phone?: string | null,
name?: string | null,
province_code?: string | null,
country_code?: string | null,
country_name?: string | null,
default?: boolean
},
override?: boolean,
signpanda_cust_uuid?: string | null,
parent_customer_id?: number | null,
is_active_sub?: boolean,
sub_interval?: string | null,
sub_booking_count?: number | null,
sub_booking_num?: number | null,
sub_recurring_type?: string | null,
customer_type?: string | null,
customer_timezone?: string | null,
archived?: boolean,
subscription_contract_id?: string | number | null,
selling_plan_id?: string | number | null,
checkin?: boolean,
checkin_qr_code?: string | null,
image_data?: string | null
}[],
appointment?: {
id: number,
activate?: boolean | null,
product_uuid?: string,
duration_uuid?: string,
shop_id?: number,
product_detail_id?: number,
name?: string,
is_combo_service?: boolean,
price?: string,
currency?: string,
description?: string | null,
archived?: boolean
}
}
}
Products
list
products.list
List all products
Risk: read
await corsair.appointo.api.products.list({});
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | No | — |
search_term | string | No | — |
offset | number | No | — |
object[]
Output full type
Output full type
{
id: number,
activate?: boolean,
product_uuid?: string,
shop_id?: number,
created_at?: string,
updated_at?: string,
product_name?: string,
show_widget?: boolean,
appointment_type?: string,
vendor_name?: string,
include_variant_booking?: boolean,
book_without_pay?: boolean,
image_url?: string | null,
variants_count?: number,
appointments?: {
id: number,
activate?: boolean | null,
product_uuid?: string,
calendly_event_uuid?: string | null,
duration_uuid?: string,
shop_id?: number,
product_detail_id?: number,
name?: string,
is_combo_service?: boolean,
price?: string,
currency?: string,
description?: string | null,
archived?: boolean
}[]
}[]
Subscriptions
list
subscriptions.list
List all appointment subscriptions
Risk: read
await corsair.appointo.api.subscriptions.list({});
| Name | Type | Required | Description |
|---|---|---|---|
search_term | string | No | — |
object[]
Output full type
Output full type
{
id?: number
}[]