sig
  module AdClient :
    sig
      type t = {
        id : string;
        kind : string;
        productCode : string;
        supportsReporting : bool;
      }
      val id : (GapiAdsenseV1_1Model.AdClient.t, string) GapiLens.t
      val kind : (GapiAdsenseV1_1Model.AdClient.t, string) GapiLens.t
      val productCode : (GapiAdsenseV1_1Model.AdClient.t, string) GapiLens.t
      val supportsReporting :
        (GapiAdsenseV1_1Model.AdClient.t, bool) GapiLens.t
      val empty : GapiAdsenseV1_1Model.AdClient.t
      val render :
        GapiAdsenseV1_1Model.AdClient.t -> GapiJson.json_data_model list
      val parse :
        GapiAdsenseV1_1Model.AdClient.t ->
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.AdClient.t
      val to_data_model :
        GapiAdsenseV1_1Model.AdClient.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.AdClient.t
    end
  module AdClients :
    sig
      type t = {
        etag : string;
        items : GapiAdsenseV1_1Model.AdClient.t list;
        kind : string;
        nextPageToken : string;
      }
      val etag : (GapiAdsenseV1_1Model.AdClients.t, string) GapiLens.t
      val items :
        (GapiAdsenseV1_1Model.AdClients.t,
         GapiAdsenseV1_1Model.AdClient.t list)
        GapiLens.t
      val kind : (GapiAdsenseV1_1Model.AdClients.t, string) GapiLens.t
      val nextPageToken :
        (GapiAdsenseV1_1Model.AdClients.t, string) GapiLens.t
      val empty : GapiAdsenseV1_1Model.AdClients.t
      val render :
        GapiAdsenseV1_1Model.AdClients.t -> GapiJson.json_data_model list
      val parse :
        GapiAdsenseV1_1Model.AdClients.t ->
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.AdClients.t
      val to_data_model :
        GapiAdsenseV1_1Model.AdClients.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.AdClients.t
    end
  module AdUnit :
    sig
      type t = {
        code : string;
        id : string;
        kind : string;
        name : string;
        status : string;
      }
      val code : (GapiAdsenseV1_1Model.AdUnit.t, string) GapiLens.t
      val id : (GapiAdsenseV1_1Model.AdUnit.t, string) GapiLens.t
      val kind : (GapiAdsenseV1_1Model.AdUnit.t, string) GapiLens.t
      val name : (GapiAdsenseV1_1Model.AdUnit.t, string) GapiLens.t
      val status : (GapiAdsenseV1_1Model.AdUnit.t, string) GapiLens.t
      val empty : GapiAdsenseV1_1Model.AdUnit.t
      val render :
        GapiAdsenseV1_1Model.AdUnit.t -> GapiJson.json_data_model list
      val parse :
        GapiAdsenseV1_1Model.AdUnit.t ->
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.AdUnit.t
      val to_data_model :
        GapiAdsenseV1_1Model.AdUnit.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.AdUnit.t
    end
  module AdUnits :
    sig
      type t = {
        etag : string;
        items : GapiAdsenseV1_1Model.AdUnit.t list;
        kind : string;
        nextPageToken : string;
      }
      val etag : (GapiAdsenseV1_1Model.AdUnits.t, string) GapiLens.t
      val items :
        (GapiAdsenseV1_1Model.AdUnits.t, GapiAdsenseV1_1Model.AdUnit.t list)
        GapiLens.t
      val kind : (GapiAdsenseV1_1Model.AdUnits.t, string) GapiLens.t
      val nextPageToken : (GapiAdsenseV1_1Model.AdUnits.t, string) GapiLens.t
      val empty : GapiAdsenseV1_1Model.AdUnits.t
      val render :
        GapiAdsenseV1_1Model.AdUnits.t -> GapiJson.json_data_model list
      val parse :
        GapiAdsenseV1_1Model.AdUnits.t ->
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.AdUnits.t
      val to_data_model :
        GapiAdsenseV1_1Model.AdUnits.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.AdUnits.t
    end
  module CustomChannel :
    sig
      module TargetingInfo :
        sig
          type t = {
            adsAppearOn : string;
            description : string;
            location : string;
            siteLanguage : string;
          }
          val adsAppearOn :
            (GapiAdsenseV1_1Model.CustomChannel.TargetingInfo.t, string)
            GapiLens.t
          val description :
            (GapiAdsenseV1_1Model.CustomChannel.TargetingInfo.t, string)
            GapiLens.t
          val location :
            (GapiAdsenseV1_1Model.CustomChannel.TargetingInfo.t, string)
            GapiLens.t
          val siteLanguage :
            (GapiAdsenseV1_1Model.CustomChannel.TargetingInfo.t, string)
            GapiLens.t
          val empty : GapiAdsenseV1_1Model.CustomChannel.TargetingInfo.t
          val render :
            GapiAdsenseV1_1Model.CustomChannel.TargetingInfo.t ->
            GapiJson.json_data_model list
          val parse :
            GapiAdsenseV1_1Model.CustomChannel.TargetingInfo.t ->
            GapiJson.json_data_model ->
            GapiAdsenseV1_1Model.CustomChannel.TargetingInfo.t
        end
      type t = {
        code : string;
        id : string;
        kind : string;
        name : string;
        targetingInfo : GapiAdsenseV1_1Model.CustomChannel.TargetingInfo.t;
      }
      val code : (GapiAdsenseV1_1Model.CustomChannel.t, string) GapiLens.t
      val id : (GapiAdsenseV1_1Model.CustomChannel.t, string) GapiLens.t
      val kind : (GapiAdsenseV1_1Model.CustomChannel.t, string) GapiLens.t
      val name : (GapiAdsenseV1_1Model.CustomChannel.t, string) GapiLens.t
      val targetingInfo :
        (GapiAdsenseV1_1Model.CustomChannel.t,
         GapiAdsenseV1_1Model.CustomChannel.TargetingInfo.t)
        GapiLens.t
      val empty : GapiAdsenseV1_1Model.CustomChannel.t
      val render :
        GapiAdsenseV1_1Model.CustomChannel.t -> GapiJson.json_data_model list
      val parse :
        GapiAdsenseV1_1Model.CustomChannel.t ->
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.CustomChannel.t
      val to_data_model :
        GapiAdsenseV1_1Model.CustomChannel.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.CustomChannel.t
    end
  module UrlChannel :
    sig
      type t = { id : string; kind : string; urlPattern : string; }
      val id : (GapiAdsenseV1_1Model.UrlChannel.t, string) GapiLens.t
      val kind : (GapiAdsenseV1_1Model.UrlChannel.t, string) GapiLens.t
      val urlPattern : (GapiAdsenseV1_1Model.UrlChannel.t, string) GapiLens.t
      val empty : GapiAdsenseV1_1Model.UrlChannel.t
      val render :
        GapiAdsenseV1_1Model.UrlChannel.t -> GapiJson.json_data_model list
      val parse :
        GapiAdsenseV1_1Model.UrlChannel.t ->
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.UrlChannel.t
      val to_data_model :
        GapiAdsenseV1_1Model.UrlChannel.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.UrlChannel.t
    end
  module Account :
    sig
      type t = {
        id : string;
        kind : string;
        name : string;
        subAccounts : GapiAdsenseV1_1Model.Account.t list;
      }
      val id : (GapiAdsenseV1_1Model.Account.t, string) GapiLens.t
      val kind : (GapiAdsenseV1_1Model.Account.t, string) GapiLens.t
      val name : (GapiAdsenseV1_1Model.Account.t, string) GapiLens.t
      val subAccounts :
        (GapiAdsenseV1_1Model.Account.t, GapiAdsenseV1_1Model.Account.t list)
        GapiLens.t
      val empty : GapiAdsenseV1_1Model.Account.t
      val render :
        GapiAdsenseV1_1Model.Account.t -> GapiJson.json_data_model list
      val parse :
        GapiAdsenseV1_1Model.Account.t ->
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.Account.t
      val to_data_model :
        GapiAdsenseV1_1Model.Account.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.Account.t
    end
  module CustomChannels :
    sig
      type t = {
        etag : string;
        items : GapiAdsenseV1_1Model.CustomChannel.t list;
        kind : string;
        nextPageToken : string;
      }
      val etag : (GapiAdsenseV1_1Model.CustomChannels.t, string) GapiLens.t
      val items :
        (GapiAdsenseV1_1Model.CustomChannels.t,
         GapiAdsenseV1_1Model.CustomChannel.t list)
        GapiLens.t
      val kind : (GapiAdsenseV1_1Model.CustomChannels.t, string) GapiLens.t
      val nextPageToken :
        (GapiAdsenseV1_1Model.CustomChannels.t, string) GapiLens.t
      val empty : GapiAdsenseV1_1Model.CustomChannels.t
      val render :
        GapiAdsenseV1_1Model.CustomChannels.t ->
        GapiJson.json_data_model list
      val parse :
        GapiAdsenseV1_1Model.CustomChannels.t ->
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.CustomChannels.t
      val to_data_model :
        GapiAdsenseV1_1Model.CustomChannels.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.CustomChannels.t
    end
  module Accounts :
    sig
      type t = {
        etag : string;
        items : GapiAdsenseV1_1Model.Account.t list;
        kind : string;
        nextPageToken : string;
      }
      val etag : (GapiAdsenseV1_1Model.Accounts.t, string) GapiLens.t
      val items :
        (GapiAdsenseV1_1Model.Accounts.t,
         GapiAdsenseV1_1Model.Account.t list)
        GapiLens.t
      val kind : (GapiAdsenseV1_1Model.Accounts.t, string) GapiLens.t
      val nextPageToken :
        (GapiAdsenseV1_1Model.Accounts.t, string) GapiLens.t
      val empty : GapiAdsenseV1_1Model.Accounts.t
      val render :
        GapiAdsenseV1_1Model.Accounts.t -> GapiJson.json_data_model list
      val parse :
        GapiAdsenseV1_1Model.Accounts.t ->
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.Accounts.t
      val to_data_model :
        GapiAdsenseV1_1Model.Accounts.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.Accounts.t
    end
  module AdsenseReportsGenerateResponse :
    sig
      module Headers :
        sig
          type t = { currency : string; name : string; _type : string; }
          val currency :
            (GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.Headers.t,
             string)
            GapiLens.t
          val name :
            (GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.Headers.t,
             string)
            GapiLens.t
          val _type :
            (GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.Headers.t,
             string)
            GapiLens.t
          val empty :
            GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.Headers.t
          val render :
            GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.Headers.t ->
            GapiJson.json_data_model list
          val parse :
            GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.Headers.t ->
            GapiJson.json_data_model ->
            GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.Headers.t
        end
      type t = {
        averages : string list;
        headers :
          GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.Headers.t list;
        kind : string;
        rows : string list list;
        totalMatchedRows : int64;
        totals : string list;
        warnings : string list;
      }
      val averages :
        (GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.t, string list)
        GapiLens.t
      val headers :
        (GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.t,
         GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.Headers.t list)
        GapiLens.t
      val kind :
        (GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.t, string)
        GapiLens.t
      val rows :
        (GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.t,
         string list list)
        GapiLens.t
      val totalMatchedRows :
        (GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.t, int64)
        GapiLens.t
      val totals :
        (GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.t, string list)
        GapiLens.t
      val warnings :
        (GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.t, string list)
        GapiLens.t
      val empty : GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.t
      val render :
        GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.t ->
        GapiJson.json_data_model list
      val parse :
        GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.t ->
        GapiJson.json_data_model ->
        GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.t
      val to_data_model :
        GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.t ->
        GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model ->
        GapiAdsenseV1_1Model.AdsenseReportsGenerateResponse.t
    end
  module UrlChannels :
    sig
      type t = {
        etag : string;
        items : GapiAdsenseV1_1Model.UrlChannel.t list;
        kind : string;
        nextPageToken : string;
      }
      val etag : (GapiAdsenseV1_1Model.UrlChannels.t, string) GapiLens.t
      val items :
        (GapiAdsenseV1_1Model.UrlChannels.t,
         GapiAdsenseV1_1Model.UrlChannel.t list)
        GapiLens.t
      val kind : (GapiAdsenseV1_1Model.UrlChannels.t, string) GapiLens.t
      val nextPageToken :
        (GapiAdsenseV1_1Model.UrlChannels.t, string) GapiLens.t
      val empty : GapiAdsenseV1_1Model.UrlChannels.t
      val render :
        GapiAdsenseV1_1Model.UrlChannels.t -> GapiJson.json_data_model list
      val parse :
        GapiAdsenseV1_1Model.UrlChannels.t ->
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.UrlChannels.t
      val to_data_model :
        GapiAdsenseV1_1Model.UrlChannels.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiAdsenseV1_1Model.UrlChannels.t
    end
end