sig
  module FreeBusyRequestItem :
    sig
      type t = { id : string; }
      val id : (GapiCalendarV3Model.FreeBusyRequestItem.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.FreeBusyRequestItem.t
      val render :
        GapiCalendarV3Model.FreeBusyRequestItem.t ->
        GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.FreeBusyRequestItem.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.FreeBusyRequestItem.t
      val to_data_model :
        GapiCalendarV3Model.FreeBusyRequestItem.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.FreeBusyRequestItem.t
    end
  module FreeBusyRequest :
    sig
      type t = {
        calendarExpansionMax : int;
        groupExpansionMax : int;
        items : GapiCalendarV3Model.FreeBusyRequestItem.t list;
        timeMax : GapiDate.t;
        timeMin : GapiDate.t;
        timeZone : string;
      }
      val calendarExpansionMax :
        (GapiCalendarV3Model.FreeBusyRequest.t, int) GapiLens.t
      val groupExpansionMax :
        (GapiCalendarV3Model.FreeBusyRequest.t, int) GapiLens.t
      val items :
        (GapiCalendarV3Model.FreeBusyRequest.t,
         GapiCalendarV3Model.FreeBusyRequestItem.t list)
        GapiLens.t
      val timeMax :
        (GapiCalendarV3Model.FreeBusyRequest.t, GapiDate.t) GapiLens.t
      val timeMin :
        (GapiCalendarV3Model.FreeBusyRequest.t, GapiDate.t) GapiLens.t
      val timeZone :
        (GapiCalendarV3Model.FreeBusyRequest.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.FreeBusyRequest.t
      val render :
        GapiCalendarV3Model.FreeBusyRequest.t ->
        GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.FreeBusyRequest.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.FreeBusyRequest.t
      val to_data_model :
        GapiCalendarV3Model.FreeBusyRequest.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.FreeBusyRequest.t
    end
  module Setting :
    sig
      type t = { etag : string; id : string; kind : string; value : string; }
      val etag : (GapiCalendarV3Model.Setting.t, string) GapiLens.t
      val id : (GapiCalendarV3Model.Setting.t, string) GapiLens.t
      val kind : (GapiCalendarV3Model.Setting.t, string) GapiLens.t
      val value : (GapiCalendarV3Model.Setting.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.Setting.t
      val render :
        GapiCalendarV3Model.Setting.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.Setting.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.Setting.t
      val to_data_model :
        GapiCalendarV3Model.Setting.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.Setting.t
    end
  module Settings :
    sig
      type t = {
        etag : string;
        items : GapiCalendarV3Model.Setting.t list;
        kind : string;
        nextPageToken : string;
        nextSyncToken : string;
      }
      val etag : (GapiCalendarV3Model.Settings.t, string) GapiLens.t
      val items :
        (GapiCalendarV3Model.Settings.t, GapiCalendarV3Model.Setting.t list)
        GapiLens.t
      val kind : (GapiCalendarV3Model.Settings.t, string) GapiLens.t
      val nextPageToken : (GapiCalendarV3Model.Settings.t, string) GapiLens.t
      val nextSyncToken : (GapiCalendarV3Model.Settings.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.Settings.t
      val render :
        GapiCalendarV3Model.Settings.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.Settings.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.Settings.t
      val to_data_model :
        GapiCalendarV3Model.Settings.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.Settings.t
    end
  module EventAttendee :
    sig
      type t = {
        additionalGuests : int;
        comment : string;
        displayName : string;
        email : string;
        id : string;
        optional : bool;
        organizer : bool;
        resource : bool;
        responseStatus : string;
        self : bool;
      }
      val additionalGuests :
        (GapiCalendarV3Model.EventAttendee.t, int) GapiLens.t
      val comment : (GapiCalendarV3Model.EventAttendee.t, string) GapiLens.t
      val displayName :
        (GapiCalendarV3Model.EventAttendee.t, string) GapiLens.t
      val email : (GapiCalendarV3Model.EventAttendee.t, string) GapiLens.t
      val id : (GapiCalendarV3Model.EventAttendee.t, string) GapiLens.t
      val optional : (GapiCalendarV3Model.EventAttendee.t, bool) GapiLens.t
      val organizer : (GapiCalendarV3Model.EventAttendee.t, bool) GapiLens.t
      val resource : (GapiCalendarV3Model.EventAttendee.t, bool) GapiLens.t
      val responseStatus :
        (GapiCalendarV3Model.EventAttendee.t, string) GapiLens.t
      val self : (GapiCalendarV3Model.EventAttendee.t, bool) GapiLens.t
      val empty : GapiCalendarV3Model.EventAttendee.t
      val render :
        GapiCalendarV3Model.EventAttendee.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.EventAttendee.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.EventAttendee.t
      val to_data_model :
        GapiCalendarV3Model.EventAttendee.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.EventAttendee.t
    end
  module Error :
    sig
      type t = { domain : string; reason : string; }
      val domain : (GapiCalendarV3Model.Error.t, string) GapiLens.t
      val reason : (GapiCalendarV3Model.Error.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.Error.t
      val render :
        GapiCalendarV3Model.Error.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.Error.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.Error.t
      val to_data_model :
        GapiCalendarV3Model.Error.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.Error.t
    end
  module ColorDefinition :
    sig
      type t = { background : string; foreground : string; }
      val background :
        (GapiCalendarV3Model.ColorDefinition.t, string) GapiLens.t
      val foreground :
        (GapiCalendarV3Model.ColorDefinition.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.ColorDefinition.t
      val render :
        GapiCalendarV3Model.ColorDefinition.t ->
        GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.ColorDefinition.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.ColorDefinition.t
      val to_data_model :
        GapiCalendarV3Model.ColorDefinition.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.ColorDefinition.t
    end
  module FreeBusyGroup :
    sig
      type t = {
        calendars : string list;
        errors : GapiCalendarV3Model.Error.t list;
      }
      val calendars :
        (GapiCalendarV3Model.FreeBusyGroup.t, string list) GapiLens.t
      val errors :
        (GapiCalendarV3Model.FreeBusyGroup.t,
         GapiCalendarV3Model.Error.t list)
        GapiLens.t
      val empty : GapiCalendarV3Model.FreeBusyGroup.t
      val render :
        GapiCalendarV3Model.FreeBusyGroup.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.FreeBusyGroup.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.FreeBusyGroup.t
      val to_data_model :
        GapiCalendarV3Model.FreeBusyGroup.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.FreeBusyGroup.t
    end
  module CalendarNotification :
    sig
      type t = { _method : string; _type : string; }
      val _method :
        (GapiCalendarV3Model.CalendarNotification.t, string) GapiLens.t
      val _type :
        (GapiCalendarV3Model.CalendarNotification.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.CalendarNotification.t
      val render :
        GapiCalendarV3Model.CalendarNotification.t ->
        GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.CalendarNotification.t ->
        GapiJson.json_data_model ->
        GapiCalendarV3Model.CalendarNotification.t
      val to_data_model :
        GapiCalendarV3Model.CalendarNotification.t ->
        GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model ->
        GapiCalendarV3Model.CalendarNotification.t
    end
  module EventReminder :
    sig
      type t = { _method : string; minutes : int; }
      val _method : (GapiCalendarV3Model.EventReminder.t, string) GapiLens.t
      val minutes : (GapiCalendarV3Model.EventReminder.t, int) GapiLens.t
      val empty : GapiCalendarV3Model.EventReminder.t
      val render :
        GapiCalendarV3Model.EventReminder.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.EventReminder.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.EventReminder.t
      val to_data_model :
        GapiCalendarV3Model.EventReminder.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.EventReminder.t
    end
  module CalendarListEntry :
    sig
      module NotificationSettings :
        sig
          type t = {
            notifications : GapiCalendarV3Model.CalendarNotification.t list;
          }
          val notifications :
            (GapiCalendarV3Model.CalendarListEntry.NotificationSettings.t,
             GapiCalendarV3Model.CalendarNotification.t list)
            GapiLens.t
          val empty :
            GapiCalendarV3Model.CalendarListEntry.NotificationSettings.t
          val render :
            GapiCalendarV3Model.CalendarListEntry.NotificationSettings.t ->
            GapiJson.json_data_model list
          val parse :
            GapiCalendarV3Model.CalendarListEntry.NotificationSettings.t ->
            GapiJson.json_data_model ->
            GapiCalendarV3Model.CalendarListEntry.NotificationSettings.t
        end
      type t = {
        accessRole : string;
        backgroundColor : string;
        colorId : string;
        defaultReminders : GapiCalendarV3Model.EventReminder.t list;
        deleted : bool;
        description : string;
        etag : string;
        foregroundColor : string;
        hidden : bool;
        id : string;
        kind : string;
        location : string;
        notificationSettings :
          GapiCalendarV3Model.CalendarListEntry.NotificationSettings.t;
        primary : bool;
        selected : bool;
        summary : string;
        summaryOverride : string;
        timeZone : string;
      }
      val accessRole :
        (GapiCalendarV3Model.CalendarListEntry.t, string) GapiLens.t
      val backgroundColor :
        (GapiCalendarV3Model.CalendarListEntry.t, string) GapiLens.t
      val colorId :
        (GapiCalendarV3Model.CalendarListEntry.t, string) GapiLens.t
      val defaultReminders :
        (GapiCalendarV3Model.CalendarListEntry.t,
         GapiCalendarV3Model.EventReminder.t list)
        GapiLens.t
      val deleted :
        (GapiCalendarV3Model.CalendarListEntry.t, bool) GapiLens.t
      val description :
        (GapiCalendarV3Model.CalendarListEntry.t, string) GapiLens.t
      val etag : (GapiCalendarV3Model.CalendarListEntry.t, string) GapiLens.t
      val foregroundColor :
        (GapiCalendarV3Model.CalendarListEntry.t, string) GapiLens.t
      val hidden : (GapiCalendarV3Model.CalendarListEntry.t, bool) GapiLens.t
      val id : (GapiCalendarV3Model.CalendarListEntry.t, string) GapiLens.t
      val kind : (GapiCalendarV3Model.CalendarListEntry.t, string) GapiLens.t
      val location :
        (GapiCalendarV3Model.CalendarListEntry.t, string) GapiLens.t
      val notificationSettings :
        (GapiCalendarV3Model.CalendarListEntry.t,
         GapiCalendarV3Model.CalendarListEntry.NotificationSettings.t)
        GapiLens.t
      val primary :
        (GapiCalendarV3Model.CalendarListEntry.t, bool) GapiLens.t
      val selected :
        (GapiCalendarV3Model.CalendarListEntry.t, bool) GapiLens.t
      val summary :
        (GapiCalendarV3Model.CalendarListEntry.t, string) GapiLens.t
      val summaryOverride :
        (GapiCalendarV3Model.CalendarListEntry.t, string) GapiLens.t
      val timeZone :
        (GapiCalendarV3Model.CalendarListEntry.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.CalendarListEntry.t
      val render :
        GapiCalendarV3Model.CalendarListEntry.t ->
        GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.CalendarListEntry.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.CalendarListEntry.t
      val to_data_model :
        GapiCalendarV3Model.CalendarListEntry.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.CalendarListEntry.t
    end
  module CalendarList :
    sig
      type t = {
        etag : string;
        items : GapiCalendarV3Model.CalendarListEntry.t list;
        kind : string;
        nextPageToken : string;
        nextSyncToken : string;
      }
      val etag : (GapiCalendarV3Model.CalendarList.t, string) GapiLens.t
      val items :
        (GapiCalendarV3Model.CalendarList.t,
         GapiCalendarV3Model.CalendarListEntry.t list)
        GapiLens.t
      val kind : (GapiCalendarV3Model.CalendarList.t, string) GapiLens.t
      val nextPageToken :
        (GapiCalendarV3Model.CalendarList.t, string) GapiLens.t
      val nextSyncToken :
        (GapiCalendarV3Model.CalendarList.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.CalendarList.t
      val render :
        GapiCalendarV3Model.CalendarList.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.CalendarList.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.CalendarList.t
      val to_data_model :
        GapiCalendarV3Model.CalendarList.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.CalendarList.t
    end
  module AclRule :
    sig
      module Scope :
        sig
          type t = { _type : string; value : string; }
          val _type :
            (GapiCalendarV3Model.AclRule.Scope.t, string) GapiLens.t
          val value :
            (GapiCalendarV3Model.AclRule.Scope.t, string) GapiLens.t
          val empty : GapiCalendarV3Model.AclRule.Scope.t
          val render :
            GapiCalendarV3Model.AclRule.Scope.t ->
            GapiJson.json_data_model list
          val parse :
            GapiCalendarV3Model.AclRule.Scope.t ->
            GapiJson.json_data_model -> GapiCalendarV3Model.AclRule.Scope.t
        end
      type t = {
        etag : string;
        id : string;
        kind : string;
        role : string;
        scope : GapiCalendarV3Model.AclRule.Scope.t;
      }
      val etag : (GapiCalendarV3Model.AclRule.t, string) GapiLens.t
      val id : (GapiCalendarV3Model.AclRule.t, string) GapiLens.t
      val kind : (GapiCalendarV3Model.AclRule.t, string) GapiLens.t
      val role : (GapiCalendarV3Model.AclRule.t, string) GapiLens.t
      val scope :
        (GapiCalendarV3Model.AclRule.t, GapiCalendarV3Model.AclRule.Scope.t)
        GapiLens.t
      val empty : GapiCalendarV3Model.AclRule.t
      val render :
        GapiCalendarV3Model.AclRule.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.AclRule.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.AclRule.t
      val to_data_model :
        GapiCalendarV3Model.AclRule.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.AclRule.t
    end
  module Calendar :
    sig
      type t = {
        description : string;
        etag : string;
        id : string;
        kind : string;
        location : string;
        summary : string;
        timeZone : string;
      }
      val description : (GapiCalendarV3Model.Calendar.t, string) GapiLens.t
      val etag : (GapiCalendarV3Model.Calendar.t, string) GapiLens.t
      val id : (GapiCalendarV3Model.Calendar.t, string) GapiLens.t
      val kind : (GapiCalendarV3Model.Calendar.t, string) GapiLens.t
      val location : (GapiCalendarV3Model.Calendar.t, string) GapiLens.t
      val summary : (GapiCalendarV3Model.Calendar.t, string) GapiLens.t
      val timeZone : (GapiCalendarV3Model.Calendar.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.Calendar.t
      val render :
        GapiCalendarV3Model.Calendar.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.Calendar.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.Calendar.t
      val to_data_model :
        GapiCalendarV3Model.Calendar.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.Calendar.t
    end
  module TimePeriod :
    sig
      type t = { _end : GapiDate.t; start : GapiDate.t; }
      val _end : (GapiCalendarV3Model.TimePeriod.t, GapiDate.t) GapiLens.t
      val start : (GapiCalendarV3Model.TimePeriod.t, GapiDate.t) GapiLens.t
      val empty : GapiCalendarV3Model.TimePeriod.t
      val render :
        GapiCalendarV3Model.TimePeriod.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.TimePeriod.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.TimePeriod.t
      val to_data_model :
        GapiCalendarV3Model.TimePeriod.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.TimePeriod.t
    end
  module FreeBusyCalendar :
    sig
      type t = {
        busy : GapiCalendarV3Model.TimePeriod.t list;
        errors : GapiCalendarV3Model.Error.t list;
      }
      val busy :
        (GapiCalendarV3Model.FreeBusyCalendar.t,
         GapiCalendarV3Model.TimePeriod.t list)
        GapiLens.t
      val errors :
        (GapiCalendarV3Model.FreeBusyCalendar.t,
         GapiCalendarV3Model.Error.t list)
        GapiLens.t
      val empty : GapiCalendarV3Model.FreeBusyCalendar.t
      val render :
        GapiCalendarV3Model.FreeBusyCalendar.t ->
        GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.FreeBusyCalendar.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.FreeBusyCalendar.t
      val to_data_model :
        GapiCalendarV3Model.FreeBusyCalendar.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.FreeBusyCalendar.t
    end
  module FreeBusyResponse :
    sig
      type t = {
        calendars : (string * GapiCalendarV3Model.FreeBusyCalendar.t) list;
        groups : (string * GapiCalendarV3Model.FreeBusyGroup.t) list;
        kind : string;
        timeMax : GapiDate.t;
        timeMin : GapiDate.t;
      }
      val calendars :
        (GapiCalendarV3Model.FreeBusyResponse.t,
         (string * GapiCalendarV3Model.FreeBusyCalendar.t) list)
        GapiLens.t
      val groups :
        (GapiCalendarV3Model.FreeBusyResponse.t,
         (string * GapiCalendarV3Model.FreeBusyGroup.t) list)
        GapiLens.t
      val kind : (GapiCalendarV3Model.FreeBusyResponse.t, string) GapiLens.t
      val timeMax :
        (GapiCalendarV3Model.FreeBusyResponse.t, GapiDate.t) GapiLens.t
      val timeMin :
        (GapiCalendarV3Model.FreeBusyResponse.t, GapiDate.t) GapiLens.t
      val empty : GapiCalendarV3Model.FreeBusyResponse.t
      val render :
        GapiCalendarV3Model.FreeBusyResponse.t ->
        GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.FreeBusyResponse.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.FreeBusyResponse.t
      val to_data_model :
        GapiCalendarV3Model.FreeBusyResponse.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.FreeBusyResponse.t
    end
  module EventDateTime :
    sig
      type t = {
        date : GapiDate.t;
        dateTime : GapiDate.t;
        timeZone : string;
      }
      val date : (GapiCalendarV3Model.EventDateTime.t, GapiDate.t) GapiLens.t
      val dateTime :
        (GapiCalendarV3Model.EventDateTime.t, GapiDate.t) GapiLens.t
      val timeZone : (GapiCalendarV3Model.EventDateTime.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.EventDateTime.t
      val render :
        GapiCalendarV3Model.EventDateTime.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.EventDateTime.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.EventDateTime.t
      val to_data_model :
        GapiCalendarV3Model.EventDateTime.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.EventDateTime.t
    end
  module EventAttachment :
    sig
      type t = {
        fileId : string;
        fileUrl : string;
        iconLink : string;
        mimeType : string;
        title : string;
      }
      val fileId : (GapiCalendarV3Model.EventAttachment.t, string) GapiLens.t
      val fileUrl :
        (GapiCalendarV3Model.EventAttachment.t, string) GapiLens.t
      val iconLink :
        (GapiCalendarV3Model.EventAttachment.t, string) GapiLens.t
      val mimeType :
        (GapiCalendarV3Model.EventAttachment.t, string) GapiLens.t
      val title : (GapiCalendarV3Model.EventAttachment.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.EventAttachment.t
      val render :
        GapiCalendarV3Model.EventAttachment.t ->
        GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.EventAttachment.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.EventAttachment.t
      val to_data_model :
        GapiCalendarV3Model.EventAttachment.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.EventAttachment.t
    end
  module Event :
    sig
      module Source :
        sig
          type t = { title : string; url : string; }
          val title : (GapiCalendarV3Model.Event.Source.t, string) GapiLens.t
          val url : (GapiCalendarV3Model.Event.Source.t, string) GapiLens.t
          val empty : GapiCalendarV3Model.Event.Source.t
          val render :
            GapiCalendarV3Model.Event.Source.t ->
            GapiJson.json_data_model list
          val parse :
            GapiCalendarV3Model.Event.Source.t ->
            GapiJson.json_data_model -> GapiCalendarV3Model.Event.Source.t
        end
      module Reminders :
        sig
          type t = {
            overrides : GapiCalendarV3Model.EventReminder.t list;
            useDefault : bool;
          }
          val overrides :
            (GapiCalendarV3Model.Event.Reminders.t,
             GapiCalendarV3Model.EventReminder.t list)
            GapiLens.t
          val useDefault :
            (GapiCalendarV3Model.Event.Reminders.t, bool) GapiLens.t
          val empty : GapiCalendarV3Model.Event.Reminders.t
          val render :
            GapiCalendarV3Model.Event.Reminders.t ->
            GapiJson.json_data_model list
          val parse :
            GapiCalendarV3Model.Event.Reminders.t ->
            GapiJson.json_data_model -> GapiCalendarV3Model.Event.Reminders.t
        end
      module Organizer :
        sig
          type t = {
            displayName : string;
            email : string;
            id : string;
            self : bool;
          }
          val displayName :
            (GapiCalendarV3Model.Event.Organizer.t, string) GapiLens.t
          val email :
            (GapiCalendarV3Model.Event.Organizer.t, string) GapiLens.t
          val id : (GapiCalendarV3Model.Event.Organizer.t, string) GapiLens.t
          val self : (GapiCalendarV3Model.Event.Organizer.t, bool) GapiLens.t
          val empty : GapiCalendarV3Model.Event.Organizer.t
          val render :
            GapiCalendarV3Model.Event.Organizer.t ->
            GapiJson.json_data_model list
          val parse :
            GapiCalendarV3Model.Event.Organizer.t ->
            GapiJson.json_data_model -> GapiCalendarV3Model.Event.Organizer.t
        end
      module Gadget :
        sig
          type t = {
            display : string;
            height : int;
            iconLink : string;
            link : string;
            preferences : (string * string) list;
            title : string;
            _type : string;
            width : int;
          }
          val display :
            (GapiCalendarV3Model.Event.Gadget.t, string) GapiLens.t
          val height : (GapiCalendarV3Model.Event.Gadget.t, int) GapiLens.t
          val iconLink :
            (GapiCalendarV3Model.Event.Gadget.t, string) GapiLens.t
          val link : (GapiCalendarV3Model.Event.Gadget.t, string) GapiLens.t
          val preferences :
            (GapiCalendarV3Model.Event.Gadget.t, (string * string) list)
            GapiLens.t
          val title : (GapiCalendarV3Model.Event.Gadget.t, string) GapiLens.t
          val _type : (GapiCalendarV3Model.Event.Gadget.t, string) GapiLens.t
          val width : (GapiCalendarV3Model.Event.Gadget.t, int) GapiLens.t
          val empty : GapiCalendarV3Model.Event.Gadget.t
          val render :
            GapiCalendarV3Model.Event.Gadget.t ->
            GapiJson.json_data_model list
          val parse :
            GapiCalendarV3Model.Event.Gadget.t ->
            GapiJson.json_data_model -> GapiCalendarV3Model.Event.Gadget.t
        end
      module ExtendedProperties :
        sig
          type t = {
            _private : (string * string) list;
            shared : (string * string) list;
          }
          val _private :
            (GapiCalendarV3Model.Event.ExtendedProperties.t,
             (string * string) list)
            GapiLens.t
          val shared :
            (GapiCalendarV3Model.Event.ExtendedProperties.t,
             (string * string) list)
            GapiLens.t
          val empty : GapiCalendarV3Model.Event.ExtendedProperties.t
          val render :
            GapiCalendarV3Model.Event.ExtendedProperties.t ->
            GapiJson.json_data_model list
          val parse :
            GapiCalendarV3Model.Event.ExtendedProperties.t ->
            GapiJson.json_data_model ->
            GapiCalendarV3Model.Event.ExtendedProperties.t
        end
      module Creator :
        sig
          type t = {
            displayName : string;
            email : string;
            id : string;
            self : bool;
          }
          val displayName :
            (GapiCalendarV3Model.Event.Creator.t, string) GapiLens.t
          val email :
            (GapiCalendarV3Model.Event.Creator.t, string) GapiLens.t
          val id : (GapiCalendarV3Model.Event.Creator.t, string) GapiLens.t
          val self : (GapiCalendarV3Model.Event.Creator.t, bool) GapiLens.t
          val empty : GapiCalendarV3Model.Event.Creator.t
          val render :
            GapiCalendarV3Model.Event.Creator.t ->
            GapiJson.json_data_model list
          val parse :
            GapiCalendarV3Model.Event.Creator.t ->
            GapiJson.json_data_model -> GapiCalendarV3Model.Event.Creator.t
        end
      type t = {
        anyoneCanAddSelf : bool;
        attachments : GapiCalendarV3Model.EventAttachment.t list;
        attendees : GapiCalendarV3Model.EventAttendee.t list;
        attendeesOmitted : bool;
        colorId : string;
        created : GapiDate.t;
        creator : GapiCalendarV3Model.Event.Creator.t;
        description : string;
        _end : GapiCalendarV3Model.EventDateTime.t;
        endTimeUnspecified : bool;
        etag : string;
        extendedProperties : GapiCalendarV3Model.Event.ExtendedProperties.t;
        gadget : GapiCalendarV3Model.Event.Gadget.t;
        guestsCanInviteOthers : bool;
        guestsCanModify : bool;
        guestsCanSeeOtherGuests : bool;
        hangoutLink : string;
        htmlLink : string;
        iCalUID : string;
        id : string;
        kind : string;
        location : string;
        locked : bool;
        organizer : GapiCalendarV3Model.Event.Organizer.t;
        originalStartTime : GapiCalendarV3Model.EventDateTime.t;
        privateCopy : bool;
        recurrence : string list;
        recurringEventId : string;
        reminders : GapiCalendarV3Model.Event.Reminders.t;
        sequence : int;
        source : GapiCalendarV3Model.Event.Source.t;
        start : GapiCalendarV3Model.EventDateTime.t;
        status : string;
        summary : string;
        transparency : string;
        updated : GapiDate.t;
        visibility : string;
      }
      val anyoneCanAddSelf : (GapiCalendarV3Model.Event.t, bool) GapiLens.t
      val attachments :
        (GapiCalendarV3Model.Event.t,
         GapiCalendarV3Model.EventAttachment.t list)
        GapiLens.t
      val attendees :
        (GapiCalendarV3Model.Event.t,
         GapiCalendarV3Model.EventAttendee.t list)
        GapiLens.t
      val attendeesOmitted : (GapiCalendarV3Model.Event.t, bool) GapiLens.t
      val colorId : (GapiCalendarV3Model.Event.t, string) GapiLens.t
      val created : (GapiCalendarV3Model.Event.t, GapiDate.t) GapiLens.t
      val creator :
        (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.Event.Creator.t)
        GapiLens.t
      val description : (GapiCalendarV3Model.Event.t, string) GapiLens.t
      val _end :
        (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.EventDateTime.t)
        GapiLens.t
      val endTimeUnspecified : (GapiCalendarV3Model.Event.t, bool) GapiLens.t
      val etag : (GapiCalendarV3Model.Event.t, string) GapiLens.t
      val extendedProperties :
        (GapiCalendarV3Model.Event.t,
         GapiCalendarV3Model.Event.ExtendedProperties.t)
        GapiLens.t
      val gadget :
        (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.Event.Gadget.t)
        GapiLens.t
      val guestsCanInviteOthers :
        (GapiCalendarV3Model.Event.t, bool) GapiLens.t
      val guestsCanModify : (GapiCalendarV3Model.Event.t, bool) GapiLens.t
      val guestsCanSeeOtherGuests :
        (GapiCalendarV3Model.Event.t, bool) GapiLens.t
      val hangoutLink : (GapiCalendarV3Model.Event.t, string) GapiLens.t
      val htmlLink : (GapiCalendarV3Model.Event.t, string) GapiLens.t
      val iCalUID : (GapiCalendarV3Model.Event.t, string) GapiLens.t
      val id : (GapiCalendarV3Model.Event.t, string) GapiLens.t
      val kind : (GapiCalendarV3Model.Event.t, string) GapiLens.t
      val location : (GapiCalendarV3Model.Event.t, string) GapiLens.t
      val locked : (GapiCalendarV3Model.Event.t, bool) GapiLens.t
      val organizer :
        (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.Event.Organizer.t)
        GapiLens.t
      val originalStartTime :
        (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.EventDateTime.t)
        GapiLens.t
      val privateCopy : (GapiCalendarV3Model.Event.t, bool) GapiLens.t
      val recurrence : (GapiCalendarV3Model.Event.t, string list) GapiLens.t
      val recurringEventId : (GapiCalendarV3Model.Event.t, string) GapiLens.t
      val reminders :
        (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.Event.Reminders.t)
        GapiLens.t
      val sequence : (GapiCalendarV3Model.Event.t, int) GapiLens.t
      val source :
        (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.Event.Source.t)
        GapiLens.t
      val start :
        (GapiCalendarV3Model.Event.t, GapiCalendarV3Model.EventDateTime.t)
        GapiLens.t
      val status : (GapiCalendarV3Model.Event.t, string) GapiLens.t
      val summary : (GapiCalendarV3Model.Event.t, string) GapiLens.t
      val transparency : (GapiCalendarV3Model.Event.t, string) GapiLens.t
      val updated : (GapiCalendarV3Model.Event.t, GapiDate.t) GapiLens.t
      val visibility : (GapiCalendarV3Model.Event.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.Event.t
      val render :
        GapiCalendarV3Model.Event.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.Event.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.Event.t
      val to_data_model :
        GapiCalendarV3Model.Event.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.Event.t
    end
  module Acl :
    sig
      type t = {
        etag : string;
        items : GapiCalendarV3Model.AclRule.t list;
        kind : string;
        nextPageToken : string;
        nextSyncToken : string;
      }
      val etag : (GapiCalendarV3Model.Acl.t, string) GapiLens.t
      val items :
        (GapiCalendarV3Model.Acl.t, GapiCalendarV3Model.AclRule.t list)
        GapiLens.t
      val kind : (GapiCalendarV3Model.Acl.t, string) GapiLens.t
      val nextPageToken : (GapiCalendarV3Model.Acl.t, string) GapiLens.t
      val nextSyncToken : (GapiCalendarV3Model.Acl.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.Acl.t
      val render : GapiCalendarV3Model.Acl.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.Acl.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.Acl.t
      val to_data_model :
        GapiCalendarV3Model.Acl.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.Acl.t
    end
  module Events :
    sig
      type t = {
        accessRole : string;
        defaultReminders : GapiCalendarV3Model.EventReminder.t list;
        description : string;
        etag : string;
        items : GapiCalendarV3Model.Event.t list;
        kind : string;
        nextPageToken : string;
        nextSyncToken : string;
        summary : string;
        timeZone : string;
        updated : GapiDate.t;
      }
      val accessRole : (GapiCalendarV3Model.Events.t, string) GapiLens.t
      val defaultReminders :
        (GapiCalendarV3Model.Events.t,
         GapiCalendarV3Model.EventReminder.t list)
        GapiLens.t
      val description : (GapiCalendarV3Model.Events.t, string) GapiLens.t
      val etag : (GapiCalendarV3Model.Events.t, string) GapiLens.t
      val items :
        (GapiCalendarV3Model.Events.t, GapiCalendarV3Model.Event.t list)
        GapiLens.t
      val kind : (GapiCalendarV3Model.Events.t, string) GapiLens.t
      val nextPageToken : (GapiCalendarV3Model.Events.t, string) GapiLens.t
      val nextSyncToken : (GapiCalendarV3Model.Events.t, string) GapiLens.t
      val summary : (GapiCalendarV3Model.Events.t, string) GapiLens.t
      val timeZone : (GapiCalendarV3Model.Events.t, string) GapiLens.t
      val updated : (GapiCalendarV3Model.Events.t, GapiDate.t) GapiLens.t
      val empty : GapiCalendarV3Model.Events.t
      val render :
        GapiCalendarV3Model.Events.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.Events.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.Events.t
      val to_data_model :
        GapiCalendarV3Model.Events.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.Events.t
    end
  module Channel :
    sig
      type t = {
        address : string;
        expiration : int64;
        id : string;
        kind : string;
        params : (string * string) list;
        payload : bool;
        resourceId : string;
        resourceUri : string;
        token : string;
        _type : string;
      }
      val address : (GapiCalendarV3Model.Channel.t, string) GapiLens.t
      val expiration : (GapiCalendarV3Model.Channel.t, int64) GapiLens.t
      val id : (GapiCalendarV3Model.Channel.t, string) GapiLens.t
      val kind : (GapiCalendarV3Model.Channel.t, string) GapiLens.t
      val params :
        (GapiCalendarV3Model.Channel.t, (string * string) list) GapiLens.t
      val payload : (GapiCalendarV3Model.Channel.t, bool) GapiLens.t
      val resourceId : (GapiCalendarV3Model.Channel.t, string) GapiLens.t
      val resourceUri : (GapiCalendarV3Model.Channel.t, string) GapiLens.t
      val token : (GapiCalendarV3Model.Channel.t, string) GapiLens.t
      val _type : (GapiCalendarV3Model.Channel.t, string) GapiLens.t
      val empty : GapiCalendarV3Model.Channel.t
      val render :
        GapiCalendarV3Model.Channel.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.Channel.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.Channel.t
      val to_data_model :
        GapiCalendarV3Model.Channel.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.Channel.t
    end
  module Colors :
    sig
      type t = {
        calendar : (string * GapiCalendarV3Model.ColorDefinition.t) list;
        event : (string * GapiCalendarV3Model.ColorDefinition.t) list;
        kind : string;
        updated : GapiDate.t;
      }
      val calendar :
        (GapiCalendarV3Model.Colors.t,
         (string * GapiCalendarV3Model.ColorDefinition.t) list)
        GapiLens.t
      val event :
        (GapiCalendarV3Model.Colors.t,
         (string * GapiCalendarV3Model.ColorDefinition.t) list)
        GapiLens.t
      val kind : (GapiCalendarV3Model.Colors.t, string) GapiLens.t
      val updated : (GapiCalendarV3Model.Colors.t, GapiDate.t) GapiLens.t
      val empty : GapiCalendarV3Model.Colors.t
      val render :
        GapiCalendarV3Model.Colors.t -> GapiJson.json_data_model list
      val parse :
        GapiCalendarV3Model.Colors.t ->
        GapiJson.json_data_model -> GapiCalendarV3Model.Colors.t
      val to_data_model :
        GapiCalendarV3Model.Colors.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiCalendarV3Model.Colors.t
    end
end