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