sig
  module VideoMediaMetadata :
    sig
      type t = { durationMillis : int64; height : int; width : int; }
      val durationMillis :
        (GapiDriveV3Model.File.VideoMediaMetadata.t, int64) GapiLens.t
      val height :
        (GapiDriveV3Model.File.VideoMediaMetadata.t, int) GapiLens.t
      val width :
        (GapiDriveV3Model.File.VideoMediaMetadata.t, int) GapiLens.t
      val empty : GapiDriveV3Model.File.VideoMediaMetadata.t
      val render :
        GapiDriveV3Model.File.VideoMediaMetadata.t ->
        GapiJson.json_data_model list
      val parse :
        GapiDriveV3Model.File.VideoMediaMetadata.t ->
        GapiJson.json_data_model ->
        GapiDriveV3Model.File.VideoMediaMetadata.t
    end
  module ImageMediaMetadata :
    sig
      module Location :
        sig
          type t = { altitude : float; latitude : float; longitude : float; }
          val altitude :
            (GapiDriveV3Model.File.ImageMediaMetadata.Location.t, float)
            GapiLens.t
          val latitude :
            (GapiDriveV3Model.File.ImageMediaMetadata.Location.t, float)
            GapiLens.t
          val longitude :
            (GapiDriveV3Model.File.ImageMediaMetadata.Location.t, float)
            GapiLens.t
          val empty : GapiDriveV3Model.File.ImageMediaMetadata.Location.t
          val render :
            GapiDriveV3Model.File.ImageMediaMetadata.Location.t ->
            GapiJson.json_data_model list
          val parse :
            GapiDriveV3Model.File.ImageMediaMetadata.Location.t ->
            GapiJson.json_data_model ->
            GapiDriveV3Model.File.ImageMediaMetadata.Location.t
        end
      type t = {
        aperture : float;
        cameraMake : string;
        cameraModel : string;
        colorSpace : string;
        exposureBias : float;
        exposureMode : string;
        exposureTime : float;
        flashUsed : bool;
        focalLength : float;
        height : int;
        isoSpeed : int;
        lens : string;
        location : GapiDriveV3Model.File.ImageMediaMetadata.Location.t;
        maxApertureValue : float;
        meteringMode : string;
        rotation : int;
        sensor : string;
        subjectDistance : int;
        time : string;
        whiteBalance : string;
        width : int;
      }
      val aperture :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, float) GapiLens.t
      val cameraMake :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val cameraModel :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val colorSpace :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val exposureBias :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, float) GapiLens.t
      val exposureMode :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val exposureTime :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, float) GapiLens.t
      val flashUsed :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, bool) GapiLens.t
      val focalLength :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, float) GapiLens.t
      val height :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, int) GapiLens.t
      val isoSpeed :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, int) GapiLens.t
      val lens :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val location :
        (GapiDriveV3Model.File.ImageMediaMetadata.t,
         GapiDriveV3Model.File.ImageMediaMetadata.Location.t)
        GapiLens.t
      val maxApertureValue :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, float) GapiLens.t
      val meteringMode :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val rotation :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, int) GapiLens.t
      val sensor :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val subjectDistance :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, int) GapiLens.t
      val time :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val whiteBalance :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, string) GapiLens.t
      val width :
        (GapiDriveV3Model.File.ImageMediaMetadata.t, int) GapiLens.t
      val empty : GapiDriveV3Model.File.ImageMediaMetadata.t
      val render :
        GapiDriveV3Model.File.ImageMediaMetadata.t ->
        GapiJson.json_data_model list
      val parse :
        GapiDriveV3Model.File.ImageMediaMetadata.t ->
        GapiJson.json_data_model ->
        GapiDriveV3Model.File.ImageMediaMetadata.t
    end
  module ContentHints :
    sig
      module Thumbnail :
        sig
          type t = { image : string; mimeType : string; }
          val image :
            (GapiDriveV3Model.File.ContentHints.Thumbnail.t, string)
            GapiLens.t
          val mimeType :
            (GapiDriveV3Model.File.ContentHints.Thumbnail.t, string)
            GapiLens.t
          val empty : GapiDriveV3Model.File.ContentHints.Thumbnail.t
          val render :
            GapiDriveV3Model.File.ContentHints.Thumbnail.t ->
            GapiJson.json_data_model list
          val parse :
            GapiDriveV3Model.File.ContentHints.Thumbnail.t ->
            GapiJson.json_data_model ->
            GapiDriveV3Model.File.ContentHints.Thumbnail.t
        end
      type t = {
        indexableText : string;
        thumbnail : GapiDriveV3Model.File.ContentHints.Thumbnail.t;
      }
      val indexableText :
        (GapiDriveV3Model.File.ContentHints.t, string) GapiLens.t
      val thumbnail :
        (GapiDriveV3Model.File.ContentHints.t,
         GapiDriveV3Model.File.ContentHints.Thumbnail.t)
        GapiLens.t
      val empty : GapiDriveV3Model.File.ContentHints.t
      val render :
        GapiDriveV3Model.File.ContentHints.t -> GapiJson.json_data_model list
      val parse :
        GapiDriveV3Model.File.ContentHints.t ->
        GapiJson.json_data_model -> GapiDriveV3Model.File.ContentHints.t
    end
  module Capabilities :
    sig
      type t = {
        canComment : bool;
        canCopy : bool;
        canEdit : bool;
        canReadRevisions : bool;
        canShare : bool;
      }
      val canComment :
        (GapiDriveV3Model.File.Capabilities.t, bool) GapiLens.t
      val canCopy : (GapiDriveV3Model.File.Capabilities.t, bool) GapiLens.t
      val canEdit : (GapiDriveV3Model.File.Capabilities.t, bool) GapiLens.t
      val canReadRevisions :
        (GapiDriveV3Model.File.Capabilities.t, bool) GapiLens.t
      val canShare : (GapiDriveV3Model.File.Capabilities.t, bool) GapiLens.t
      val empty : GapiDriveV3Model.File.Capabilities.t
      val render :
        GapiDriveV3Model.File.Capabilities.t -> GapiJson.json_data_model list
      val parse :
        GapiDriveV3Model.File.Capabilities.t ->
        GapiJson.json_data_model -> GapiDriveV3Model.File.Capabilities.t
    end
  type t = {
    appProperties : (string * string) list;
    capabilities : GapiDriveV3Model.File.Capabilities.t;
    contentHints : GapiDriveV3Model.File.ContentHints.t;
    createdTime : GapiDate.t;
    description : string;
    explicitlyTrashed : bool;
    fileExtension : string;
    folderColorRgb : string;
    fullFileExtension : string;
    headRevisionId : string;
    iconLink : string;
    id : string;
    imageMediaMetadata : GapiDriveV3Model.File.ImageMediaMetadata.t;
    isAppAuthorized : bool;
    kind : string;
    lastModifyingUser : GapiDriveV3Model.User.t;
    md5Checksum : string;
    mimeType : string;
    modifiedByMe : bool;
    modifiedByMeTime : GapiDate.t;
    modifiedTime : GapiDate.t;
    name : string;
    originalFilename : string;
    ownedByMe : bool;
    owners : GapiDriveV3Model.User.t list;
    parents : string list;
    permissions : GapiDriveV3Model.Permission.t list;
    properties : (string * string) list;
    quotaBytesUsed : int64;
    shared : bool;
    sharedWithMeTime : GapiDate.t;
    sharingUser : GapiDriveV3Model.User.t;
    size : int64;
    spaces : string list;
    starred : bool;
    thumbnailLink : string;
    trashed : bool;
    version : int64;
    videoMediaMetadata : GapiDriveV3Model.File.VideoMediaMetadata.t;
    viewedByMe : bool;
    viewedByMeTime : GapiDate.t;
    viewersCanCopyContent : bool;
    webContentLink : string;
    webViewLink : string;
    writersCanShare : bool;
  }
  val appProperties :
    (GapiDriveV3Model.File.t, (string * string) list) GapiLens.t
  val capabilities :
    (GapiDriveV3Model.File.t, GapiDriveV3Model.File.Capabilities.t)
    GapiLens.t
  val contentHints :
    (GapiDriveV3Model.File.t, GapiDriveV3Model.File.ContentHints.t)
    GapiLens.t
  val createdTime : (GapiDriveV3Model.File.t, GapiDate.t) GapiLens.t
  val description : (GapiDriveV3Model.File.t, string) GapiLens.t
  val explicitlyTrashed : (GapiDriveV3Model.File.t, bool) GapiLens.t
  val fileExtension : (GapiDriveV3Model.File.t, string) GapiLens.t
  val folderColorRgb : (GapiDriveV3Model.File.t, string) GapiLens.t
  val fullFileExtension : (GapiDriveV3Model.File.t, string) GapiLens.t
  val headRevisionId : (GapiDriveV3Model.File.t, string) GapiLens.t
  val iconLink : (GapiDriveV3Model.File.t, string) GapiLens.t
  val id : (GapiDriveV3Model.File.t, string) GapiLens.t
  val imageMediaMetadata :
    (GapiDriveV3Model.File.t, GapiDriveV3Model.File.ImageMediaMetadata.t)
    GapiLens.t
  val isAppAuthorized : (GapiDriveV3Model.File.t, bool) GapiLens.t
  val kind : (GapiDriveV3Model.File.t, string) GapiLens.t
  val lastModifyingUser :
    (GapiDriveV3Model.File.t, GapiDriveV3Model.User.t) GapiLens.t
  val md5Checksum : (GapiDriveV3Model.File.t, string) GapiLens.t
  val mimeType : (GapiDriveV3Model.File.t, string) GapiLens.t
  val modifiedByMe : (GapiDriveV3Model.File.t, bool) GapiLens.t
  val modifiedByMeTime : (GapiDriveV3Model.File.t, GapiDate.t) GapiLens.t
  val modifiedTime : (GapiDriveV3Model.File.t, GapiDate.t) GapiLens.t
  val name : (GapiDriveV3Model.File.t, string) GapiLens.t
  val originalFilename : (GapiDriveV3Model.File.t, string) GapiLens.t
  val ownedByMe : (GapiDriveV3Model.File.t, bool) GapiLens.t
  val owners :
    (GapiDriveV3Model.File.t, GapiDriveV3Model.User.t list) GapiLens.t
  val parents : (GapiDriveV3Model.File.t, string list) GapiLens.t
  val permissions :
    (GapiDriveV3Model.File.t, GapiDriveV3Model.Permission.t list) GapiLens.t
  val properties :
    (GapiDriveV3Model.File.t, (string * string) list) GapiLens.t
  val quotaBytesUsed : (GapiDriveV3Model.File.t, int64) GapiLens.t
  val shared : (GapiDriveV3Model.File.t, bool) GapiLens.t
  val sharedWithMeTime : (GapiDriveV3Model.File.t, GapiDate.t) GapiLens.t
  val sharingUser :
    (GapiDriveV3Model.File.t, GapiDriveV3Model.User.t) GapiLens.t
  val size : (GapiDriveV3Model.File.t, int64) GapiLens.t
  val spaces : (GapiDriveV3Model.File.t, string list) GapiLens.t
  val starred : (GapiDriveV3Model.File.t, bool) GapiLens.t
  val thumbnailLink : (GapiDriveV3Model.File.t, string) GapiLens.t
  val trashed : (GapiDriveV3Model.File.t, bool) GapiLens.t
  val version : (GapiDriveV3Model.File.t, int64) GapiLens.t
  val videoMediaMetadata :
    (GapiDriveV3Model.File.t, GapiDriveV3Model.File.VideoMediaMetadata.t)
    GapiLens.t
  val viewedByMe : (GapiDriveV3Model.File.t, bool) GapiLens.t
  val viewedByMeTime : (GapiDriveV3Model.File.t, GapiDate.t) GapiLens.t
  val viewersCanCopyContent : (GapiDriveV3Model.File.t, bool) GapiLens.t
  val webContentLink : (GapiDriveV3Model.File.t, string) GapiLens.t
  val webViewLink : (GapiDriveV3Model.File.t, string) GapiLens.t
  val writersCanShare : (GapiDriveV3Model.File.t, bool) GapiLens.t
  val empty : GapiDriveV3Model.File.t
  val render : GapiDriveV3Model.File.t -> GapiJson.json_data_model list
  val parse :
    GapiDriveV3Model.File.t ->
    GapiJson.json_data_model -> GapiDriveV3Model.File.t
  val to_data_model : GapiDriveV3Model.File.t -> GapiJson.json_data_model
  val of_data_model : GapiJson.json_data_model -> GapiDriveV3Model.File.t
end