knowledge-base
This file contains domain knowledge about the Cal.diy product and codebase. For coding…
Detailed documentation for schedule management endpoints in the Cal.diy API v2.
$ npx -y skills add calcom/cal.diy --agent claude-codeHow it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
Detailed documentation for schedule management endpoints in the Cal.diy API v2.
Detailed documentation for schedule management endpoints in the Cal.diy API v2.
| Method | Endpoint | Description | |--------|----------|-------------| | GET | /v2/schedules | List all schedules | | POST | /v2/schedules | Create a schedule | | GET | /v2/schedules/default | Get default schedule | | GET | /v2/schedules/{scheduleId} | Get a schedule | | PATCH | /v2/schedules/{scheduleId} | Update a schedule | | DELETE | /v2/schedules/{scheduleId} | Delete a schedule |
Schedules define when a user is available for bookings. Key concepts:
GET /v2/schedules
{
"status": "success",
"data": [
{
"id": 1,
"name": "Working Hours",
"isDefault": true,
"timeZone": "America/New_York",
"workingHours": [
{
"days": [1, 2, 3, 4, 5],
"startTime": 540,
"endTime": 1020
}
],
"availability": [
{
"id": 1,
"days": [1, 2, 3, 4, 5],
"startTime": "1970-01-01T09:00:00.000Z",
"endTime": "1970-01-01T17:00:00.000Z"
}
],
"dateOverrides": [],
"isManaged": false,
"readOnly": false,
"isLastSchedule": false
}
]
}POST /v2/schedules
{
"name": "Working Hours",
"timeZone": "America/New_York",
"isDefault": true,
"availability": [
{
"days": [1, 2, 3, 4, 5],
"startTime": "09:00",
"endTime": "17:00"
}
],
"dateOverrides": [
{
"date": "2024-12-25",
"startTime": null,
"endTime": null
}
]
}| Field | Type | Required | Description | |-------|------|----------|-------------| | name | string | Yes | Schedule name | | timeZone | string | Yes | IANA timezone identifier | | isDefault | boolean | No | Set as default schedule | | availability | array | Yes | Weekly availability rules | | dateOverrides | array | No | Date-specific overrides |
| Field | Type | Description | |-------|------|-------------| | days | array | Days of week (0=Sunday, 1=Monday, ..., 6=Saturday) | | startTime | string | Start time in HH:MM format | | endTime | string | End time in HH:MM format |
| Field | Type | Description | |-------|------|-------------| | date | string | Date in YYYY-MM-DD format | | startTime | string/null | Start time (null = unavailable) | | endTime | string/null | End time (null = unavailable) |
GET /v2/schedules/default
Returns the user's default schedule.
GET /v2/schedules/{scheduleId}| Parameter | Type | Description | |-----------|------|-------------| | scheduleId | number | Schedule ID |
PATCH /v2/schedules/{scheduleId}Only include fields you want to update:
{
"name": "Updated Schedule Name",
"availability": [
{
"days": [1, 2, 3, 4, 5],
"startTime": "08:00",
"endTime": "18:00"
}
]
}DELETE /v2/schedules/{scheduleId}Note: You cannot delete your last schedule. At least one schedule must exist.
{
"name": "Business Hours",
"timeZone": "America/New_York",
"availability": [
{
"days": [1, 2, 3, 4, 5],
"startTime": "09:00",
"endTime": "17:00"
}
]
}{
"name": "Split Hours",
"timeZone": "America/New_York",
"availability": [
{
"days": [1, 2, 3, 4, 5],
"startTime": "09:00",
"endTime": "12:00"
},
{
"days": [1, 2, 3, 4, 5],
"startTime": "14:00",
"endTime": "18:00"
}
]
}{
"name": "Variable Hours",
"timeZone": "America/New_York",
"availability": [
{
"days": [1, 3, 5],
"startTime": "09:00",
"endTime": "17:00"
},
{
"days": [2, 4],
"startTime": "10:00",
"endTime": "19:00"
}
]
}{
"name": "Weekend Support",
"timeZone": "America/New_York",
"availability": [
{
"days": [0, 6],
"startTime": "10:00",
"endTime": "14:00"
}
]
}{
"dateOverrides": [
{
"date": "2024-12-25",
"startTime": null,
"endTime": null
},
{
"date": "2024-01-01",
"startTime": null,
"endTime": null
}
]
}{
"dateOverrides": [
{
"date": "2024-12-24",
"startTime": "09:00",
"endTime": "12:00"
}
]
}For organization-level schedule management:
GET /v2/organizations/{orgId}/schedulesGET /v2/organizations/{orgId}/users/{userId}/schedulesPOST /v2/organizations/{orgId}/users/{userId}/schedulesGET /v2/organizations/{orgId}/teams/{teamId}/users/{userId}/schedulesThe API returns working hours in two formats:
{
"workingHours": [
{
"days": [1, 2, 3, 4, 5],
"startTime": 540,
"endTime": 1020
}
]
}Repo: calcom/cal.com
This file contains domain knowledge about the Cal.diy product and codebase. For coding…
The `packages/features` package should contain only framework-agnostic code: - Repositories…