sig
  module VisitTimeOnSiteDetails :
    sig
      type t = { comparisonType : string; comparisonValue : int64; }
      val comparisonType :
        (GapiAnalyticsV3Model.Goal.VisitTimeOnSiteDetails.t, string)
        GapiLens.t
      val comparisonValue :
        (GapiAnalyticsV3Model.Goal.VisitTimeOnSiteDetails.t, int64)
        GapiLens.t
      val empty : GapiAnalyticsV3Model.Goal.VisitTimeOnSiteDetails.t
      val render :
        GapiAnalyticsV3Model.Goal.VisitTimeOnSiteDetails.t ->
        GapiJson.json_data_model list
      val parse :
        GapiAnalyticsV3Model.Goal.VisitTimeOnSiteDetails.t ->
        GapiJson.json_data_model ->
        GapiAnalyticsV3Model.Goal.VisitTimeOnSiteDetails.t
    end
  module VisitNumPagesDetails :
    sig
      type t = { comparisonType : string; comparisonValue : int64; }
      val comparisonType :
        (GapiAnalyticsV3Model.Goal.VisitNumPagesDetails.t, string) GapiLens.t
      val comparisonValue :
        (GapiAnalyticsV3Model.Goal.VisitNumPagesDetails.t, int64) GapiLens.t
      val empty : GapiAnalyticsV3Model.Goal.VisitNumPagesDetails.t
      val render :
        GapiAnalyticsV3Model.Goal.VisitNumPagesDetails.t ->
        GapiJson.json_data_model list
      val parse :
        GapiAnalyticsV3Model.Goal.VisitNumPagesDetails.t ->
        GapiJson.json_data_model ->
        GapiAnalyticsV3Model.Goal.VisitNumPagesDetails.t
    end
  module UrlDestinationDetails :
    sig
      module Steps :
        sig
          type t = { name : string; number : int; url : string; }
          val name :
            (GapiAnalyticsV3Model.Goal.UrlDestinationDetails.Steps.t, string)
            GapiLens.t
          val number :
            (GapiAnalyticsV3Model.Goal.UrlDestinationDetails.Steps.t, int)
            GapiLens.t
          val url :
            (GapiAnalyticsV3Model.Goal.UrlDestinationDetails.Steps.t, string)
            GapiLens.t
          val empty : GapiAnalyticsV3Model.Goal.UrlDestinationDetails.Steps.t
          val render :
            GapiAnalyticsV3Model.Goal.UrlDestinationDetails.Steps.t ->
            GapiJson.json_data_model list
          val parse :
            GapiAnalyticsV3Model.Goal.UrlDestinationDetails.Steps.t ->
            GapiJson.json_data_model ->
            GapiAnalyticsV3Model.Goal.UrlDestinationDetails.Steps.t
        end
      type t = {
        caseSensitive : bool;
        firstStepRequired : bool;
        matchType : string;
        steps : GapiAnalyticsV3Model.Goal.UrlDestinationDetails.Steps.t list;
        url : string;
      }
      val caseSensitive :
        (GapiAnalyticsV3Model.Goal.UrlDestinationDetails.t, bool) GapiLens.t
      val firstStepRequired :
        (GapiAnalyticsV3Model.Goal.UrlDestinationDetails.t, bool) GapiLens.t
      val matchType :
        (GapiAnalyticsV3Model.Goal.UrlDestinationDetails.t, string)
        GapiLens.t
      val steps :
        (GapiAnalyticsV3Model.Goal.UrlDestinationDetails.t,
         GapiAnalyticsV3Model.Goal.UrlDestinationDetails.Steps.t list)
        GapiLens.t
      val url :
        (GapiAnalyticsV3Model.Goal.UrlDestinationDetails.t, string)
        GapiLens.t
      val empty : GapiAnalyticsV3Model.Goal.UrlDestinationDetails.t
      val render :
        GapiAnalyticsV3Model.Goal.UrlDestinationDetails.t ->
        GapiJson.json_data_model list
      val parse :
        GapiAnalyticsV3Model.Goal.UrlDestinationDetails.t ->
        GapiJson.json_data_model ->
        GapiAnalyticsV3Model.Goal.UrlDestinationDetails.t
    end
  module ParentLink :
    sig
      type t = { href : string; _type : string; }
      val href : (GapiAnalyticsV3Model.Goal.ParentLink.t, string) GapiLens.t
      val _type : (GapiAnalyticsV3Model.Goal.ParentLink.t, string) GapiLens.t
      val empty : GapiAnalyticsV3Model.Goal.ParentLink.t
      val render :
        GapiAnalyticsV3Model.Goal.ParentLink.t ->
        GapiJson.json_data_model list
      val parse :
        GapiAnalyticsV3Model.Goal.ParentLink.t ->
        GapiJson.json_data_model -> GapiAnalyticsV3Model.Goal.ParentLink.t
    end
  module EventDetails :
    sig
      module EventConditions :
        sig
          type t = {
            comparisonType : string;
            comparisonValue : int64;
            expression : string;
            matchType : string;
            _type : string;
          }
          val comparisonType :
            (GapiAnalyticsV3Model.Goal.EventDetails.EventConditions.t,
             string)
            GapiLens.t
          val comparisonValue :
            (GapiAnalyticsV3Model.Goal.EventDetails.EventConditions.t, int64)
            GapiLens.t
          val expression :
            (GapiAnalyticsV3Model.Goal.EventDetails.EventConditions.t,
             string)
            GapiLens.t
          val matchType :
            (GapiAnalyticsV3Model.Goal.EventDetails.EventConditions.t,
             string)
            GapiLens.t
          val _type :
            (GapiAnalyticsV3Model.Goal.EventDetails.EventConditions.t,
             string)
            GapiLens.t
          val empty :
            GapiAnalyticsV3Model.Goal.EventDetails.EventConditions.t
          val render :
            GapiAnalyticsV3Model.Goal.EventDetails.EventConditions.t ->
            GapiJson.json_data_model list
          val parse :
            GapiAnalyticsV3Model.Goal.EventDetails.EventConditions.t ->
            GapiJson.json_data_model ->
            GapiAnalyticsV3Model.Goal.EventDetails.EventConditions.t
        end
      type t = {
        eventConditions :
          GapiAnalyticsV3Model.Goal.EventDetails.EventConditions.t list;
        useEventValue : bool;
      }
      val eventConditions :
        (GapiAnalyticsV3Model.Goal.EventDetails.t,
         GapiAnalyticsV3Model.Goal.EventDetails.EventConditions.t list)
        GapiLens.t
      val useEventValue :
        (GapiAnalyticsV3Model.Goal.EventDetails.t, bool) GapiLens.t
      val empty : GapiAnalyticsV3Model.Goal.EventDetails.t
      val render :
        GapiAnalyticsV3Model.Goal.EventDetails.t ->
        GapiJson.json_data_model list
      val parse :
        GapiAnalyticsV3Model.Goal.EventDetails.t ->
        GapiJson.json_data_model -> GapiAnalyticsV3Model.Goal.EventDetails.t
    end
  type t = {
    accountId : string;
    active : bool;
    created : GapiDate.t;
    eventDetails : GapiAnalyticsV3Model.Goal.EventDetails.t;
    id : string;
    internalWebPropertyId : string;
    kind : string;
    name : string;
    parentLink : GapiAnalyticsV3Model.Goal.ParentLink.t;
    profileId : string;
    selfLink : string;
    _type : string;
    updated : GapiDate.t;
    urlDestinationDetails : GapiAnalyticsV3Model.Goal.UrlDestinationDetails.t;
    value : float;
    visitNumPagesDetails : GapiAnalyticsV3Model.Goal.VisitNumPagesDetails.t;
    visitTimeOnSiteDetails :
      GapiAnalyticsV3Model.Goal.VisitTimeOnSiteDetails.t;
    webPropertyId : string;
  }
  val accountId : (GapiAnalyticsV3Model.Goal.t, string) GapiLens.t
  val active : (GapiAnalyticsV3Model.Goal.t, bool) GapiLens.t
  val created : (GapiAnalyticsV3Model.Goal.t, GapiDate.t) GapiLens.t
  val eventDetails :
    (GapiAnalyticsV3Model.Goal.t, GapiAnalyticsV3Model.Goal.EventDetails.t)
    GapiLens.t
  val id : (GapiAnalyticsV3Model.Goal.t, string) GapiLens.t
  val internalWebPropertyId :
    (GapiAnalyticsV3Model.Goal.t, string) GapiLens.t
  val kind : (GapiAnalyticsV3Model.Goal.t, string) GapiLens.t
  val name : (GapiAnalyticsV3Model.Goal.t, string) GapiLens.t
  val parentLink :
    (GapiAnalyticsV3Model.Goal.t, GapiAnalyticsV3Model.Goal.ParentLink.t)
    GapiLens.t
  val profileId : (GapiAnalyticsV3Model.Goal.t, string) GapiLens.t
  val selfLink : (GapiAnalyticsV3Model.Goal.t, string) GapiLens.t
  val _type : (GapiAnalyticsV3Model.Goal.t, string) GapiLens.t
  val updated : (GapiAnalyticsV3Model.Goal.t, GapiDate.t) GapiLens.t
  val urlDestinationDetails :
    (GapiAnalyticsV3Model.Goal.t,
     GapiAnalyticsV3Model.Goal.UrlDestinationDetails.t)
    GapiLens.t
  val value : (GapiAnalyticsV3Model.Goal.t, float) GapiLens.t
  val visitNumPagesDetails :
    (GapiAnalyticsV3Model.Goal.t,
     GapiAnalyticsV3Model.Goal.VisitNumPagesDetails.t)
    GapiLens.t
  val visitTimeOnSiteDetails :
    (GapiAnalyticsV3Model.Goal.t,
     GapiAnalyticsV3Model.Goal.VisitTimeOnSiteDetails.t)
    GapiLens.t
  val webPropertyId : (GapiAnalyticsV3Model.Goal.t, string) GapiLens.t
  val empty : GapiAnalyticsV3Model.Goal.t
  val render : GapiAnalyticsV3Model.Goal.t -> GapiJson.json_data_model list
  val parse :
    GapiAnalyticsV3Model.Goal.t ->
    GapiJson.json_data_model -> GapiAnalyticsV3Model.Goal.t
  val to_data_model : GapiAnalyticsV3Model.Goal.t -> GapiJson.json_data_model
  val of_data_model : GapiJson.json_data_model -> GapiAnalyticsV3Model.Goal.t
end