sig
  module Icons :
    sig
      type t = { category : string; iconUrl : string; size : int; }
      val category : (GapiDriveV2Model.App.Icons.t, string) GapiLens.t
      val iconUrl : (GapiDriveV2Model.App.Icons.t, string) GapiLens.t
      val size : (GapiDriveV2Model.App.Icons.t, int) GapiLens.t
      val empty : GapiDriveV2Model.App.Icons.t
      val render :
        GapiDriveV2Model.App.Icons.t -> GapiJson.json_data_model list
      val parse :
        GapiDriveV2Model.App.Icons.t ->
        GapiJson.json_data_model -> GapiDriveV2Model.App.Icons.t
    end
  type t = {
    authorized : bool;
    createInFolderTemplate : string;
    createUrl : string;
    hasDriveWideScope : bool;
    icons : GapiDriveV2Model.App.Icons.t list;
    id : string;
    installed : bool;
    kind : string;
    longDescription : string;
    name : string;
    objectType : string;
    openUrlTemplate : string;
    primaryFileExtensions : string list;
    primaryMimeTypes : string list;
    productId : string;
    productUrl : string;
    secondaryFileExtensions : string list;
    secondaryMimeTypes : string list;
    shortDescription : string;
    supportsCreate : bool;
    supportsImport : bool;
    supportsMultiOpen : bool;
    supportsOfflineCreate : bool;
    useByDefault : bool;
  }
  val authorized : (GapiDriveV2Model.App.t, bool) GapiLens.t
  val createInFolderTemplate : (GapiDriveV2Model.App.t, string) GapiLens.t
  val createUrl : (GapiDriveV2Model.App.t, string) GapiLens.t
  val hasDriveWideScope : (GapiDriveV2Model.App.t, bool) GapiLens.t
  val icons :
    (GapiDriveV2Model.App.t, GapiDriveV2Model.App.Icons.t list) GapiLens.t
  val id : (GapiDriveV2Model.App.t, string) GapiLens.t
  val installed : (GapiDriveV2Model.App.t, bool) GapiLens.t
  val kind : (GapiDriveV2Model.App.t, string) GapiLens.t
  val longDescription : (GapiDriveV2Model.App.t, string) GapiLens.t
  val name : (GapiDriveV2Model.App.t, string) GapiLens.t
  val objectType : (GapiDriveV2Model.App.t, string) GapiLens.t
  val openUrlTemplate : (GapiDriveV2Model.App.t, string) GapiLens.t
  val primaryFileExtensions :
    (GapiDriveV2Model.App.t, string list) GapiLens.t
  val primaryMimeTypes : (GapiDriveV2Model.App.t, string list) GapiLens.t
  val productId : (GapiDriveV2Model.App.t, string) GapiLens.t
  val productUrl : (GapiDriveV2Model.App.t, string) GapiLens.t
  val secondaryFileExtensions :
    (GapiDriveV2Model.App.t, string list) GapiLens.t
  val secondaryMimeTypes : (GapiDriveV2Model.App.t, string list) GapiLens.t
  val shortDescription : (GapiDriveV2Model.App.t, string) GapiLens.t
  val supportsCreate : (GapiDriveV2Model.App.t, bool) GapiLens.t
  val supportsImport : (GapiDriveV2Model.App.t, bool) GapiLens.t
  val supportsMultiOpen : (GapiDriveV2Model.App.t, bool) GapiLens.t
  val supportsOfflineCreate : (GapiDriveV2Model.App.t, bool) GapiLens.t
  val useByDefault : (GapiDriveV2Model.App.t, bool) GapiLens.t
  val empty : GapiDriveV2Model.App.t
  val render : GapiDriveV2Model.App.t -> GapiJson.json_data_model list
  val parse :
    GapiDriveV2Model.App.t ->
    GapiJson.json_data_model -> GapiDriveV2Model.App.t
  val to_data_model : GapiDriveV2Model.App.t -> GapiJson.json_data_model
  val of_data_model : GapiJson.json_data_model -> GapiDriveV2Model.App.t
end