sig
  module Query :
    sig
      type t = {
        dimensions : string;
        end_date : string;
        filters : string;
        ids : string;
        max_results : int;
        metrics : string list;
        samplingLevel : string;
        segment : string;
        sort : string list;
        start_date : string;
        start_index : int;
      }
      val dimensions :
        (GapiAnalyticsV3Model.GaData.Query.t, string) GapiLens.t
      val end_date : (GapiAnalyticsV3Model.GaData.Query.t, string) GapiLens.t
      val filters : (GapiAnalyticsV3Model.GaData.Query.t, string) GapiLens.t
      val ids : (GapiAnalyticsV3Model.GaData.Query.t, string) GapiLens.t
      val max_results : (GapiAnalyticsV3Model.GaData.Query.t, int) GapiLens.t
      val metrics :
        (GapiAnalyticsV3Model.GaData.Query.t, string list) GapiLens.t
      val samplingLevel :
        (GapiAnalyticsV3Model.GaData.Query.t, string) GapiLens.t
      val segment : (GapiAnalyticsV3Model.GaData.Query.t, string) GapiLens.t
      val sort :
        (GapiAnalyticsV3Model.GaData.Query.t, string list) GapiLens.t
      val start_date :
        (GapiAnalyticsV3Model.GaData.Query.t, string) GapiLens.t
      val start_index : (GapiAnalyticsV3Model.GaData.Query.t, int) GapiLens.t
      val empty : GapiAnalyticsV3Model.GaData.Query.t
      val render :
        GapiAnalyticsV3Model.GaData.Query.t -> GapiJson.json_data_model list
      val parse :
        GapiAnalyticsV3Model.GaData.Query.t ->
        GapiJson.json_data_model -> GapiAnalyticsV3Model.GaData.Query.t
    end
  module ProfileInfo :
    sig
      type t = {
        accountId : string;
        internalWebPropertyId : string;
        profileId : string;
        profileName : string;
        tableId : string;
        webPropertyId : string;
      }
      val accountId :
        (GapiAnalyticsV3Model.GaData.ProfileInfo.t, string) GapiLens.t
      val internalWebPropertyId :
        (GapiAnalyticsV3Model.GaData.ProfileInfo.t, string) GapiLens.t
      val profileId :
        (GapiAnalyticsV3Model.GaData.ProfileInfo.t, string) GapiLens.t
      val profileName :
        (GapiAnalyticsV3Model.GaData.ProfileInfo.t, string) GapiLens.t
      val tableId :
        (GapiAnalyticsV3Model.GaData.ProfileInfo.t, string) GapiLens.t
      val webPropertyId :
        (GapiAnalyticsV3Model.GaData.ProfileInfo.t, string) GapiLens.t
      val empty : GapiAnalyticsV3Model.GaData.ProfileInfo.t
      val render :
        GapiAnalyticsV3Model.GaData.ProfileInfo.t ->
        GapiJson.json_data_model list
      val parse :
        GapiAnalyticsV3Model.GaData.ProfileInfo.t ->
        GapiJson.json_data_model -> GapiAnalyticsV3Model.GaData.ProfileInfo.t
    end
  module DataTable :
    sig
      module Rows :
        sig
          module C :
            sig
              type t = { v : string; }
              val v :
                (GapiAnalyticsV3Model.GaData.DataTable.Rows.C.t, string)
                GapiLens.t
              val empty : GapiAnalyticsV3Model.GaData.DataTable.Rows.C.t
              val render :
                GapiAnalyticsV3Model.GaData.DataTable.Rows.C.t ->
                GapiJson.json_data_model list
              val parse :
                GapiAnalyticsV3Model.GaData.DataTable.Rows.C.t ->
                GapiJson.json_data_model ->
                GapiAnalyticsV3Model.GaData.DataTable.Rows.C.t
            end
          type t = {
            c : GapiAnalyticsV3Model.GaData.DataTable.Rows.C.t list;
          }
          val c :
            (GapiAnalyticsV3Model.GaData.DataTable.Rows.t,
             GapiAnalyticsV3Model.GaData.DataTable.Rows.C.t list)
            GapiLens.t
          val empty : GapiAnalyticsV3Model.GaData.DataTable.Rows.t
          val render :
            GapiAnalyticsV3Model.GaData.DataTable.Rows.t ->
            GapiJson.json_data_model list
          val parse :
            GapiAnalyticsV3Model.GaData.DataTable.Rows.t ->
            GapiJson.json_data_model ->
            GapiAnalyticsV3Model.GaData.DataTable.Rows.t
        end
      module Cols :
        sig
          type t = { id : string; label : string; _type : string; }
          val id :
            (GapiAnalyticsV3Model.GaData.DataTable.Cols.t, string) GapiLens.t
          val label :
            (GapiAnalyticsV3Model.GaData.DataTable.Cols.t, string) GapiLens.t
          val _type :
            (GapiAnalyticsV3Model.GaData.DataTable.Cols.t, string) GapiLens.t
          val empty : GapiAnalyticsV3Model.GaData.DataTable.Cols.t
          val render :
            GapiAnalyticsV3Model.GaData.DataTable.Cols.t ->
            GapiJson.json_data_model list
          val parse :
            GapiAnalyticsV3Model.GaData.DataTable.Cols.t ->
            GapiJson.json_data_model ->
            GapiAnalyticsV3Model.GaData.DataTable.Cols.t
        end
      type t = {
        cols : GapiAnalyticsV3Model.GaData.DataTable.Cols.t list;
        rows : GapiAnalyticsV3Model.GaData.DataTable.Rows.t list;
      }
      val cols :
        (GapiAnalyticsV3Model.GaData.DataTable.t,
         GapiAnalyticsV3Model.GaData.DataTable.Cols.t list)
        GapiLens.t
      val rows :
        (GapiAnalyticsV3Model.GaData.DataTable.t,
         GapiAnalyticsV3Model.GaData.DataTable.Rows.t list)
        GapiLens.t
      val empty : GapiAnalyticsV3Model.GaData.DataTable.t
      val render :
        GapiAnalyticsV3Model.GaData.DataTable.t ->
        GapiJson.json_data_model list
      val parse :
        GapiAnalyticsV3Model.GaData.DataTable.t ->
        GapiJson.json_data_model -> GapiAnalyticsV3Model.GaData.DataTable.t
    end
  module ColumnHeaders :
    sig
      type t = { columnType : string; dataType : string; name : string; }
      val columnType :
        (GapiAnalyticsV3Model.GaData.ColumnHeaders.t, string) GapiLens.t
      val dataType :
        (GapiAnalyticsV3Model.GaData.ColumnHeaders.t, string) GapiLens.t
      val name :
        (GapiAnalyticsV3Model.GaData.ColumnHeaders.t, string) GapiLens.t
      val empty : GapiAnalyticsV3Model.GaData.ColumnHeaders.t
      val render :
        GapiAnalyticsV3Model.GaData.ColumnHeaders.t ->
        GapiJson.json_data_model list
      val parse :
        GapiAnalyticsV3Model.GaData.ColumnHeaders.t ->
        GapiJson.json_data_model ->
        GapiAnalyticsV3Model.GaData.ColumnHeaders.t
    end
  type t = {
    columnHeaders : GapiAnalyticsV3Model.GaData.ColumnHeaders.t list;
    containsSampledData : bool;
    dataTable : GapiAnalyticsV3Model.GaData.DataTable.t;
    id : string;
    itemsPerPage : int;
    kind : string;
    nextLink : string;
    previousLink : string;
    profileInfo : GapiAnalyticsV3Model.GaData.ProfileInfo.t;
    query : GapiAnalyticsV3Model.GaData.Query.t;
    rows : string list list;
    sampleSize : int64;
    sampleSpace : int64;
    selfLink : string;
    totalResults : int;
    totalsForAllResults : (string * string) list;
  }
  val columnHeaders :
    (GapiAnalyticsV3Model.GaData.t,
     GapiAnalyticsV3Model.GaData.ColumnHeaders.t list)
    GapiLens.t
  val containsSampledData : (GapiAnalyticsV3Model.GaData.t, bool) GapiLens.t
  val dataTable :
    (GapiAnalyticsV3Model.GaData.t, GapiAnalyticsV3Model.GaData.DataTable.t)
    GapiLens.t
  val id : (GapiAnalyticsV3Model.GaData.t, string) GapiLens.t
  val itemsPerPage : (GapiAnalyticsV3Model.GaData.t, int) GapiLens.t
  val kind : (GapiAnalyticsV3Model.GaData.t, string) GapiLens.t
  val nextLink : (GapiAnalyticsV3Model.GaData.t, string) GapiLens.t
  val previousLink : (GapiAnalyticsV3Model.GaData.t, string) GapiLens.t
  val profileInfo :
    (GapiAnalyticsV3Model.GaData.t,
     GapiAnalyticsV3Model.GaData.ProfileInfo.t)
    GapiLens.t
  val query :
    (GapiAnalyticsV3Model.GaData.t, GapiAnalyticsV3Model.GaData.Query.t)
    GapiLens.t
  val rows : (GapiAnalyticsV3Model.GaData.t, string list list) GapiLens.t
  val sampleSize : (GapiAnalyticsV3Model.GaData.t, int64) GapiLens.t
  val sampleSpace : (GapiAnalyticsV3Model.GaData.t, int64) GapiLens.t
  val selfLink : (GapiAnalyticsV3Model.GaData.t, string) GapiLens.t
  val totalResults : (GapiAnalyticsV3Model.GaData.t, int) GapiLens.t
  val totalsForAllResults :
    (GapiAnalyticsV3Model.GaData.t, (string * string) list) GapiLens.t
  val empty : GapiAnalyticsV3Model.GaData.t
  val render : GapiAnalyticsV3Model.GaData.t -> GapiJson.json_data_model list
  val parse :
    GapiAnalyticsV3Model.GaData.t ->
    GapiJson.json_data_model -> GapiAnalyticsV3Model.GaData.t
  val to_data_model :
    GapiAnalyticsV3Model.GaData.t -> GapiJson.json_data_model
  val of_data_model :
    GapiJson.json_data_model -> GapiAnalyticsV3Model.GaData.t
end