Appointedd MCP by usefulapi
Read Appointedd bookings, customers and availability; create, change and cancel bookings.
我该使用它吗
质量与安全性
发现(7)
- LOW在 appointedd_list_resource_groups 中
- LOW在 appointedd_list_service_categories 中
- LOW在 appointedd_get_service_category 中
- LOW在 appointedd_find_available_intervals 中
- LOW在 appointedd_find_available_dates 中
- LOW在 appointedd_update_booking_customer 中
- LOW在 appointedd_cancel_booking_customer 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"appointedd": {
"url": "https://appointedd.usefulapi.io/mcp"
}
}
}远程端点
https://appointedd.usefulapi.io/mcpstreamable-http它能做什么
工具清单
工具(20)
🟢appointedd_list_bookings(after, before, statuses, customers, services, ...)
List bookings, newest first by default. Filter by time window (after/before), customer, service, resource, category, status or creation/update time. Each booking has its service, resource, start/end, status and the customers on it (with their notes, questions and statuses). Page with `next`. GET /bookings.
输入模式
{
"type": "object",
"properties": {
"after": {
"description": "Only bookings that start at or after this date-time.",
"type": "string"
},
"before": {
"description": "Only bookings that end at or before this date-time.",
"type": "string"
},
"statuses": {
"description": "Only bookings with one of these statuses.",
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"enum": [
"confirmed",
"declined",
"cancelled",
"pending"
]
}
},
"customers": {
"description": "Only bookings for customers with one of these ids.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"services": {
"description": "Only bookings of services with one of these ids.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"resources": {
"description": "Only bookings of resources with one of these ids.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"categories": {
"description": "Only bookings of service categories with one of these ids.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"ids": {
"description": "Only bookings with one of these ids.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"created_after": {
"type": "string",
"description": "ISO 8601 date-time, e.g. 2026-11-02T09:00:00Z (a date-time without an offset is read in UTC unless a timezone is given)."
},
"created_before": {
"type": "string",
"description": "ISO 8601 date-time, e.g. 2026-11-02T09:00:00Z (a date-time without an offset is read in UTC unless a timezone is given)."
},
"updated_after": {
"type": "string",
"description": "ISO 8601 date-time, e.g. 2026-11-02T09:00:00Z (a date-time without an offset is read in UTC unless a timezone is given)."
},
"updated_before": {
"type": "string",
"description": "ISO 8601 date-time, e.g. 2026-11-02T09:00:00Z (a date-time without an offset is read in UTC unless a timezone is given)."
},
"sort_by": {
"description": "Sort property (default natural).",
"type": "string",
"enum": [
"natural",
"creation",
"updated",
"start"
]
},
"order_by": {
"description": "Sort direction (the API default is desc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"timezone": {
"description": "IANA time zone for the dates and times in the reply, e.g. Europe/London (default UTC).",
"type": "string"
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"start": {
"description": "Page cursor: pass the previous reply's `next` to get the following page.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"end": {
"description": "Page cursor: pass the previous reply's `prev` to get the preceding page.",
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢appointedd_list_customers(ids, sort_by, order_by, limit, start, ...)
List customers in the CRM: name, email, phone/mobile, address, tags, custom fields, marketing opt-in. Page with `next`. GET /customers.
输入模式
{
"type": "object",
"properties": {
"ids": {
"description": "Only customers with one of these ids.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"sort_by": {
"description": "Sort property (default natural).",
"type": "string",
"enum": [
"natural",
"created",
"profile.firstname",
"profile.lastname"
]
},
"order_by": {
"description": "Sort direction (the API default is desc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"start": {
"description": "Page cursor: pass the previous reply's `next` to get the following page.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"end": {
"description": "Page cursor: pass the previous reply's `prev` to get the preceding page.",
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢appointedd_get_customer(customer_id)
One customer by id. GET /customers/{customer_id}.
输入模式
{
"type": "object",
"properties": {
"customer_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Appointedd id (24-character hex string)."
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢appointedd_list_resources(ids, services, sort_by, order_by, limit, ...)
List resources (the staff members, rooms or equipment that bookings are made for): name, assigned service ids and resource group ids. Page with `next`. GET /resources.
输入模式
{
"type": "object",
"properties": {
"ids": {
"description": "Only resources with one of these ids.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"services": {
"description": "Only resources assigned to services with one of these ids.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"sort_by": {
"type": "string",
"enum": [
"natural",
"creation"
]
},
"order_by": {
"description": "Sort direction (the API default is desc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"start": {
"description": "Page cursor: pass the previous reply's `next` to get the following page.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"end": {
"description": "Page cursor: pass the previous reply's `prev` to get the preceding page.",
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢appointedd_list_resource_groups(ids, order_by, limit, start, end)
List resource groups (id and name). Page with `next`. GET /resources/groups.
输入模式
{
"type": "object",
"properties": {
"ids": {
"description": "Only resource groups with one of these ids.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"order_by": {
"description": "Sort direction (the API default is desc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"start": {
"description": "Page cursor: pass the previous reply's `next` to get the following page.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"end": {
"description": "Page cursor: pass the previous reply's `prev` to get the preceding page.",
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢appointedd_list_services(ids, limit, start, end)
List services (what can be booked): name, category, durations and prices, buffers, occupancy and booking type. Page with `next`. GET /services.
输入模式
{
"type": "object",
"properties": {
"ids": {
"description": "Only services with one of these ids.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"start": {
"description": "Page cursor: pass the previous reply's `next` to get the following page.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"end": {
"description": "Page cursor: pass the previous reply's `prev` to get the preceding page.",
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢appointedd_get_service(service_id)
One service by id, including its booking questions, durations, prices and buffers. GET /services/{service_id}.
输入模式
{
"type": "object",
"properties": {
"service_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Appointedd id (24-character hex string)."
}
},
"required": [
"service_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢appointedd_list_service_categories(ids, limit, start, end)
List service categories (id and name). Page with `next`. GET /services/categories.
输入模式
{
"type": "object",
"properties": {
"ids": {
"description": "Only service categories with one of these ids.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"start": {
"description": "Page cursor: pass the previous reply's `next` to get the following page.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"end": {
"description": "Page cursor: pass the previous reply's `prev` to get the preceding page.",
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢appointedd_get_service_category(category_id)
One service category by id. GET /services/categories/{category_id}.
输入模式
{
"type": "object",
"properties": {
"category_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Appointedd id (24-character hex string)."
}
},
"required": [
"category_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢appointedd_find_available_intervals(ranges, service_id, resource_ids, resource_group_ids, duration, ...)
Find the start times at which a service can be booked in the given ranges, with the free resource ids for each (and existing group bookings with room). Step 1 of making a booking: pick a start, then appointedd_create_reservation. Read-only. POST /availability/intervals/search.
输入模式
{
"type": "object",
"properties": {
"ranges": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"start": {
"type": "string",
"description": "ISO 8601 date-time, e.g. 2026-11-02T09:00:00Z (a date-time without an offset is read in UTC unless a timezone is given)."
},
"end": {
"type": "string",
"description": "ISO 8601 date-time, e.g. 2026-11-02T09:00:00Z (a date-time without an offset is read in UTC unless a timezone is given)."
}
},
"required": [
"start",
"end"
]
},
"description": "One or more date-time ranges to search, e.g. [{start, end}]."
},
"service_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Service the booking would be for (use appointedd_list_services)."
},
"resource_ids": {
"description": "Resources (staff, rooms) to check. Default: all resources assigned to the service. Not together with resource_group_ids.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Appointedd id (24-character hex string)."
}
},
"resource_group_ids": {
"description": "Resource groups whose resources to check. Not together with resource_ids.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Appointedd id (24-character hex string)."
}
},
"duration": {
"description": "Continuous minutes that must be free. Default: the service's default duration.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"spaces": {
"description": "Spaces needed (excludes group bookings with too few spaces). Default 1.",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"timezone": {
"description": "IANA time zone for range times without an offset and for the reply. Default UTC.",
"type": "string"
},
"ignore_notice_restriction": {
"description": "Ignore the organisation's/service's notice period.",
"type": "boolean"
},
"ignore_service_schedule": {
"description": "Ignore the service's schedule.",
"type": "boolean"
}
},
"required": [
"ranges",
"service_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢appointedd_find_available_dates(ranges, service_id, resource_ids, resource_group_ids, duration, ...)
Find which days in the given ranges have any availability for a service (a calendar view; use appointedd_find_available_intervals for the times). Read-only. POST /availability/days/search.
输入模式
{
"type": "object",
"properties": {
"ranges": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"start": {
"type": "string",
"description": "ISO 8601 date-time, e.g. 2026-11-02T09:00:00Z (a date-time without an offset is read in UTC unless a timezone is given)."
},
"end": {
"type": "string",
"description": "ISO 8601 date-time, e.g. 2026-11-02T09:00:00Z (a date-time without an offset is read in UTC unless a timezone is given)."
}
},
"required": [
"start",
"end"
]
},
"description": "One or more date-time ranges to search, e.g. [{start, end}]."
},
"service_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Service the booking would be for (use appointedd_list_services)."
},
"resource_ids": {
"description": "Resources (staff, rooms) to check. Default: all resources assigned to the service. Not together with resource_group_ids.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Appointedd id (24-character hex string)."
}
},
"resource_group_ids": {
"description": "Resource groups whose resources to check. Not together with resource_ids.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Appointedd id (24-character hex string)."
}
},
"duration": {
"description": "Continuous minutes that must be free. Default: the service's default duration.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"spaces": {
"description": "Spaces needed (excludes group bookings with too few spaces). Default 1.",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"timezone": {
"description": "IANA time zone for range times without an offset and for the reply. Default UTC.",
"type": "string"
},
"ignore_notice_restriction": {
"description": "Ignore the organisation's/service's notice period.",
"type": "boolean"
},
"ignore_service_schedule": {
"description": "Ignore the service's schedule.",
"type": "boolean"
}
},
"required": [
"ranges",
"service_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢appointedd_get_reservation(reservation_id, timezone)
One reservation (availability slot) by id: its service, resource, times and expiry. GET /availability/slots/{reservation_id}.
输入模式
{
"type": "object",
"properties": {
"reservation_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Appointedd id (24-character hex string)."
},
"timezone": {
"description": "IANA time zone for the dates and times in the reply, e.g. Europe/London (default UTC).",
"type": "string"
}
},
"required": [
"reservation_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡appointedd_create_customer(firstname, lastname, email, mobile, phone, ...)
WRITE: create a customer in the CRM (first and last name required; email, mobile, phone, tags optional). POST /customers.
输入模式
{
"type": "object",
"properties": {
"firstname": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "First name."
},
"lastname": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Last name."
},
"email": {
"type": "string",
"maxLength": 320
},
"mobile": {
"type": "string",
"maxLength": 40
},
"phone": {
"type": "string",
"maxLength": 40
},
"tags": {
"description": "Tags to put on the customer.",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 100
}
}
},
"required": [
"firstname",
"lastname"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴appointedd_update_customer(customer_id, firstname, lastname, email, mobile, ...)
WRITE: change a customer's name, email, mobile, phone or tags. Only the fields you pass are sent; `tags` replaces the customer's tag list. PUT /customers/{customer_id}.
输入模式
{
"type": "object",
"properties": {
"customer_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Appointedd id (24-character hex string)."
},
"firstname": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"lastname": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"type": "string",
"maxLength": 320
},
"mobile": {
"type": "string",
"maxLength": 40
},
"phone": {
"type": "string",
"maxLength": 40
},
"tags": {
"description": "New tag list (replaces the old one).",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"maxLength": 100
}
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡appointedd_create_reservation(service_id, start, resource_id, resource_group_ids, duration, ...)
WRITE: hold a date and time for a booking (step 2). The reservation blocks that slot for `expires_after` minutes (default: the organisation's setting); then call appointedd_create_booking with the returned reservation id. Without resource_id a free resource assigned to the service is picked. POST /availability/slots.
输入模式
{
"type": "object",
"properties": {
"service_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Appointedd id (24-character hex string)."
},
"start": {
"type": "string",
"description": "Start date-time, normally a `start` returned by appointedd_find_available_intervals."
},
"resource_id": {
"description": "Resource to book. Default: any free resource of the service.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"resource_group_ids": {
"description": "Restrict the automatic resource choice to these groups.",
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Appointedd id (24-character hex string)."
}
},
"duration": {
"description": "Booking length in minutes; pass the same `duration` you searched with. Default: the service's default duration.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"required_spaces": {
"description": "Spaces needed (default 1).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"ignore_notice_restriction": {
"description": "Ignore the notice period; set it if you searched with it.",
"type": "boolean"
},
"ignore_service_schedule": {
"description": "Ignore the service's schedule; set it if you searched with it.",
"type": "boolean"
},
"expires_after": {
"description": "Minutes until the hold expires.",
"type": "integer",
"minimum": 1,
"maximum": 1440
},
"timezone": {
"description": "IANA time zone of `start` (when it has no offset) and of the reply. Default UTC.",
"type": "string"
}
},
"required": [
"service_id",
"start"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡appointedd_create_booking(reservation_id, customers, label, send_payment_request, timezone)
WRITE: turn an active reservation into a booking (step 3) for one or more customers; Appointedd matches each customer to the CRM by name/email/mobile or creates it. Payment requests are NOT sent unless send_payment_request is true. With an empty customers list an empty booking is created. POST /bookings.
输入模式
{
"type": "object",
"properties": {
"reservation_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Id returned by appointedd_create_reservation (must not have expired)."
},
"customers": {
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"profile": {
"type": "object",
"properties": {
"firstname": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "First name."
},
"lastname": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Last name."
},
"email": {
"type": "string",
"maxLength": 320
},
"mobile": {
"type": "string",
"maxLength": 40
}
},
"required": [
"firstname",
"lastname"
]
},
"notes": {
"description": "Free-form notes for this customer on the booking.",
"type": "string",
"maxLength": 5000
},
"total_spaces": {
"description": "Spaces this customer uses (default 1).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"status": {
"type": "string",
"enum": [
"Arrived",
"Complete",
"No Show",
"No Status"
]
},
"marketing_subscribed": {
"description": "Customer agreed to marketing emails (default false).",
"type": "boolean"
}
},
"required": [
"profile"
]
},
"description": "Customers to add; [] for an empty booking."
},
"label": {
"description": "Label shown on the booking in the appointment screen.",
"type": "string",
"maxLength": 500
},
"send_payment_request": {
"description": "Send each customer a payment request (default false here; the API's own default is true).",
"type": "boolean"
},
"timezone": {
"description": "IANA time zone for the dates and times in the reply, e.g. Europe/London (default UTC).",
"type": "string"
}
},
"required": [
"reservation_id",
"customers"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴appointedd_update_booking(booking_id, service_id, resource_id, total_spaces, label, ...)
WRITE: change a booking's service, resource, label or total spaces, or move it by giving `parts` with new start/end times. Customers are NOT emailed unless send_notifications is true. PUT /bookings/{booking_id}.
输入模式
{
"type": "object",
"properties": {
"booking_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Appointedd id (24-character hex string)."
},
"service_id": {
"description": "Move the booking to this service.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"resource_id": {
"description": "Assign the booking to this resource.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"total_spaces": {
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"label": {
"type": "string",
"maxLength": 500
},
"parts": {
"description": "New time parts of the booking (start/end); an availability check runs when moving.",
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 200
},
"start": {
"type": "string",
"description": "ISO 8601 date-time with an offset, e.g. 2026-11-02T09:00:00Z."
},
"end": {
"type": "string",
"description": "ISO 8601 date-time with an offset, e.g. 2026-11-02T09:00:00Z."
}
},
"required": [
"start",
"end"
]
}
},
"send_notifications": {
"description": "Email each customer that the booking changed (default false here; the API's own default is true).",
"type": "boolean"
},
"ignore_service_schedule": {
"description": "Allow moving outside the service's schedule.",
"type": "boolean"
},
"timezone": {
"description": "IANA time zone for the dates and times in the reply, e.g. Europe/London (default UTC).",
"type": "string"
}
},
"required": [
"booking_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴appointedd_update_booking_customer(booking_id, customer_booking_id, status, notes)
WRITE: set the arrival status (Arrived, Complete, No Show, No Status) and/or notes of one customer on a booking. customer_booking_id is the customer's `customer_booking_id` (or `customer_id`) in the booking's customers list. PUT /bookings/{booking_id}/customers/{customer_booking_id}.
输入模式
{
"type": "object",
"properties": {
"booking_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Appointedd id (24-character hex string)."
},
"customer_booking_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "`customer_booking_id` (or `customer_id`) from the booking's customers list."
},
"status": {
"type": "string",
"enum": [
"Arrived",
"Complete",
"No Show",
"No Status"
]
},
"notes": {
"description": "Replaces the customer's notes on this booking.",
"type": "string",
"maxLength": 5000
}
},
"required": [
"booking_id",
"customer_booking_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴appointedd_cancel_booking(booking_id)
WRITE (cannot be undone): cancel a whole booking. Appointedd may notify the customers according to the organisation's settings. To remove one customer from a group booking use appointedd_cancel_booking_customer. POST /bookings/{booking_id}/cancel.
输入模式
{
"type": "object",
"properties": {
"booking_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Appointedd id (24-character hex string)."
}
},
"required": [
"booking_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴appointedd_cancel_booking_customer(booking_id, customer_booking_id)
WRITE (cannot be undone): cancel one customer's place on a booking (the booking stays for the others). customer_booking_id is the `customer_booking_id` in the booking's customers list. POST /bookings/{booking_id}/customers/{customer_booking_id}/cancel.
输入模式
{
"type": "object",
"properties": {
"booking_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Appointedd id (24-character hex string)."
},
"customer_booking_id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "`customer_booking_id` from the booking's customers list."
}
},
"required": [
"booking_id",
"customer_booking_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社区
证据