[Integration] Map & test Apple Calendar / CalDAV integration #32

Open
opened 2026-03-23 08:38:41 -07:00 by pyr0ball · 0 comments
Owner

Apple Calendar — Interview Event Push via CalDAV

Push interview events to Apple Calendar (or any CalDAV server) when a job moves to phone_screen or interviewing.

Current state

scripts/integrations/apple_calendar.py exists (106 lines, 7 methods). CalDAV push was implemented in v0.6.0 via scripts/calendar_push.py — this task validates the full integration framework path is wired correctly.

Tasks

Mapping

  • Document required credentials: CalDAV URL, username, password (or app-specific password for iCloud)
  • Document iCloud-specific URL format: https://caldav.icloud.com/
  • Map event fields: VEVENT SUMMARY, DTSTART, DTEND, DESCRIPTION, URL
  • Verify config file format: config/integrations/apple_calendar.yaml

Implementation

  • Confirm AppleCalendarIntegration.connect() stores credentials and derives principal URL
  • Confirm AppleCalendarIntegration.test() does a live PROPFIND to validate credentials
  • Verify /api/settings/system/integrations/apple_calendar/test returns live result (not stub)
  • Confirm event push triggers when job moves to phone_screen or interviewing
  • Test iCloud app-specific password auth (iCloud requires 2FA + app-specific password)

Testing

  • Unit test: CalDAV VEVENT generation produces valid RFC 5545 output
  • Unit test: test_apple_calendar_connect_stores_config()
  • Integration test with a real CalDAV server (local Nextcloud or iCloud sandbox)
  • Test duplicate prevention via calendar_event_id

Acceptance criteria

  • Settings → Integrations shows Apple Calendar card with CalDAV URL, username, password fields
  • iCloud connection works with app-specific password
  • Interview events appear in Calendar.app after kanban stage change
## Apple Calendar — Interview Event Push via CalDAV Push interview events to Apple Calendar (or any CalDAV server) when a job moves to `phone_screen` or `interviewing`. ### Current state `scripts/integrations/apple_calendar.py` exists (106 lines, 7 methods). CalDAV push was implemented in v0.6.0 via `scripts/calendar_push.py` — this task validates the full integration framework path is wired correctly. ### Tasks **Mapping** - [ ] Document required credentials: CalDAV URL, username, password (or app-specific password for iCloud) - [ ] Document iCloud-specific URL format: `https://caldav.icloud.com/` - [ ] Map event fields: VEVENT SUMMARY, DTSTART, DTEND, DESCRIPTION, URL - [ ] Verify config file format: `config/integrations/apple_calendar.yaml` **Implementation** - [ ] Confirm `AppleCalendarIntegration.connect()` stores credentials and derives principal URL - [ ] Confirm `AppleCalendarIntegration.test()` does a live PROPFIND to validate credentials - [ ] Verify `/api/settings/system/integrations/apple_calendar/test` returns live result (not stub) - [ ] Confirm event push triggers when job moves to `phone_screen` or `interviewing` - [ ] Test iCloud app-specific password auth (iCloud requires 2FA + app-specific password) **Testing** - [ ] Unit test: CalDAV VEVENT generation produces valid RFC 5545 output - [ ] Unit test: `test_apple_calendar_connect_stores_config()` - [ ] Integration test with a real CalDAV server (local Nextcloud or iCloud sandbox) - [ ] Test duplicate prevention via `calendar_event_id` ### Acceptance criteria - Settings → Integrations shows Apple Calendar card with CalDAV URL, username, password fields - iCloud connection works with app-specific password - Interview events appear in Calendar.app after kanban stage change
pyr0ball added this to the Paid Tier GA milestone 2026-03-23 08:38:41 -07:00
pyr0ball added the
feature-request
label 2026-03-23 08:38:41 -07:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Circuit-Forge/peregrine#32
No description provided.