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