sig
  module VideoMediaMetadata :
    sig
      type t = { durationMillis : int64; height : int; width : int; }
      val durationMillis :
        (GapiDriveV2Model.File.VideoMediaMetadata.t, int64) GapiLens.t
      val height :
        (GapiDriveV2Model.File.VideoMediaMetadata.t, int) GapiLens.t
      val width :
        (GapiDriveV2Model.File.VideoMediaMetadata.t, int) GapiLens.t
      val empty : GapiDriveV2Model.File.VideoMediaMetadata.t
      val render :
        GapiDriveV2Model.File.VideoMediaMetadata.t ->
        GapiJson.json_data_model list
      val parse :
        GapiDriveV2Model.File.VideoMediaMetadata.t ->
        GapiJson.json_data_model ->
        GapiDriveV2Model.File.VideoMediaMetadata.t
    end
  module Thumbnail :
    sig
      type t = { image : string; mimeType : string; }
      val image : (GapiDriveV2Model.File.Thumbnail.t, string) GapiLens.t
      val mimeType : (GapiDriveV2Model.File.Thumbnail.t, string) GapiLens.t
      val empty : GapiDriveV2Model.File.Thumbnail.t
      val render :
        GapiDriveV2Model.File.Thumbnail.t -> GapiJson.json_data_model list
      val parse :
        GapiDriveV2Model.File.Thumbnail.t ->
        GapiJson.json_data_model -> GapiDriveV2Model.File.Thumbnail.t
    end
  module Labels :
    sig
      type t = {
        hidden : bool;
        modified : bool;
        restricted : bool;
        starred : bool;
        trashed : bool;
        viewed : bool;
      }
      val hidden : (GapiDriveV2Model.File.Labels.t, bool) GapiLens.t
      val modified : (GapiDriveV2Model.File.Labels.t, bool) GapiLens.t
      val restricted : (GapiDriveV2Model.File.Labels.t, bool) GapiLens.t
      val starred : (GapiDriveV2Model.File.Labels.t, bool) GapiLens.t
      val trashed : (GapiDriveV2Model.File.Labels.t, bool) GapiLens.t
      val viewed : (GapiDriveV2Model.File.Labels.t, bool) GapiLens.t
      val empty : GapiDriveV2Model.File.Labels.t
      val render :
        GapiDriveV2Model.File.Labels.t -> GapiJson.json_data_model list
      val parse :
        GapiDriveV2Model.File.Labels.t ->
        GapiJson.json_data_model -> GapiDriveV2Model.File.Labels.t
    end
  module IndexableText :
    sig
      type t = { text : string; }
      val text : (GapiDriveV2Model.File.IndexableText.t, string) GapiLens.t
      val empty : GapiDriveV2Model.File.IndexableText.t
      val render :
        GapiDriveV2Model.File.IndexableText.t ->
        GapiJson.json_data_model list
      val parse :
        GapiDriveV2Model.File.IndexableText.t ->
        GapiJson.json_data_model -> GapiDriveV2Model.File.IndexableText.t
    end
  module ImageMediaMetadata :
    sig
      module Location :
        sig
          type t = { altitude : float; latitude : float; longitude : float; }
          val altitude :
            (GapiDriveV2Model.File.ImageMediaMetadata.Location.t, float)
            GapiLens.t
          val latitude :
            (GapiDriveV2Model.File.ImageMediaMetadata.Location.t, float)
            GapiLens.t
          val longitude :
            (GapiDriveV2Model.File.ImageMediaMetadata.Location.t, float)
            GapiLens.t
          val empty : GapiDriveV2Model.File.ImageMediaMetadata.Location.t
          val render :
            GapiDriveV2Model.File.ImageMediaMetadata.Location.t ->
            GapiJson.json_data_model list
          val parse :
            GapiDriveV2Model.File.ImageMediaMetadata.Location.t ->
            GapiJson.json_data_model ->
            GapiDriveV2Model.File.ImageMediaMetadata.Location.t
        end
      type t = {
        aperture : float;
        cameraMake : string;
        cameraModel : string;
        colorSpace : string;
        date : string;
        exposureBias : float;
        exposureMode : string;
        exposureTime : float;
        flashUsed : bool;
        focalLength : float;
        height : int;
        isoSpeed : int;
        lens : string;
        location : GapiDriveV2Model.File.ImageMediaMetadata.Location.t;
        maxApertureValue : float;
        meteringMode : string;
        rotation : int;
        sensor : string;
        subjectDistance : int;
        whiteBalance : string;
        width : int;
      }
      val aperture :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, float) GapiLens.t
      val cameraMake :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val cameraModel :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val colorSpace :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val date :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val exposureBias :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, float) GapiLens.t
      val exposureMode :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val exposureTime :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, float) GapiLens.t
      val flashUsed :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, bool) GapiLens.t
      val focalLength :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, float) GapiLens.t
      val height :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, int) GapiLens.t
      val isoSpeed :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, int) GapiLens.t
      val lens :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val location :
        (GapiDriveV2Model.File.ImageMediaMetadata.t,
         GapiDriveV2Model.File.ImageMediaMetadata.Location.t)
        GapiLens.t
      val maxApertureValue :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, float) GapiLens.t
      val meteringMode :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val rotation :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, int) GapiLens.t
      val sensor :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val subjectDistance :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, int) GapiLens.t
      val whiteBalance :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val width :
        (GapiDriveV2Model.File.ImageMediaMetadata.t, int) GapiLens.t
      val empty : GapiDriveV2Model.File.ImageMediaMetadata.t
      val render :
        GapiDriveV2Model.File.ImageMediaMetadata.t ->
        GapiJson.json_data_model list
      val parse :
        GapiDriveV2Model.File.ImageMediaMetadata.t ->
        GapiJson.json_data_model ->
        GapiDriveV2Model.File.ImageMediaMetadata.t
    end
  type t = {
    alternateLink : string;
    appDataContents : bool;
    canComment : bool;
    canReadRevisions : bool;
    copyable : bool;
    createdDate : GapiDate.t;
    defaultOpenWithLink : string;
    description : string;
    downloadUrl : string;
    editable : bool;
    embedLink : string;
    etag : string;
    explicitlyTrashed : bool;
    exportLinks : (string * string) list;
    fileExtension : string;
    fileSize : int64;
    folderColorRgb : string;
    fullFileExtension : string;
    headRevisionId : string;
    iconLink : string;
    id : string;
    imageMediaMetadata : GapiDriveV2Model.File.ImageMediaMetadata.t;
    indexableText : GapiDriveV2Model.File.IndexableText.t;
    isAppAuthorized : bool;
    kind : string;
    labels : GapiDriveV2Model.File.Labels.t;
    lastModifyingUser : GapiDriveV2Model.User.t;
    lastModifyingUserName : string;
    lastViewedByMeDate : GapiDate.t;
    markedViewedByMeDate : GapiDate.t;
    md5Checksum : string;
    mimeType : string;
    modifiedByMeDate : GapiDate.t;
    modifiedDate : GapiDate.t;
    openWithLinks : (string * string) list;
    originalFilename : string;
    ownedByMe : bool;
    ownerNames : string list;
    owners : GapiDriveV2Model.User.t list;
    parents : GapiDriveV2Model.ParentReference.t list;
    permissions : GapiDriveV2Model.Permission.t list;
    properties : GapiDriveV2Model.Property.t list;
    quotaBytesUsed : int64;
    selfLink : string;
    shareable : bool;
    shared : bool;
    sharedWithMeDate : GapiDate.t;
    sharingUser : GapiDriveV2Model.User.t;
    spaces : string list;
    thumbnail : GapiDriveV2Model.File.Thumbnail.t;
    thumbnailLink : string;
    title : string;
    userPermission : GapiDriveV2Model.Permission.t;
    version : int64;
    videoMediaMetadata : GapiDriveV2Model.File.VideoMediaMetadata.t;
    webContentLink : string;
    webViewLink : string;
    writersCanShare : bool;
  }
  val alternateLink : (GapiDriveV2Model.File.t, string) GapiLens.t
  val appDataContents : (GapiDriveV2Model.File.t, bool) GapiLens.t
  val canComment : (GapiDriveV2Model.File.t, bool) GapiLens.t
  val canReadRevisions : (GapiDriveV2Model.File.t, bool) GapiLens.t
  val copyable : (GapiDriveV2Model.File.t, bool) GapiLens.t
  val createdDate : (GapiDriveV2Model.File.t, GapiDate.t) GapiLens.t
  val defaultOpenWithLink : (GapiDriveV2Model.File.t, string) GapiLens.t
  val description : (GapiDriveV2Model.File.t, string) GapiLens.t
  val downloadUrl : (GapiDriveV2Model.File.t, string) GapiLens.t
  val editable : (GapiDriveV2Model.File.t, bool) GapiLens.t
  val embedLink : (GapiDriveV2Model.File.t, string) GapiLens.t
  val etag : (GapiDriveV2Model.File.t, string) GapiLens.t
  val explicitlyTrashed : (GapiDriveV2Model.File.t, bool) GapiLens.t
  val exportLinks :
    (GapiDriveV2Model.File.t, (string * string) list) GapiLens.t
  val fileExtension : (GapiDriveV2Model.File.t, string) GapiLens.t
  val fileSize : (GapiDriveV2Model.File.t, int64) GapiLens.t
  val folderColorRgb : (GapiDriveV2Model.File.t, string) GapiLens.t
  val fullFileExtension : (GapiDriveV2Model.File.t, string) GapiLens.t
  val headRevisionId : (GapiDriveV2Model.File.t, string) GapiLens.t
  val iconLink : (GapiDriveV2Model.File.t, string) GapiLens.t
  val id : (GapiDriveV2Model.File.t, string) GapiLens.t
  val imageMediaMetadata :
    (GapiDriveV2Model.File.t, GapiDriveV2Model.File.ImageMediaMetadata.t)
    GapiLens.t
  val indexableText :
    (GapiDriveV2Model.File.t, GapiDriveV2Model.File.IndexableText.t)
    GapiLens.t
  val isAppAuthorized : (GapiDriveV2Model.File.t, bool) GapiLens.t
  val kind : (GapiDriveV2Model.File.t, string) GapiLens.t
  val labels :
    (GapiDriveV2Model.File.t, GapiDriveV2Model.File.Labels.t) GapiLens.t
  val lastModifyingUser :
    (GapiDriveV2Model.File.t, GapiDriveV2Model.User.t) GapiLens.t
  val lastModifyingUserName : (GapiDriveV2Model.File.t, string) GapiLens.t
  val lastViewedByMeDate : (GapiDriveV2Model.File.t, GapiDate.t) GapiLens.t
  val markedViewedByMeDate : (GapiDriveV2Model.File.t, GapiDate.t) GapiLens.t
  val md5Checksum : (GapiDriveV2Model.File.t, string) GapiLens.t
  val mimeType : (GapiDriveV2Model.File.t, string) GapiLens.t
  val modifiedByMeDate : (GapiDriveV2Model.File.t, GapiDate.t) GapiLens.t
  val modifiedDate : (GapiDriveV2Model.File.t, GapiDate.t) GapiLens.t
  val openWithLinks :
    (GapiDriveV2Model.File.t, (string * string) list) GapiLens.t
  val originalFilename : (GapiDriveV2Model.File.t, string) GapiLens.t
  val ownedByMe : (GapiDriveV2Model.File.t, bool) GapiLens.t
  val ownerNames : (GapiDriveV2Model.File.t, string list) GapiLens.t
  val owners :
    (GapiDriveV2Model.File.t, GapiDriveV2Model.User.t list) GapiLens.t
  val parents :
    (GapiDriveV2Model.File.t, GapiDriveV2Model.ParentReference.t list)
    GapiLens.t
  val permissions :
    (GapiDriveV2Model.File.t, GapiDriveV2Model.Permission.t list) GapiLens.t
  val properties :
    (GapiDriveV2Model.File.t, GapiDriveV2Model.Property.t list) GapiLens.t
  val quotaBytesUsed : (GapiDriveV2Model.File.t, int64) GapiLens.t
  val selfLink : (GapiDriveV2Model.File.t, string) GapiLens.t
  val shareable : (GapiDriveV2Model.File.t, bool) GapiLens.t
  val shared : (GapiDriveV2Model.File.t, bool) GapiLens.t
  val sharedWithMeDate : (GapiDriveV2Model.File.t, GapiDate.t) GapiLens.t
  val sharingUser :
    (GapiDriveV2Model.File.t, GapiDriveV2Model.User.t) GapiLens.t
  val spaces : (GapiDriveV2Model.File.t, string list) GapiLens.t
  val thumbnail :
    (GapiDriveV2Model.File.t, GapiDriveV2Model.File.Thumbnail.t) GapiLens.t
  val thumbnailLink : (GapiDriveV2Model.File.t, string) GapiLens.t
  val title : (GapiDriveV2Model.File.t, string) GapiLens.t
  val userPermission :
    (GapiDriveV2Model.File.t, GapiDriveV2Model.Permission.t) GapiLens.t
  val version : (GapiDriveV2Model.File.t, int64) GapiLens.t
  val videoMediaMetadata :
    (GapiDriveV2Model.File.t, GapiDriveV2Model.File.VideoMediaMetadata.t)
    GapiLens.t
  val webContentLink : (GapiDriveV2Model.File.t, string) GapiLens.t
  val webViewLink : (GapiDriveV2Model.File.t, string) GapiLens.t
  val writersCanShare : (GapiDriveV2Model.File.t, bool) GapiLens.t
  val empty : GapiDriveV2Model.File.t
  val render : GapiDriveV2Model.File.t -> GapiJson.json_data_model list
  val parse :
    GapiDriveV2Model.File.t ->
    GapiJson.json_data_model -> GapiDriveV2Model.File.t
  val to_data_model : GapiDriveV2Model.File.t -> GapiJson.json_data_model
  val of_data_model : GapiJson.json_data_model -> GapiDriveV2Model.File.t
end