Update appointment calendar
Replaces an existing calendar’s full configuration (duration, availability, buffers, reminders). Call appointmentCalendars.get to inspect current values first.
curl --request PUT \
--url https://app.chatbotx.io/api/v1/appointment-calendars/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"active": true,
"timezone": "<string>",
"durationMinutes": 0,
"bufferAfterMinutes": 0,
"scheduleWindowConfig": {
"scheduleWindowType": "rollingDays",
"rollingDays": 30,
"minAdvanceDays": 0
},
"maxAppointmentsPerUser": 4503599627370496,
"dailyLimitEnabled": true,
"maxPerDay": 4503599627370496,
"allowGroupMeeting": true,
"maxPerSlot": 4503599627370496,
"externalEventTitleTemplate": "<string>",
"externalEventDescriptionTemplate": "<string>",
"externalEventAttendeesTemplate": "<string>",
"availability": [
{
"weekday": 3,
"startMinute": 712,
"endMinute": 727
}
],
"reminders": [
{
"flowId": "<string>",
"timingValue": 4503599627370496
}
],
"description": "<string>",
"locationDetail": "<string>",
"confirmationMessage": "<string>",
"confirmationFlowId": "<string>",
"cancellationFlowId": "<string>",
"externalConnectionId": "<string>"
}
'import requests
url = "https://app.chatbotx.io/api/v1/appointment-calendars/{id}"
payload = {
"name": "<string>",
"active": True,
"timezone": "<string>",
"durationMinutes": 0,
"bufferAfterMinutes": 0,
"scheduleWindowConfig": {
"scheduleWindowType": "rollingDays",
"rollingDays": 30,
"minAdvanceDays": 0
},
"maxAppointmentsPerUser": 4503599627370496,
"dailyLimitEnabled": True,
"maxPerDay": 4503599627370496,
"allowGroupMeeting": True,
"maxPerSlot": 4503599627370496,
"externalEventTitleTemplate": "<string>",
"externalEventDescriptionTemplate": "<string>",
"externalEventAttendeesTemplate": "<string>",
"availability": [
{
"weekday": 3,
"startMinute": 712,
"endMinute": 727
}
],
"reminders": [
{
"flowId": "<string>",
"timingValue": 4503599627370496
}
],
"description": "<string>",
"locationDetail": "<string>",
"confirmationMessage": "<string>",
"confirmationFlowId": "<string>",
"cancellationFlowId": "<string>",
"externalConnectionId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
active: true,
timezone: '<string>',
durationMinutes: 0,
bufferAfterMinutes: 0,
scheduleWindowConfig: {scheduleWindowType: 'rollingDays', rollingDays: 30, minAdvanceDays: 0},
maxAppointmentsPerUser: 4503599627370496,
dailyLimitEnabled: true,
maxPerDay: 4503599627370496,
allowGroupMeeting: true,
maxPerSlot: 4503599627370496,
externalEventTitleTemplate: '<string>',
externalEventDescriptionTemplate: '<string>',
externalEventAttendeesTemplate: '<string>',
availability: [{weekday: 3, startMinute: 712, endMinute: 727}],
reminders: [{flowId: '<string>', timingValue: 4503599627370496}],
description: '<string>',
locationDetail: '<string>',
confirmationMessage: '<string>',
confirmationFlowId: '<string>',
cancellationFlowId: '<string>',
externalConnectionId: '<string>'
})
};
fetch('https://app.chatbotx.io/api/v1/appointment-calendars/{id}', 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://app.chatbotx.io/api/v1/appointment-calendars/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'active' => true,
'timezone' => '<string>',
'durationMinutes' => 0,
'bufferAfterMinutes' => 0,
'scheduleWindowConfig' => [
'scheduleWindowType' => 'rollingDays',
'rollingDays' => 30,
'minAdvanceDays' => 0
],
'maxAppointmentsPerUser' => 4503599627370496,
'dailyLimitEnabled' => true,
'maxPerDay' => 4503599627370496,
'allowGroupMeeting' => true,
'maxPerSlot' => 4503599627370496,
'externalEventTitleTemplate' => '<string>',
'externalEventDescriptionTemplate' => '<string>',
'externalEventAttendeesTemplate' => '<string>',
'availability' => [
[
'weekday' => 3,
'startMinute' => 712,
'endMinute' => 727
]
],
'reminders' => [
[
'flowId' => '<string>',
'timingValue' => 4503599627370496
]
],
'description' => '<string>',
'locationDetail' => '<string>',
'confirmationMessage' => '<string>',
'confirmationFlowId' => '<string>',
'cancellationFlowId' => '<string>',
'externalConnectionId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.chatbotx.io/api/v1/appointment-calendars/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"active\": true,\n \"timezone\": \"<string>\",\n \"durationMinutes\": 0,\n \"bufferAfterMinutes\": 0,\n \"scheduleWindowConfig\": {\n \"scheduleWindowType\": \"rollingDays\",\n \"rollingDays\": 30,\n \"minAdvanceDays\": 0\n },\n \"maxAppointmentsPerUser\": 4503599627370496,\n \"dailyLimitEnabled\": true,\n \"maxPerDay\": 4503599627370496,\n \"allowGroupMeeting\": true,\n \"maxPerSlot\": 4503599627370496,\n \"externalEventTitleTemplate\": \"<string>\",\n \"externalEventDescriptionTemplate\": \"<string>\",\n \"externalEventAttendeesTemplate\": \"<string>\",\n \"availability\": [\n {\n \"weekday\": 3,\n \"startMinute\": 712,\n \"endMinute\": 727\n }\n ],\n \"reminders\": [\n {\n \"flowId\": \"<string>\",\n \"timingValue\": 4503599627370496\n }\n ],\n \"description\": \"<string>\",\n \"locationDetail\": \"<string>\",\n \"confirmationMessage\": \"<string>\",\n \"confirmationFlowId\": \"<string>\",\n \"cancellationFlowId\": \"<string>\",\n \"externalConnectionId\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://app.chatbotx.io/api/v1/appointment-calendars/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"active\": true,\n \"timezone\": \"<string>\",\n \"durationMinutes\": 0,\n \"bufferAfterMinutes\": 0,\n \"scheduleWindowConfig\": {\n \"scheduleWindowType\": \"rollingDays\",\n \"rollingDays\": 30,\n \"minAdvanceDays\": 0\n },\n \"maxAppointmentsPerUser\": 4503599627370496,\n \"dailyLimitEnabled\": true,\n \"maxPerDay\": 4503599627370496,\n \"allowGroupMeeting\": true,\n \"maxPerSlot\": 4503599627370496,\n \"externalEventTitleTemplate\": \"<string>\",\n \"externalEventDescriptionTemplate\": \"<string>\",\n \"externalEventAttendeesTemplate\": \"<string>\",\n \"availability\": [\n {\n \"weekday\": 3,\n \"startMinute\": 712,\n \"endMinute\": 727\n }\n ],\n \"reminders\": [\n {\n \"flowId\": \"<string>\",\n \"timingValue\": 4503599627370496\n }\n ],\n \"description\": \"<string>\",\n \"locationDetail\": \"<string>\",\n \"confirmationMessage\": \"<string>\",\n \"confirmationFlowId\": \"<string>\",\n \"cancellationFlowId\": \"<string>\",\n \"externalConnectionId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.chatbotx.io/api/v1/appointment-calendars/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"active\": true,\n \"timezone\": \"<string>\",\n \"durationMinutes\": 0,\n \"bufferAfterMinutes\": 0,\n \"scheduleWindowConfig\": {\n \"scheduleWindowType\": \"rollingDays\",\n \"rollingDays\": 30,\n \"minAdvanceDays\": 0\n },\n \"maxAppointmentsPerUser\": 4503599627370496,\n \"dailyLimitEnabled\": true,\n \"maxPerDay\": 4503599627370496,\n \"allowGroupMeeting\": true,\n \"maxPerSlot\": 4503599627370496,\n \"externalEventTitleTemplate\": \"<string>\",\n \"externalEventDescriptionTemplate\": \"<string>\",\n \"externalEventAttendeesTemplate\": \"<string>\",\n \"availability\": [\n {\n \"weekday\": 3,\n \"startMinute\": 712,\n \"endMinute\": 727\n }\n ],\n \"reminders\": [\n {\n \"flowId\": \"<string>\",\n \"timingValue\": 4503599627370496\n }\n ],\n \"description\": \"<string>\",\n \"locationDetail\": \"<string>\",\n \"confirmationMessage\": \"<string>\",\n \"confirmationFlowId\": \"<string>\",\n \"cancellationFlowId\": \"<string>\",\n \"externalConnectionId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body"<unknown>"{
"defined": true,
"code": "businessError",
"status": 400,
"message": "An error occurred while processing your request",
"data": "<unknown>"
}{
"defined": true,
"code": "UNAUTHORIZED",
"status": 401,
"message": "Authentication required",
"data": "<unknown>"
}{
"defined": true,
"code": "FORBIDDEN",
"status": 403,
"message": "You do not have permission to perform this action",
"data": "<unknown>"
}{
"defined": true,
"code": "notFound",
"status": 404,
"message": "Resource not found",
"data": "<unknown>"
}{
"defined": true,
"code": "nameAlreadyExists",
"status": 409,
"message": "Calendar name already exists",
"data": "<unknown>"
}{
"defined": true,
"code": "invalidRequestData",
"status": 422,
"message": "Input validation failed",
"data": {
"issues": [
{
"message": "<string>",
"path": [
"<string>"
]
}
]
}
}{
"defined": true,
"code": "tooManyRequests",
"status": 429,
"message": "Too many requests",
"data": "<unknown>"
}{
"defined": true,
"code": "INTERNAL_SERVER_ERROR",
"status": 500,
"message": "An unexpected error occurred",
"data": "<unknown>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Appointment calendar id. Get it from appointmentCalendars.list.
^\d+$Body
Calendar name.
1 - 255Whether the calendar accepts new bookings.
IANA timezone used to interpret availability and reminders.
1Length of each appointment slot, in minutes.
-9007199254740991 <= x <= 9007199254740991Buffer time added after each appointment, in minutes, or null for none.
-9007199254740991 <= x <= 9007199254740991Where the appointment takes place, e.g. in-person or video call.
inPerson, phoneCall, onlineMeeting How far ahead bookings are allowed (e.g. a rolling window or fixed date range).
- Option 1
- Option 2
- Option 3
- Option 4
Show child attributes
Show child attributes
Maximum number of active appointments a single contact may hold, or null for unlimited.
1 <= x <= 9007199254740991Whether maxPerDay is enforced.
Maximum bookings per day when dailyLimitEnabled is true, or null when not set.
1 <= x <= 9007199254740991Whether multiple contacts can book the same slot.
Maximum bookings per slot when allowGroupMeeting is true, or null for unlimited.
1 <= x <= 9007199254740991Template for the external calendar event's title, or null to use the default.
1024Template for the external calendar event's description, or null to use the default.
8192Template for the external calendar event's attendee list, or null to use the default.
8192Weekly recurring availability intervals.
70Show child attributes
Show child attributes
Reminder flows to trigger before each appointment.
50Show child attributes
Show child attributes
Optional internal description of the calendar.
2000Address or link shown to the invitee for this location type.
500Message shown to the invitee after booking.
2000Flow to trigger when an appointment is booked, or null for none.
^\d+$Flow to trigger when an appointment is cancelled, or null for none.
^\d+$External calendar connection (from appointmentExternalCalendars.list) to sync bookings to, or null for none.
^\d+$Response
OK
The response is of type any.
Was this page helpful?
curl --request PUT \
--url https://app.chatbotx.io/api/v1/appointment-calendars/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"active": true,
"timezone": "<string>",
"durationMinutes": 0,
"bufferAfterMinutes": 0,
"scheduleWindowConfig": {
"scheduleWindowType": "rollingDays",
"rollingDays": 30,
"minAdvanceDays": 0
},
"maxAppointmentsPerUser": 4503599627370496,
"dailyLimitEnabled": true,
"maxPerDay": 4503599627370496,
"allowGroupMeeting": true,
"maxPerSlot": 4503599627370496,
"externalEventTitleTemplate": "<string>",
"externalEventDescriptionTemplate": "<string>",
"externalEventAttendeesTemplate": "<string>",
"availability": [
{
"weekday": 3,
"startMinute": 712,
"endMinute": 727
}
],
"reminders": [
{
"flowId": "<string>",
"timingValue": 4503599627370496
}
],
"description": "<string>",
"locationDetail": "<string>",
"confirmationMessage": "<string>",
"confirmationFlowId": "<string>",
"cancellationFlowId": "<string>",
"externalConnectionId": "<string>"
}
'import requests
url = "https://app.chatbotx.io/api/v1/appointment-calendars/{id}"
payload = {
"name": "<string>",
"active": True,
"timezone": "<string>",
"durationMinutes": 0,
"bufferAfterMinutes": 0,
"scheduleWindowConfig": {
"scheduleWindowType": "rollingDays",
"rollingDays": 30,
"minAdvanceDays": 0
},
"maxAppointmentsPerUser": 4503599627370496,
"dailyLimitEnabled": True,
"maxPerDay": 4503599627370496,
"allowGroupMeeting": True,
"maxPerSlot": 4503599627370496,
"externalEventTitleTemplate": "<string>",
"externalEventDescriptionTemplate": "<string>",
"externalEventAttendeesTemplate": "<string>",
"availability": [
{
"weekday": 3,
"startMinute": 712,
"endMinute": 727
}
],
"reminders": [
{
"flowId": "<string>",
"timingValue": 4503599627370496
}
],
"description": "<string>",
"locationDetail": "<string>",
"confirmationMessage": "<string>",
"confirmationFlowId": "<string>",
"cancellationFlowId": "<string>",
"externalConnectionId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
active: true,
timezone: '<string>',
durationMinutes: 0,
bufferAfterMinutes: 0,
scheduleWindowConfig: {scheduleWindowType: 'rollingDays', rollingDays: 30, minAdvanceDays: 0},
maxAppointmentsPerUser: 4503599627370496,
dailyLimitEnabled: true,
maxPerDay: 4503599627370496,
allowGroupMeeting: true,
maxPerSlot: 4503599627370496,
externalEventTitleTemplate: '<string>',
externalEventDescriptionTemplate: '<string>',
externalEventAttendeesTemplate: '<string>',
availability: [{weekday: 3, startMinute: 712, endMinute: 727}],
reminders: [{flowId: '<string>', timingValue: 4503599627370496}],
description: '<string>',
locationDetail: '<string>',
confirmationMessage: '<string>',
confirmationFlowId: '<string>',
cancellationFlowId: '<string>',
externalConnectionId: '<string>'
})
};
fetch('https://app.chatbotx.io/api/v1/appointment-calendars/{id}', 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://app.chatbotx.io/api/v1/appointment-calendars/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'active' => true,
'timezone' => '<string>',
'durationMinutes' => 0,
'bufferAfterMinutes' => 0,
'scheduleWindowConfig' => [
'scheduleWindowType' => 'rollingDays',
'rollingDays' => 30,
'minAdvanceDays' => 0
],
'maxAppointmentsPerUser' => 4503599627370496,
'dailyLimitEnabled' => true,
'maxPerDay' => 4503599627370496,
'allowGroupMeeting' => true,
'maxPerSlot' => 4503599627370496,
'externalEventTitleTemplate' => '<string>',
'externalEventDescriptionTemplate' => '<string>',
'externalEventAttendeesTemplate' => '<string>',
'availability' => [
[
'weekday' => 3,
'startMinute' => 712,
'endMinute' => 727
]
],
'reminders' => [
[
'flowId' => '<string>',
'timingValue' => 4503599627370496
]
],
'description' => '<string>',
'locationDetail' => '<string>',
'confirmationMessage' => '<string>',
'confirmationFlowId' => '<string>',
'cancellationFlowId' => '<string>',
'externalConnectionId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.chatbotx.io/api/v1/appointment-calendars/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"active\": true,\n \"timezone\": \"<string>\",\n \"durationMinutes\": 0,\n \"bufferAfterMinutes\": 0,\n \"scheduleWindowConfig\": {\n \"scheduleWindowType\": \"rollingDays\",\n \"rollingDays\": 30,\n \"minAdvanceDays\": 0\n },\n \"maxAppointmentsPerUser\": 4503599627370496,\n \"dailyLimitEnabled\": true,\n \"maxPerDay\": 4503599627370496,\n \"allowGroupMeeting\": true,\n \"maxPerSlot\": 4503599627370496,\n \"externalEventTitleTemplate\": \"<string>\",\n \"externalEventDescriptionTemplate\": \"<string>\",\n \"externalEventAttendeesTemplate\": \"<string>\",\n \"availability\": [\n {\n \"weekday\": 3,\n \"startMinute\": 712,\n \"endMinute\": 727\n }\n ],\n \"reminders\": [\n {\n \"flowId\": \"<string>\",\n \"timingValue\": 4503599627370496\n }\n ],\n \"description\": \"<string>\",\n \"locationDetail\": \"<string>\",\n \"confirmationMessage\": \"<string>\",\n \"confirmationFlowId\": \"<string>\",\n \"cancellationFlowId\": \"<string>\",\n \"externalConnectionId\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://app.chatbotx.io/api/v1/appointment-calendars/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"active\": true,\n \"timezone\": \"<string>\",\n \"durationMinutes\": 0,\n \"bufferAfterMinutes\": 0,\n \"scheduleWindowConfig\": {\n \"scheduleWindowType\": \"rollingDays\",\n \"rollingDays\": 30,\n \"minAdvanceDays\": 0\n },\n \"maxAppointmentsPerUser\": 4503599627370496,\n \"dailyLimitEnabled\": true,\n \"maxPerDay\": 4503599627370496,\n \"allowGroupMeeting\": true,\n \"maxPerSlot\": 4503599627370496,\n \"externalEventTitleTemplate\": \"<string>\",\n \"externalEventDescriptionTemplate\": \"<string>\",\n \"externalEventAttendeesTemplate\": \"<string>\",\n \"availability\": [\n {\n \"weekday\": 3,\n \"startMinute\": 712,\n \"endMinute\": 727\n }\n ],\n \"reminders\": [\n {\n \"flowId\": \"<string>\",\n \"timingValue\": 4503599627370496\n }\n ],\n \"description\": \"<string>\",\n \"locationDetail\": \"<string>\",\n \"confirmationMessage\": \"<string>\",\n \"confirmationFlowId\": \"<string>\",\n \"cancellationFlowId\": \"<string>\",\n \"externalConnectionId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.chatbotx.io/api/v1/appointment-calendars/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"active\": true,\n \"timezone\": \"<string>\",\n \"durationMinutes\": 0,\n \"bufferAfterMinutes\": 0,\n \"scheduleWindowConfig\": {\n \"scheduleWindowType\": \"rollingDays\",\n \"rollingDays\": 30,\n \"minAdvanceDays\": 0\n },\n \"maxAppointmentsPerUser\": 4503599627370496,\n \"dailyLimitEnabled\": true,\n \"maxPerDay\": 4503599627370496,\n \"allowGroupMeeting\": true,\n \"maxPerSlot\": 4503599627370496,\n \"externalEventTitleTemplate\": \"<string>\",\n \"externalEventDescriptionTemplate\": \"<string>\",\n \"externalEventAttendeesTemplate\": \"<string>\",\n \"availability\": [\n {\n \"weekday\": 3,\n \"startMinute\": 712,\n \"endMinute\": 727\n }\n ],\n \"reminders\": [\n {\n \"flowId\": \"<string>\",\n \"timingValue\": 4503599627370496\n }\n ],\n \"description\": \"<string>\",\n \"locationDetail\": \"<string>\",\n \"confirmationMessage\": \"<string>\",\n \"confirmationFlowId\": \"<string>\",\n \"cancellationFlowId\": \"<string>\",\n \"externalConnectionId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body"<unknown>"{
"defined": true,
"code": "businessError",
"status": 400,
"message": "An error occurred while processing your request",
"data": "<unknown>"
}{
"defined": true,
"code": "UNAUTHORIZED",
"status": 401,
"message": "Authentication required",
"data": "<unknown>"
}{
"defined": true,
"code": "FORBIDDEN",
"status": 403,
"message": "You do not have permission to perform this action",
"data": "<unknown>"
}{
"defined": true,
"code": "notFound",
"status": 404,
"message": "Resource not found",
"data": "<unknown>"
}{
"defined": true,
"code": "nameAlreadyExists",
"status": 409,
"message": "Calendar name already exists",
"data": "<unknown>"
}{
"defined": true,
"code": "invalidRequestData",
"status": 422,
"message": "Input validation failed",
"data": {
"issues": [
{
"message": "<string>",
"path": [
"<string>"
]
}
]
}
}{
"defined": true,
"code": "tooManyRequests",
"status": 429,
"message": "Too many requests",
"data": "<unknown>"
}{
"defined": true,
"code": "INTERNAL_SERVER_ERROR",
"status": 500,
"message": "An unexpected error occurred",
"data": "<unknown>"
}