From 0dae9b5d70c0c6a2ee978b9823d665f5c7450730 Mon Sep 17 00:00:00 2001 From: Vinyarion <38413862+VinyarionHyarmendacil@users.noreply.github.com> Date: Tue, 28 Apr 2026 21:50:27 -0500 Subject: [PATCH 1/4] Update event & relevant request schemas to support recurring events --- .../requests/CreateCalendarEventRequest.yaml | 4 +++ .../requests/UpdateCalendarEventRequest.yaml | 2 ++ .../components/schemas/CalendarDayOfWeek.yaml | 13 ++++++++++ openapi/components/schemas/CalendarEvent.yaml | 7 ++---- .../schemas/CalendarEventFrequency.yaml | 10 ++++++++ .../schemas/CalendarEventOccurrenceKind.yaml | 9 +++++++ .../schemas/CalendarEventRecurrence.yaml | 25 +++++++++++++++++++ .../schemas/CalendarEventRecurrenceEnd.yaml | 16 ++++++++++++ .../CalendarEventRecurrenceEndType.yaml | 8 ++++++ 9 files changed, 89 insertions(+), 5 deletions(-) create mode 100644 openapi/components/schemas/CalendarDayOfWeek.yaml create mode 100644 openapi/components/schemas/CalendarEventFrequency.yaml create mode 100644 openapi/components/schemas/CalendarEventOccurrenceKind.yaml create mode 100644 openapi/components/schemas/CalendarEventRecurrence.yaml create mode 100644 openapi/components/schemas/CalendarEventRecurrenceEnd.yaml create mode 100644 openapi/components/schemas/CalendarEventRecurrenceEndType.yaml diff --git a/openapi/components/requests/CreateCalendarEventRequest.yaml b/openapi/components/requests/CreateCalendarEventRequest.yaml index 176bfc22..8cb2ec3f 100644 --- a/openapi/components/requests/CreateCalendarEventRequest.yaml +++ b/openapi/components/requests/CreateCalendarEventRequest.yaml @@ -33,12 +33,16 @@ properties: $ref: ../schemas/LanguageCode.yaml maxItems: 3 minItems: 0 + occurrenceKind: + $ref: ../schemas/CalendarEventOccurrenceKind.yaml parentId: $ref: ../schemas/CalendarID.yaml platforms: type: array items: $ref: ../schemas/CalendarEventPlatform.yaml + recurrence: + $ref: ../schemas/CalendarEventRecurrence.yaml roleIds: type: array items: diff --git a/openapi/components/requests/UpdateCalendarEventRequest.yaml b/openapi/components/requests/UpdateCalendarEventRequest.yaml index dccc87e7..5570287a 100644 --- a/openapi/components/requests/UpdateCalendarEventRequest.yaml +++ b/openapi/components/requests/UpdateCalendarEventRequest.yaml @@ -36,6 +36,8 @@ properties: type: array items: type: string + recurrence: + $ref: ./CalendarEventRecurrence.yaml roleIds: type: array items: diff --git a/openapi/components/schemas/CalendarDayOfWeek.yaml b/openapi/components/schemas/CalendarDayOfWeek.yaml new file mode 100644 index 00000000..c46625c1 --- /dev/null +++ b/openapi/components/schemas/CalendarDayOfWeek.yaml @@ -0,0 +1,13 @@ +title: CalendarDayOfWeek +type: string +description: The day of the week, used for recurring events. +enum: + - FR + - MO + - SA + - SU + - TH + - TU + - WE +default: SU +example: FR diff --git a/openapi/components/schemas/CalendarEvent.yaml b/openapi/components/schemas/CalendarEvent.yaml index 81147ca3..1e542e42 100644 --- a/openapi/components/schemas/CalendarEvent.yaml +++ b/openapi/components/schemas/CalendarEvent.yaml @@ -47,8 +47,7 @@ properties: items: $ref: ./LanguageCode.yaml occurrenceKind: - type: string - description: So far if it exists, always the string "single" + $ref: ./CalendarEventOccurrenceKind.yaml ownerId: $ref: ./GroupID.yaml platforms: @@ -56,9 +55,7 @@ properties: items: $ref: ./CalendarEventPlatform.yaml recurrence: - type: string - description: So far unused, always "null" - nullable: true + $ref: ./CalendarEventRecurrence.yaml roleIds: type: array description: Group roles that may join this event diff --git a/openapi/components/schemas/CalendarEventFrequency.yaml b/openapi/components/schemas/CalendarEventFrequency.yaml new file mode 100644 index 00000000..44667cce --- /dev/null +++ b/openapi/components/schemas/CalendarEventFrequency.yaml @@ -0,0 +1,10 @@ +title: CalendarEventFrequency +type: string +description: The time unit used to specify how often a recurring event occurs. +enum: + - daily + - monthly + - weekly + - yearly +default: weekly +example: weekly diff --git a/openapi/components/schemas/CalendarEventOccurrenceKind.yaml b/openapi/components/schemas/CalendarEventOccurrenceKind.yaml new file mode 100644 index 00000000..e70967ed --- /dev/null +++ b/openapi/components/schemas/CalendarEventOccurrenceKind.yaml @@ -0,0 +1,9 @@ +title: CalendarEventOccurrenceKind +type: string +description: How an event occurs or recurs. "single" is a standalone event, "series" is a parent specification of a recurring series, and "occurrence" is an individual event in a series. +enum: + - occurrence + - series + - single +default: single +example: single diff --git a/openapi/components/schemas/CalendarEventRecurrence.yaml b/openapi/components/schemas/CalendarEventRecurrence.yaml new file mode 100644 index 00000000..cd592455 --- /dev/null +++ b/openapi/components/schemas/CalendarEventRecurrence.yaml @@ -0,0 +1,25 @@ +title: CalendarEventRecurrence +type: object +description: Details about how a recurring event will be scheduled. If the event is to be scheduled indefinitely, this will lack an "end" property. +properties: + end: + $ref: ./CalendarEventRecurrenceEnd.yaml + daysOfWeek: + type: array + description: Which days of the week the event will be scheduled, only valid/present for "weekly" recurring events + items: + $ref: ./CalendarDayOfWeek.yaml + frequency: + $ref: ./CalendarEventFrequency.yaml + interval: + type: integer + description: How often the event will be scheduled, in units of "frequency" + minimum: 1 + timezone: + type: string + description: The timezone the event will be scheduled in, in Area/Location format + example: America/Chicago +required: + - frequency + - interval + - timezone diff --git a/openapi/components/schemas/CalendarEventRecurrenceEnd.yaml b/openapi/components/schemas/CalendarEventRecurrenceEnd.yaml new file mode 100644 index 00000000..b13e3364 --- /dev/null +++ b/openapi/components/schemas/CalendarEventRecurrenceEnd.yaml @@ -0,0 +1,16 @@ +title: CalendarEventRecurrenceEnd +type: object +description: Details about how a recurring event stops being scheduled +properties: + count: + type: integer + description: Required for "afterOccurrences" - The number of times the event will be scheduled before it stops being scheduled + minimum: 1 + date: + type: string + description: Required for "afterDate" - The date and time after which the event will stop being scheduled, **without timezone or offset** + example: 2026-12-31T23:59:00 + type: + $ref: ./CalendarEventRecurrenceEndType.yaml +required: + - type diff --git a/openapi/components/schemas/CalendarEventRecurrenceEndType.yaml b/openapi/components/schemas/CalendarEventRecurrenceEndType.yaml new file mode 100644 index 00000000..5a9c81cb --- /dev/null +++ b/openapi/components/schemas/CalendarEventRecurrenceEndType.yaml @@ -0,0 +1,8 @@ +title: CalendarEventRecurrenceEndTyoe +type: string +description: How a recurring event stops being scheduled +enum: + - afterDate + - afterOccurrences +default: afterDate +example: afterOccurrences From cd1d02a2396274bf1871bcce46371a7befcf0a55 Mon Sep 17 00:00:00 2001 From: Vinyarion <38413862+VinyarionHyarmendacil@users.noreply.github.com> Date: Tue, 28 Apr 2026 21:55:02 -0500 Subject: [PATCH 2/4] Update CalendarEventRecurrence.yaml --- openapi/components/schemas/CalendarEventRecurrence.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/openapi/components/schemas/CalendarEventRecurrence.yaml b/openapi/components/schemas/CalendarEventRecurrence.yaml index cd592455..e339c680 100644 --- a/openapi/components/schemas/CalendarEventRecurrence.yaml +++ b/openapi/components/schemas/CalendarEventRecurrence.yaml @@ -1,6 +1,7 @@ title: CalendarEventRecurrence type: object description: Details about how a recurring event will be scheduled. If the event is to be scheduled indefinitely, this will lack an "end" property. +nullable: true properties: end: $ref: ./CalendarEventRecurrenceEnd.yaml From 671215e2df241075cc53cb144fee541b1b192bc5 Mon Sep 17 00:00:00 2001 From: Vinyarion <38413862+VinyarionHyarmendacil@users.noreply.github.com> Date: Tue, 28 Apr 2026 21:57:17 -0500 Subject: [PATCH 3/4] Update UpdateCalendarEventRequest.yaml --- openapi/components/requests/UpdateCalendarEventRequest.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openapi/components/requests/UpdateCalendarEventRequest.yaml b/openapi/components/requests/UpdateCalendarEventRequest.yaml index 5570287a..ccbcf803 100644 --- a/openapi/components/requests/UpdateCalendarEventRequest.yaml +++ b/openapi/components/requests/UpdateCalendarEventRequest.yaml @@ -37,7 +37,7 @@ properties: items: type: string recurrence: - $ref: ./CalendarEventRecurrence.yaml + $ref: ../schemas/CalendarEventRecurrence.yaml roleIds: type: array items: From f1d8a8761f9cc96165ea29d0d6e21aadcbad7640 Mon Sep 17 00:00:00 2001 From: Vinyarion <38413862+VinyarionHyarmendacil@users.noreply.github.com> Date: Tue, 28 Apr 2026 21:57:53 -0500 Subject: [PATCH 4/4] Update CalendarEventRecurrence.yaml --- openapi/components/schemas/CalendarEventRecurrence.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openapi/components/schemas/CalendarEventRecurrence.yaml b/openapi/components/schemas/CalendarEventRecurrence.yaml index e339c680..54aa32a1 100644 --- a/openapi/components/schemas/CalendarEventRecurrence.yaml +++ b/openapi/components/schemas/CalendarEventRecurrence.yaml @@ -3,13 +3,13 @@ type: object description: Details about how a recurring event will be scheduled. If the event is to be scheduled indefinitely, this will lack an "end" property. nullable: true properties: - end: - $ref: ./CalendarEventRecurrenceEnd.yaml daysOfWeek: type: array description: Which days of the week the event will be scheduled, only valid/present for "weekly" recurring events items: $ref: ./CalendarDayOfWeek.yaml + end: + $ref: ./CalendarEventRecurrenceEnd.yaml frequency: $ref: ./CalendarEventFrequency.yaml interval: