Files
openclaw-workspace/skills/api-gateway/references/zoho-calendar.md
2026-04-11 09:45:12 -05:00

2.8 KiB

Zoho Calendar Routing Reference

App name: zoho-calendar Base URL proxied: calendar.zoho.com

API Path Pattern

/zoho-calendar/api/v1/{resource}

Common Endpoints

Calendars

# List calendars
GET /zoho-calendar/api/v1/calendars

# Get calendar details
GET /zoho-calendar/api/v1/calendars/{calendar_uid}

# Create calendar
POST /zoho-calendar/api/v1/calendars?calendarData={json}

# Delete calendar
DELETE /zoho-calendar/api/v1/calendars/{calendar_uid}

Events

# List events (range required, max 31 days)
GET /zoho-calendar/api/v1/calendars/{calendar_uid}/events?range={"start":"yyyyMMdd","end":"yyyyMMdd"}

# Get event details
GET /zoho-calendar/api/v1/calendars/{calendar_uid}/events/{event_uid}

# Create event
POST /zoho-calendar/api/v1/calendars/{calendar_uid}/events?eventdata={json}

# Update event (etag required in eventdata)
PUT /zoho-calendar/api/v1/calendars/{calendar_uid}/events/{event_uid}?eventdata={json}

# Delete event (etag required as HEADER)
DELETE /zoho-calendar/api/v1/calendars/{calendar_uid}/events/{event_uid}
Header: etag: {etag_value}

Event Data Format

Create/Update Event

{
  "title": "Meeting Title",
  "dateandtime": {
    "timezone": "America/Los_Angeles",
    "start": "yyyyMMdd'T'HHmmss'Z'",
    "end": "yyyyMMdd'T'HHmmss'Z'"
  },
  "description": "Event description",
  "location": "Meeting room",
  "isallday": false,
  "attendees": [
    {
      "email": "user@example.com",
      "permission": 1,
      "attendance": 1
    }
  ],
  "reminders": [
    {
      "action": "popup",
      "minutes": 30
    }
  ],
  "rrule": "FREQ=DAILY;COUNT=5"
}

Update Event (etag required)

{
  "title": "Updated Title",
  "dateandtime": {...},
  "etag": 1770368451507
}

Calendar Data Format

{
  "name": "Calendar Name",
  "color": "#FF5733",
  "textcolor": "#FFFFFF",
  "description": "Calendar description"
}

Notes

  • Event and calendar data is passed as JSON in query parameters (eventdata, calendarData)
  • Date/time format: yyyyMMdd'T'HHmmss'Z' (GMT) for timed events, yyyyMMdd for all-day
  • The range parameter for listing events cannot exceed 31 days
  • IMPORTANT: For delete operations, etag must be passed as an HTTP header, not a query parameter
  • The etag is required for update and delete operations - always get the latest etag before modifying
  • Permission levels for attendees: 0 (Guest), 1 (View), 2 (Invite), 3 (Edit)
  • Attendance: 0 (Non-participant), 1 (Required), 2 (Optional)
  • Reminder actions: email, popup, notification

Resources