sig
  module UppercaseDetails :
    sig
      type t = { field : string; fieldIndex : int; }
      val field :
        (GapiAnalyticsV3Model.Filter.UppercaseDetails.t, string) GapiLens.t
      val fieldIndex :
        (GapiAnalyticsV3Model.Filter.UppercaseDetails.t, int) GapiLens.t
      val empty : GapiAnalyticsV3Model.Filter.UppercaseDetails.t
      val render :
        GapiAnalyticsV3Model.Filter.UppercaseDetails.t ->
        GapiJson.json_data_model list
      val parse :
        GapiAnalyticsV3Model.Filter.UppercaseDetails.t ->
        GapiJson.json_data_model ->
        GapiAnalyticsV3Model.Filter.UppercaseDetails.t
    end
  module SearchAndReplaceDetails :
    sig
      type t = {
        caseSensitive : bool;
        field : string;
        fieldIndex : int;
        replaceString : string;
        searchString : string;
      }
      val caseSensitive :
        (GapiAnalyticsV3Model.Filter.SearchAndReplaceDetails.t, bool)
        GapiLens.t
      val field :
        (GapiAnalyticsV3Model.Filter.SearchAndReplaceDetails.t, string)
        GapiLens.t
      val fieldIndex :
        (GapiAnalyticsV3Model.Filter.SearchAndReplaceDetails.t, int)
        GapiLens.t
      val replaceString :
        (GapiAnalyticsV3Model.Filter.SearchAndReplaceDetails.t, string)
        GapiLens.t
      val searchString :
        (GapiAnalyticsV3Model.Filter.SearchAndReplaceDetails.t, string)
        GapiLens.t
      val empty : GapiAnalyticsV3Model.Filter.SearchAndReplaceDetails.t
      val render :
        GapiAnalyticsV3Model.Filter.SearchAndReplaceDetails.t ->
        GapiJson.json_data_model list
      val parse :
        GapiAnalyticsV3Model.Filter.SearchAndReplaceDetails.t ->
        GapiJson.json_data_model ->
        GapiAnalyticsV3Model.Filter.SearchAndReplaceDetails.t
    end
  module ParentLink :
    sig
      type t = { href : string; _type : string; }
      val href :
        (GapiAnalyticsV3Model.Filter.ParentLink.t, string) GapiLens.t
      val _type :
        (GapiAnalyticsV3Model.Filter.ParentLink.t, string) GapiLens.t
      val empty : GapiAnalyticsV3Model.Filter.ParentLink.t
      val render :
        GapiAnalyticsV3Model.Filter.ParentLink.t ->
        GapiJson.json_data_model list
      val parse :
        GapiAnalyticsV3Model.Filter.ParentLink.t ->
        GapiJson.json_data_model -> GapiAnalyticsV3Model.Filter.ParentLink.t
    end
  module LowercaseDetails :
    sig
      type t = { field : string; fieldIndex : int; }
      val field :
        (GapiAnalyticsV3Model.Filter.LowercaseDetails.t, string) GapiLens.t
      val fieldIndex :
        (GapiAnalyticsV3Model.Filter.LowercaseDetails.t, int) GapiLens.t
      val empty : GapiAnalyticsV3Model.Filter.LowercaseDetails.t
      val render :
        GapiAnalyticsV3Model.Filter.LowercaseDetails.t ->
        GapiJson.json_data_model list
      val parse :
        GapiAnalyticsV3Model.Filter.LowercaseDetails.t ->
        GapiJson.json_data_model ->
        GapiAnalyticsV3Model.Filter.LowercaseDetails.t
    end
  module AdvancedDetails :
    sig
      type t = {
        caseSensitive : bool;
        extractA : string;
        extractB : string;
        fieldA : string;
        fieldAIndex : int;
        fieldARequired : bool;
        fieldB : string;
        fieldBIndex : int;
        fieldBRequired : bool;
        outputConstructor : string;
        outputToField : string;
        outputToFieldIndex : int;
        overrideOutputField : bool;
      }
      val caseSensitive :
        (GapiAnalyticsV3Model.Filter.AdvancedDetails.t, bool) GapiLens.t
      val extractA :
        (GapiAnalyticsV3Model.Filter.AdvancedDetails.t, string) GapiLens.t
      val extractB :
        (GapiAnalyticsV3Model.Filter.AdvancedDetails.t, string) GapiLens.t
      val fieldA :
        (GapiAnalyticsV3Model.Filter.AdvancedDetails.t, string) GapiLens.t
      val fieldAIndex :
        (GapiAnalyticsV3Model.Filter.AdvancedDetails.t, int) GapiLens.t
      val fieldARequired :
        (GapiAnalyticsV3Model.Filter.AdvancedDetails.t, bool) GapiLens.t
      val fieldB :
        (GapiAnalyticsV3Model.Filter.AdvancedDetails.t, string) GapiLens.t
      val fieldBIndex :
        (GapiAnalyticsV3Model.Filter.AdvancedDetails.t, int) GapiLens.t
      val fieldBRequired :
        (GapiAnalyticsV3Model.Filter.AdvancedDetails.t, bool) GapiLens.t
      val outputConstructor :
        (GapiAnalyticsV3Model.Filter.AdvancedDetails.t, string) GapiLens.t
      val outputToField :
        (GapiAnalyticsV3Model.Filter.AdvancedDetails.t, string) GapiLens.t
      val outputToFieldIndex :
        (GapiAnalyticsV3Model.Filter.AdvancedDetails.t, int) GapiLens.t
      val overrideOutputField :
        (GapiAnalyticsV3Model.Filter.AdvancedDetails.t, bool) GapiLens.t
      val empty : GapiAnalyticsV3Model.Filter.AdvancedDetails.t
      val render :
        GapiAnalyticsV3Model.Filter.AdvancedDetails.t ->
        GapiJson.json_data_model list
      val parse :
        GapiAnalyticsV3Model.Filter.AdvancedDetails.t ->
        GapiJson.json_data_model ->
        GapiAnalyticsV3Model.Filter.AdvancedDetails.t
    end
  type t = {
    accountId : string;
    advancedDetails : GapiAnalyticsV3Model.Filter.AdvancedDetails.t;
    created : GapiDate.t;
    excludeDetails : GapiAnalyticsV3Model.FilterExpression.t;
    id : string;
    includeDetails : GapiAnalyticsV3Model.FilterExpression.t;
    kind : string;
    lowercaseDetails : GapiAnalyticsV3Model.Filter.LowercaseDetails.t;
    name : string;
    parentLink : GapiAnalyticsV3Model.Filter.ParentLink.t;
    searchAndReplaceDetails :
      GapiAnalyticsV3Model.Filter.SearchAndReplaceDetails.t;
    selfLink : string;
    _type : string;
    updated : GapiDate.t;
    uppercaseDetails : GapiAnalyticsV3Model.Filter.UppercaseDetails.t;
  }
  val accountId : (GapiAnalyticsV3Model.Filter.t, string) GapiLens.t
  val advancedDetails :
    (GapiAnalyticsV3Model.Filter.t,
     GapiAnalyticsV3Model.Filter.AdvancedDetails.t)
    GapiLens.t
  val created : (GapiAnalyticsV3Model.Filter.t, GapiDate.t) GapiLens.t
  val excludeDetails :
    (GapiAnalyticsV3Model.Filter.t, GapiAnalyticsV3Model.FilterExpression.t)
    GapiLens.t
  val id : (GapiAnalyticsV3Model.Filter.t, string) GapiLens.t
  val includeDetails :
    (GapiAnalyticsV3Model.Filter.t, GapiAnalyticsV3Model.FilterExpression.t)
    GapiLens.t
  val kind : (GapiAnalyticsV3Model.Filter.t, string) GapiLens.t
  val lowercaseDetails :
    (GapiAnalyticsV3Model.Filter.t,
     GapiAnalyticsV3Model.Filter.LowercaseDetails.t)
    GapiLens.t
  val name : (GapiAnalyticsV3Model.Filter.t, string) GapiLens.t
  val parentLink :
    (GapiAnalyticsV3Model.Filter.t, GapiAnalyticsV3Model.Filter.ParentLink.t)
    GapiLens.t
  val searchAndReplaceDetails :
    (GapiAnalyticsV3Model.Filter.t,
     GapiAnalyticsV3Model.Filter.SearchAndReplaceDetails.t)
    GapiLens.t
  val selfLink : (GapiAnalyticsV3Model.Filter.t, string) GapiLens.t
  val _type : (GapiAnalyticsV3Model.Filter.t, string) GapiLens.t
  val updated : (GapiAnalyticsV3Model.Filter.t, GapiDate.t) GapiLens.t
  val uppercaseDetails :
    (GapiAnalyticsV3Model.Filter.t,
     GapiAnalyticsV3Model.Filter.UppercaseDetails.t)
    GapiLens.t
  val empty : GapiAnalyticsV3Model.Filter.t
  val render : GapiAnalyticsV3Model.Filter.t -> GapiJson.json_data_model list
  val parse :
    GapiAnalyticsV3Model.Filter.t ->
    GapiJson.json_data_model -> GapiAnalyticsV3Model.Filter.t
  val to_data_model :
    GapiAnalyticsV3Model.Filter.t -> GapiJson.json_data_model
  val of_data_model :
    GapiJson.json_data_model -> GapiAnalyticsV3Model.Filter.t
end