feat: api v2 get google-calendar event details (#21336)

* feat: add API endpoint to fetch Google Calendar meeting details and metrics

* refactor: rename eventId to eventUid and update calendar event details endpoint

* feat: implement Google Calendar service account delegation for event details

* refactor: simplify Google Calendar event response

* refactor: simplify calendar event details endpoint

* feat: add calendar event details endpoint with schema and controller implementation

* chore: reset platform libraries package version to 0.0.0

* refactor: migrate calendar event details to unified calendars module

* Update gcal.service.ts

* refactor: update calendar event schema with title and locations fields replacing summary and conferenceData

* feat: update calendar event source to use enum type for better validation

* update api description

* refactor: make Google Calendar service methods private

* refactor: remove location field from unified calendar event output

* fix: update Google Calendar event location type property to match unified schema

* feat: add CalendarEventStatus enum and map Google Calendar statuses to standardized values

* docs: add property descriptions to calendar event schema and remove organizer field

* fix: change calendar event locations type from null to empty array in unified calendar API

* feat: make calendar source field required

* refactor: replace organizer field with hosts array in Google calendar event mapping

* feat: enhance calendar event location API documentation with detailed property descriptions

* feat: add calendar event details endpoint documentation

* fix: typo

* docs: update calendar event details API description to remove reschedule history reference

* refactor: rename uri to url in calendar event location interfaces and mappings

* refactor: improve calendar event response status handling and code organization

* Update get-unified-calendar-event.ts

* update docs

* chore: update @calcom/platform-libraries to version 0.0.215
This commit is contained in:
Somay Chauhan
2025-06-13 13:08:54 +05:30
committed by GitHub
parent e55ecff899
commit 6de6f8e697
14 changed files with 6843 additions and 50 deletions
+216
View File
@@ -7349,6 +7349,55 @@
"tags": ["Bookings"]
}
},
"/v2/calendars/{calendar}/event/{eventUid}": {
"get": {
"operationId": "CalUnifiedCalendarsController_getCalendarEventDetails",
"summary": "Get meeting Details from calendar",
"description": "Returns detailed information about a meeting including attendance metrics",
"parameters": [
{
"name": "calendar",
"required": true,
"in": "path",
"schema": {
"enum": ["google"],
"type": "string"
}
},
{
"name": "eventUid",
"required": true,
"in": "path",
"description": "The Google Calendar event ID",
"schema": {
"type": "string"
}
},
{
"name": "Authorization",
"in": "header",
"description": "value must be `Bearer <token>` where `<token>` is api key prefixed with cal_ or managed user access token",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetUnifiedCalendarEventOutput"
}
}
}
}
},
"tags": ["Cal Unified Calendars"]
}
},
"/v2/calendars/ics-feed/save": {
"post": {
"operationId": "CalendarsController_createIcsFeed",
@@ -23086,6 +23135,173 @@
},
"required": ["status", "data"]
},
"CalendarEventResponseStatus": {
"type": "string",
"description": "Attendee's response to the invitation",
"enum": ["accepted", "pending", "declined", "needsAction"]
},
"CalendarEventAttendee": {
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Email address of the attendee"
},
"name": {
"type": "string",
"description": "Display name of the attendee"
},
"responseStatus": {
"nullable": true,
"example": "accepted",
"$ref": "#/components/schemas/CalendarEventResponseStatus"
},
"self": {
"type": "boolean",
"nullable": true,
"description": "Indicates if this attendee is the current user"
},
"optional": {
"type": "boolean",
"nullable": true,
"description": "Indicates if this attendee's attendance is optional"
}
},
"required": ["email"]
},
"CalendarEventStatus": {
"type": "string",
"description": "Status of the event (accepted, pending, declined, cancelled)",
"enum": ["accepted", "pending", "declined", "cancelled"]
},
"CalendarEventHost": {
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Email address of the event host"
},
"name": {
"type": "string",
"nullable": true,
"description": "Display name of the event host"
}
},
"required": ["email"]
},
"CalendarSource": {
"type": "string",
"description": "Calendar integration source (e.g., Google Calendar, Office 365, Apple Calendar). Currently only Google Calendar is supported.",
"enum": ["google", "office365", "apple"]
},
"UnifiedCalendarEventOutput": {
"type": "object",
"properties": {
"start": {
"type": "object",
"properties": {
"time": {
"type": "string",
"format": "date-time"
},
"timeZone": {
"type": "string"
}
},
"description": "Start date and time of the calendar event with timezone information"
},
"end": {
"type": "object",
"properties": {
"time": {
"type": "string",
"format": "date-time"
},
"timeZone": {
"type": "string"
}
},
"description": "End date and time of the calendar event with timezone information"
},
"id": {
"type": "string",
"description": "Unique identifier of the calendar event"
},
"title": {
"type": "string",
"description": "Title of the calendar event"
},
"description": {
"type": "string",
"nullable": true,
"description": "Detailed description of the calendar event"
},
"locations": {
"type": "array",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/CalendarEventVideoLocation"
},
{
"$ref": "#/components/schemas/CalendarEventPhoneLocation"
},
{
"$ref": "#/components/schemas/CalendarEventSipLocation"
},
{
"$ref": "#/components/schemas/CalendarEventMoreLocation"
}
],
"discriminator": {
"propertyName": "type"
}
},
"nullable": true,
"description": "Conference locations with entry points (video, phone, sip, more)"
},
"attendees": {
"nullable": true,
"description": "List of attendees with their response status",
"type": "array",
"items": {
"$ref": "#/components/schemas/CalendarEventAttendee"
}
},
"status": {
"nullable": true,
"example": "accepted",
"$ref": "#/components/schemas/CalendarEventStatus"
},
"hosts": {
"nullable": true,
"description": "Information about the event hosts (organizers)",
"type": "array",
"items": {
"$ref": "#/components/schemas/CalendarEventHost"
}
},
"source": {
"example": "google",
"$ref": "#/components/schemas/CalendarSource"
}
},
"required": ["start", "end", "id", "title", "source"]
},
"GetUnifiedCalendarEventOutput": {
"type": "object",
"properties": {
"status": {
"type": "string",
"example": "success",
"enum": ["success", "error"]
},
"data": {
"$ref": "#/components/schemas/UnifiedCalendarEventOutput"
}
},
"required": ["status", "data"]
},
"RequestEmailVerificationInput": {
"type": "object",
"properties": {