sig
  module JsonSchema :
    sig
      module Variant :
        sig
          module Map :
            sig
              type t = { _ref : string; type_value : string; }
              val _ref :
                (GapiDiscoveryV1Model.JsonSchema.Variant.Map.t, string)
                GapiLens.t
              val type_value :
                (GapiDiscoveryV1Model.JsonSchema.Variant.Map.t, string)
                GapiLens.t
              val empty : GapiDiscoveryV1Model.JsonSchema.Variant.Map.t
              val render :
                GapiDiscoveryV1Model.JsonSchema.Variant.Map.t ->
                GapiJson.json_data_model list
              val parse :
                GapiDiscoveryV1Model.JsonSchema.Variant.Map.t ->
                GapiJson.json_data_model ->
                GapiDiscoveryV1Model.JsonSchema.Variant.Map.t
            end
          type t = {
            discriminant : string;
            map : GapiDiscoveryV1Model.JsonSchema.Variant.Map.t list;
          }
          val discriminant :
            (GapiDiscoveryV1Model.JsonSchema.Variant.t, string) GapiLens.t
          val map :
            (GapiDiscoveryV1Model.JsonSchema.Variant.t,
             GapiDiscoveryV1Model.JsonSchema.Variant.Map.t list)
            GapiLens.t
          val empty : GapiDiscoveryV1Model.JsonSchema.Variant.t
          val render :
            GapiDiscoveryV1Model.JsonSchema.Variant.t ->
            GapiJson.json_data_model list
          val parse :
            GapiDiscoveryV1Model.JsonSchema.Variant.t ->
            GapiJson.json_data_model ->
            GapiDiscoveryV1Model.JsonSchema.Variant.t
        end
      module Annotations :
        sig
          type t = { required : string list; }
          val required :
            (GapiDiscoveryV1Model.JsonSchema.Annotations.t, string list)
            GapiLens.t
          val empty : GapiDiscoveryV1Model.JsonSchema.Annotations.t
          val render :
            GapiDiscoveryV1Model.JsonSchema.Annotations.t ->
            GapiJson.json_data_model list
          val parse :
            GapiDiscoveryV1Model.JsonSchema.Annotations.t ->
            GapiJson.json_data_model ->
            GapiDiscoveryV1Model.JsonSchema.Annotations.t
        end
      type t = {
        _ref : string;
        additionalProperties : GapiDiscoveryV1Model.JsonSchema.t option;
        annotations : GapiDiscoveryV1Model.JsonSchema.Annotations.t;
        default : string;
        description : string;
        enum : string list;
        enumDescriptions : string list;
        format : string;
        id : string;
        items : GapiDiscoveryV1Model.JsonSchema.t option;
        location : string;
        maximum : string;
        minimum : string;
        pattern : string;
        properties : (string * GapiDiscoveryV1Model.JsonSchema.t) list;
        readOnly : bool;
        repeated : bool;
        required : bool;
        _type : string;
        variant : GapiDiscoveryV1Model.JsonSchema.Variant.t;
      }
      val _ref : (GapiDiscoveryV1Model.JsonSchema.t, string) GapiLens.t
      val additionalProperties :
        (GapiDiscoveryV1Model.JsonSchema.t,
         GapiDiscoveryV1Model.JsonSchema.t option)
        GapiLens.t
      val annotations :
        (GapiDiscoveryV1Model.JsonSchema.t,
         GapiDiscoveryV1Model.JsonSchema.Annotations.t)
        GapiLens.t
      val default : (GapiDiscoveryV1Model.JsonSchema.t, string) GapiLens.t
      val description :
        (GapiDiscoveryV1Model.JsonSchema.t, string) GapiLens.t
      val enum : (GapiDiscoveryV1Model.JsonSchema.t, string list) GapiLens.t
      val enumDescriptions :
        (GapiDiscoveryV1Model.JsonSchema.t, string list) GapiLens.t
      val format : (GapiDiscoveryV1Model.JsonSchema.t, string) GapiLens.t
      val id : (GapiDiscoveryV1Model.JsonSchema.t, string) GapiLens.t
      val items :
        (GapiDiscoveryV1Model.JsonSchema.t,
         GapiDiscoveryV1Model.JsonSchema.t option)
        GapiLens.t
      val location : (GapiDiscoveryV1Model.JsonSchema.t, string) GapiLens.t
      val maximum : (GapiDiscoveryV1Model.JsonSchema.t, string) GapiLens.t
      val minimum : (GapiDiscoveryV1Model.JsonSchema.t, string) GapiLens.t
      val pattern : (GapiDiscoveryV1Model.JsonSchema.t, string) GapiLens.t
      val properties :
        (GapiDiscoveryV1Model.JsonSchema.t,
         (string * GapiDiscoveryV1Model.JsonSchema.t) list)
        GapiLens.t
      val readOnly : (GapiDiscoveryV1Model.JsonSchema.t, bool) GapiLens.t
      val repeated : (GapiDiscoveryV1Model.JsonSchema.t, bool) GapiLens.t
      val required : (GapiDiscoveryV1Model.JsonSchema.t, bool) GapiLens.t
      val _type : (GapiDiscoveryV1Model.JsonSchema.t, string) GapiLens.t
      val variant :
        (GapiDiscoveryV1Model.JsonSchema.t,
         GapiDiscoveryV1Model.JsonSchema.Variant.t)
        GapiLens.t
      val empty : GapiDiscoveryV1Model.JsonSchema.t
      val render :
        GapiDiscoveryV1Model.JsonSchema.t -> GapiJson.json_data_model list
      val parse :
        GapiDiscoveryV1Model.JsonSchema.t ->
        GapiJson.json_data_model -> GapiDiscoveryV1Model.JsonSchema.t
      val to_data_model :
        GapiDiscoveryV1Model.JsonSchema.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiDiscoveryV1Model.JsonSchema.t
    end
  module DirectoryList :
    sig
      module Items :
        sig
          module Icons :
            sig
              type t = { x16 : string; x32 : string; }
              val x16 :
                (GapiDiscoveryV1Model.DirectoryList.Items.Icons.t, string)
                GapiLens.t
              val x32 :
                (GapiDiscoveryV1Model.DirectoryList.Items.Icons.t, string)
                GapiLens.t
              val empty : GapiDiscoveryV1Model.DirectoryList.Items.Icons.t
              val render :
                GapiDiscoveryV1Model.DirectoryList.Items.Icons.t ->
                GapiJson.json_data_model list
              val parse :
                GapiDiscoveryV1Model.DirectoryList.Items.Icons.t ->
                GapiJson.json_data_model ->
                GapiDiscoveryV1Model.DirectoryList.Items.Icons.t
            end
          type t = {
            description : string;
            discoveryLink : string;
            discoveryRestUrl : string;
            documentationLink : string;
            icons : GapiDiscoveryV1Model.DirectoryList.Items.Icons.t;
            id : string;
            kind : string;
            labels : string list;
            name : string;
            preferred : bool;
            title : string;
            version : string;
          }
          val description :
            (GapiDiscoveryV1Model.DirectoryList.Items.t, string) GapiLens.t
          val discoveryLink :
            (GapiDiscoveryV1Model.DirectoryList.Items.t, string) GapiLens.t
          val discoveryRestUrl :
            (GapiDiscoveryV1Model.DirectoryList.Items.t, string) GapiLens.t
          val documentationLink :
            (GapiDiscoveryV1Model.DirectoryList.Items.t, string) GapiLens.t
          val icons :
            (GapiDiscoveryV1Model.DirectoryList.Items.t,
             GapiDiscoveryV1Model.DirectoryList.Items.Icons.t)
            GapiLens.t
          val id :
            (GapiDiscoveryV1Model.DirectoryList.Items.t, string) GapiLens.t
          val kind :
            (GapiDiscoveryV1Model.DirectoryList.Items.t, string) GapiLens.t
          val labels :
            (GapiDiscoveryV1Model.DirectoryList.Items.t, string list)
            GapiLens.t
          val name :
            (GapiDiscoveryV1Model.DirectoryList.Items.t, string) GapiLens.t
          val preferred :
            (GapiDiscoveryV1Model.DirectoryList.Items.t, bool) GapiLens.t
          val title :
            (GapiDiscoveryV1Model.DirectoryList.Items.t, string) GapiLens.t
          val version :
            (GapiDiscoveryV1Model.DirectoryList.Items.t, string) GapiLens.t
          val empty : GapiDiscoveryV1Model.DirectoryList.Items.t
          val render :
            GapiDiscoveryV1Model.DirectoryList.Items.t ->
            GapiJson.json_data_model list
          val parse :
            GapiDiscoveryV1Model.DirectoryList.Items.t ->
            GapiJson.json_data_model ->
            GapiDiscoveryV1Model.DirectoryList.Items.t
        end
      type t = {
        discoveryVersion : string;
        items : GapiDiscoveryV1Model.DirectoryList.Items.t list;
        kind : string;
      }
      val discoveryVersion :
        (GapiDiscoveryV1Model.DirectoryList.t, string) GapiLens.t
      val items :
        (GapiDiscoveryV1Model.DirectoryList.t,
         GapiDiscoveryV1Model.DirectoryList.Items.t list)
        GapiLens.t
      val kind : (GapiDiscoveryV1Model.DirectoryList.t, string) GapiLens.t
      val empty : GapiDiscoveryV1Model.DirectoryList.t
      val render :
        GapiDiscoveryV1Model.DirectoryList.t -> GapiJson.json_data_model list
      val parse :
        GapiDiscoveryV1Model.DirectoryList.t ->
        GapiJson.json_data_model -> GapiDiscoveryV1Model.DirectoryList.t
      val to_data_model :
        GapiDiscoveryV1Model.DirectoryList.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiDiscoveryV1Model.DirectoryList.t
    end
  module RestMethod :
    sig
      module Response :
        sig
          type t = { _ref : string; }
          val _ref :
            (GapiDiscoveryV1Model.RestMethod.Response.t, string) GapiLens.t
          val empty : GapiDiscoveryV1Model.RestMethod.Response.t
          val render :
            GapiDiscoveryV1Model.RestMethod.Response.t ->
            GapiJson.json_data_model list
          val parse :
            GapiDiscoveryV1Model.RestMethod.Response.t ->
            GapiJson.json_data_model ->
            GapiDiscoveryV1Model.RestMethod.Response.t
        end
      module Request :
        sig
          type t = { _ref : string; parameterName : string; }
          val _ref :
            (GapiDiscoveryV1Model.RestMethod.Request.t, string) GapiLens.t
          val parameterName :
            (GapiDiscoveryV1Model.RestMethod.Request.t, string) GapiLens.t
          val empty : GapiDiscoveryV1Model.RestMethod.Request.t
          val render :
            GapiDiscoveryV1Model.RestMethod.Request.t ->
            GapiJson.json_data_model list
          val parse :
            GapiDiscoveryV1Model.RestMethod.Request.t ->
            GapiJson.json_data_model ->
            GapiDiscoveryV1Model.RestMethod.Request.t
        end
      module MediaUpload :
        sig
          module Protocols :
            sig
              module Simple :
                sig
                  type t = { multipart : bool; path : string; }
                  val multipart :
                    (GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Simple.t,
                     bool)
                    GapiLens.t
                  val path :
                    (GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Simple.t,
                     string)
                    GapiLens.t
                  val empty :
                    GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Simple.t
                  val render :
                    GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Simple.t ->
                    GapiJson.json_data_model list
                  val parse :
                    GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Simple.t ->
                    GapiJson.json_data_model ->
                    GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Simple.t
                end
              module Resumable :
                sig
                  type t = { multipart : bool; path : string; }
                  val multipart :
                    (GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Resumable.t,
                     bool)
                    GapiLens.t
                  val path :
                    (GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Resumable.t,
                     string)
                    GapiLens.t
                  val empty :
                    GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Resumable.t
                  val render :
                    GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Resumable.t ->
                    GapiJson.json_data_model list
                  val parse :
                    GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Resumable.t ->
                    GapiJson.json_data_model ->
                    GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Resumable.t
                end
              type t = {
                resumable :
                  GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Resumable.t;
                simple :
                  GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Simple.t;
              }
              val resumable :
                (GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.t,
                 GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Resumable.t)
                GapiLens.t
              val simple :
                (GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.t,
                 GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.Simple.t)
                GapiLens.t
              val empty :
                GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.t
              val render :
                GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.t ->
                GapiJson.json_data_model list
              val parse :
                GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.t ->
                GapiJson.json_data_model ->
                GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.t
            end
          type t = {
            accept : string list;
            maxSize : string;
            protocols :
              GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.t;
          }
          val accept :
            (GapiDiscoveryV1Model.RestMethod.MediaUpload.t, string list)
            GapiLens.t
          val maxSize :
            (GapiDiscoveryV1Model.RestMethod.MediaUpload.t, string)
            GapiLens.t
          val protocols :
            (GapiDiscoveryV1Model.RestMethod.MediaUpload.t,
             GapiDiscoveryV1Model.RestMethod.MediaUpload.Protocols.t)
            GapiLens.t
          val empty : GapiDiscoveryV1Model.RestMethod.MediaUpload.t
          val render :
            GapiDiscoveryV1Model.RestMethod.MediaUpload.t ->
            GapiJson.json_data_model list
          val parse :
            GapiDiscoveryV1Model.RestMethod.MediaUpload.t ->
            GapiJson.json_data_model ->
            GapiDiscoveryV1Model.RestMethod.MediaUpload.t
        end
      type t = {
        description : string;
        etagRequired : bool;
        httpMethod : string;
        id : string;
        mediaUpload : GapiDiscoveryV1Model.RestMethod.MediaUpload.t;
        parameterOrder : string list;
        parameters : (string * GapiDiscoveryV1Model.JsonSchema.t) list;
        path : string;
        request : GapiDiscoveryV1Model.RestMethod.Request.t;
        response : GapiDiscoveryV1Model.RestMethod.Response.t;
        scopes : string list;
        supportsMediaDownload : bool;
        supportsMediaUpload : bool;
        supportsSubscription : bool;
        useMediaDownloadService : bool;
      }
      val description :
        (GapiDiscoveryV1Model.RestMethod.t, string) GapiLens.t
      val etagRequired : (GapiDiscoveryV1Model.RestMethod.t, bool) GapiLens.t
      val httpMethod : (GapiDiscoveryV1Model.RestMethod.t, string) GapiLens.t
      val id : (GapiDiscoveryV1Model.RestMethod.t, string) GapiLens.t
      val mediaUpload :
        (GapiDiscoveryV1Model.RestMethod.t,
         GapiDiscoveryV1Model.RestMethod.MediaUpload.t)
        GapiLens.t
      val parameterOrder :
        (GapiDiscoveryV1Model.RestMethod.t, string list) GapiLens.t
      val parameters :
        (GapiDiscoveryV1Model.RestMethod.t,
         (string * GapiDiscoveryV1Model.JsonSchema.t) list)
        GapiLens.t
      val path : (GapiDiscoveryV1Model.RestMethod.t, string) GapiLens.t
      val request :
        (GapiDiscoveryV1Model.RestMethod.t,
         GapiDiscoveryV1Model.RestMethod.Request.t)
        GapiLens.t
      val response :
        (GapiDiscoveryV1Model.RestMethod.t,
         GapiDiscoveryV1Model.RestMethod.Response.t)
        GapiLens.t
      val scopes :
        (GapiDiscoveryV1Model.RestMethod.t, string list) GapiLens.t
      val supportsMediaDownload :
        (GapiDiscoveryV1Model.RestMethod.t, bool) GapiLens.t
      val supportsMediaUpload :
        (GapiDiscoveryV1Model.RestMethod.t, bool) GapiLens.t
      val supportsSubscription :
        (GapiDiscoveryV1Model.RestMethod.t, bool) GapiLens.t
      val useMediaDownloadService :
        (GapiDiscoveryV1Model.RestMethod.t, bool) GapiLens.t
      val empty : GapiDiscoveryV1Model.RestMethod.t
      val render :
        GapiDiscoveryV1Model.RestMethod.t -> GapiJson.json_data_model list
      val parse :
        GapiDiscoveryV1Model.RestMethod.t ->
        GapiJson.json_data_model -> GapiDiscoveryV1Model.RestMethod.t
      val to_data_model :
        GapiDiscoveryV1Model.RestMethod.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiDiscoveryV1Model.RestMethod.t
    end
  module RestResource :
    sig
      type t = {
        methods : (string * GapiDiscoveryV1Model.RestMethod.t) list;
        resources : (string * GapiDiscoveryV1Model.RestResource.t) list;
      }
      val methods :
        (GapiDiscoveryV1Model.RestResource.t,
         (string * GapiDiscoveryV1Model.RestMethod.t) list)
        GapiLens.t
      val resources :
        (GapiDiscoveryV1Model.RestResource.t,
         (string * GapiDiscoveryV1Model.RestResource.t) list)
        GapiLens.t
      val empty : GapiDiscoveryV1Model.RestResource.t
      val render :
        GapiDiscoveryV1Model.RestResource.t -> GapiJson.json_data_model list
      val parse :
        GapiDiscoveryV1Model.RestResource.t ->
        GapiJson.json_data_model -> GapiDiscoveryV1Model.RestResource.t
      val to_data_model :
        GapiDiscoveryV1Model.RestResource.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiDiscoveryV1Model.RestResource.t
    end
  module RestDescription :
    sig
      module Icons :
        sig
          type t = { x16 : string; x32 : string; }
          val x16 :
            (GapiDiscoveryV1Model.RestDescription.Icons.t, string) GapiLens.t
          val x32 :
            (GapiDiscoveryV1Model.RestDescription.Icons.t, string) GapiLens.t
          val empty : GapiDiscoveryV1Model.RestDescription.Icons.t
          val render :
            GapiDiscoveryV1Model.RestDescription.Icons.t ->
            GapiJson.json_data_model list
          val parse :
            GapiDiscoveryV1Model.RestDescription.Icons.t ->
            GapiJson.json_data_model ->
            GapiDiscoveryV1Model.RestDescription.Icons.t
        end
      module Auth :
        sig
          module Oauth2 :
            sig
              module Scopes :
                sig
                  type t = { description : string; }
                  val description :
                    (GapiDiscoveryV1Model.RestDescription.Auth.Oauth2.Scopes.t,
                     string)
                    GapiLens.t
                  val empty :
                    GapiDiscoveryV1Model.RestDescription.Auth.Oauth2.Scopes.t
                  val render :
                    GapiDiscoveryV1Model.RestDescription.Auth.Oauth2.Scopes.t ->
                    GapiJson.json_data_model list
                  val parse :
                    GapiDiscoveryV1Model.RestDescription.Auth.Oauth2.Scopes.t ->
                    GapiJson.json_data_model ->
                    GapiDiscoveryV1Model.RestDescription.Auth.Oauth2.Scopes.t
                end
              type t = {
                scopes :
                  (string *
                   GapiDiscoveryV1Model.RestDescription.Auth.Oauth2.Scopes.t)
                  list;
              }
              val scopes :
                (GapiDiscoveryV1Model.RestDescription.Auth.Oauth2.t,
                 (string *
                  GapiDiscoveryV1Model.RestDescription.Auth.Oauth2.Scopes.t)
                 list)
                GapiLens.t
              val empty : GapiDiscoveryV1Model.RestDescription.Auth.Oauth2.t
              val render :
                GapiDiscoveryV1Model.RestDescription.Auth.Oauth2.t ->
                GapiJson.json_data_model list
              val parse :
                GapiDiscoveryV1Model.RestDescription.Auth.Oauth2.t ->
                GapiJson.json_data_model ->
                GapiDiscoveryV1Model.RestDescription.Auth.Oauth2.t
            end
          type t = {
            oauth2 : GapiDiscoveryV1Model.RestDescription.Auth.Oauth2.t;
          }
          val oauth2 :
            (GapiDiscoveryV1Model.RestDescription.Auth.t,
             GapiDiscoveryV1Model.RestDescription.Auth.Oauth2.t)
            GapiLens.t
          val empty : GapiDiscoveryV1Model.RestDescription.Auth.t
          val render :
            GapiDiscoveryV1Model.RestDescription.Auth.t ->
            GapiJson.json_data_model list
          val parse :
            GapiDiscoveryV1Model.RestDescription.Auth.t ->
            GapiJson.json_data_model ->
            GapiDiscoveryV1Model.RestDescription.Auth.t
        end
      type t = {
        auth : GapiDiscoveryV1Model.RestDescription.Auth.t;
        basePath : string;
        baseUrl : string;
        batchPath : string;
        canonicalName : string;
        description : string;
        discoveryVersion : string;
        documentationLink : string;
        etag : string;
        exponentialBackoffDefault : bool;
        features : string list;
        icons : GapiDiscoveryV1Model.RestDescription.Icons.t;
        id : string;
        kind : string;
        labels : string list;
        methods : (string * GapiDiscoveryV1Model.RestMethod.t) list;
        name : string;
        ownerDomain : string;
        ownerName : string;
        packagePath : string;
        parameters : (string * GapiDiscoveryV1Model.JsonSchema.t) list;
        protocol : string;
        resources : (string * GapiDiscoveryV1Model.RestResource.t) list;
        revision : string;
        rootUrl : string;
        schemas : (string * GapiDiscoveryV1Model.JsonSchema.t) list;
        servicePath : string;
        title : string;
        version : string;
        version_module : bool;
      }
      val auth :
        (GapiDiscoveryV1Model.RestDescription.t,
         GapiDiscoveryV1Model.RestDescription.Auth.t)
        GapiLens.t
      val basePath :
        (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val baseUrl :
        (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val batchPath :
        (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val canonicalName :
        (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val description :
        (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val discoveryVersion :
        (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val documentationLink :
        (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val etag : (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val exponentialBackoffDefault :
        (GapiDiscoveryV1Model.RestDescription.t, bool) GapiLens.t
      val features :
        (GapiDiscoveryV1Model.RestDescription.t, string list) GapiLens.t
      val icons :
        (GapiDiscoveryV1Model.RestDescription.t,
         GapiDiscoveryV1Model.RestDescription.Icons.t)
        GapiLens.t
      val id : (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val kind : (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val labels :
        (GapiDiscoveryV1Model.RestDescription.t, string list) GapiLens.t
      val methods :
        (GapiDiscoveryV1Model.RestDescription.t,
         (string * GapiDiscoveryV1Model.RestMethod.t) list)
        GapiLens.t
      val name : (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val ownerDomain :
        (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val ownerName :
        (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val packagePath :
        (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val parameters :
        (GapiDiscoveryV1Model.RestDescription.t,
         (string * GapiDiscoveryV1Model.JsonSchema.t) list)
        GapiLens.t
      val protocol :
        (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val resources :
        (GapiDiscoveryV1Model.RestDescription.t,
         (string * GapiDiscoveryV1Model.RestResource.t) list)
        GapiLens.t
      val revision :
        (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val rootUrl :
        (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val schemas :
        (GapiDiscoveryV1Model.RestDescription.t,
         (string * GapiDiscoveryV1Model.JsonSchema.t) list)
        GapiLens.t
      val servicePath :
        (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val title : (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val version :
        (GapiDiscoveryV1Model.RestDescription.t, string) GapiLens.t
      val version_module :
        (GapiDiscoveryV1Model.RestDescription.t, bool) GapiLens.t
      val empty : GapiDiscoveryV1Model.RestDescription.t
      val render :
        GapiDiscoveryV1Model.RestDescription.t ->
        GapiJson.json_data_model list
      val parse :
        GapiDiscoveryV1Model.RestDescription.t ->
        GapiJson.json_data_model -> GapiDiscoveryV1Model.RestDescription.t
      val to_data_model :
        GapiDiscoveryV1Model.RestDescription.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiDiscoveryV1Model.RestDescription.t
    end
end