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