sig
  type json_data_type = Object | Array | Scalar
  val json_data_type_to_string : GapiJson.json_data_type -> string
  type json_metadata = {
    name : string;
    data_type : GapiJson.json_data_type;
  }
  val metadata_description : GapiJson.json_metadata -> string
  type json_data_model =
      (GapiJson.json_metadata, Yojson.Safe.json) GapiCore.AnnotatedTree.t
  val unexpected : string -> GapiJson.json_data_model -> '-> 'a
  val render_value :
    string ->
    Yojson.Safe.json -> Yojson.Safe.json -> GapiJson.json_data_model list
  val render_string_value :
    ?default:string -> string -> string -> GapiJson.json_data_model list
  val render_nullable_string_value :
    ?default:string -> string -> string -> GapiJson.json_data_model list
  val render_int_value :
    ?default:int -> string -> int -> GapiJson.json_data_model list
  val render_int64_value :
    ?default:int64 -> string -> int64 -> GapiJson.json_data_model list
  val render_bool_value :
    ?default:bool -> string -> bool -> GapiJson.json_data_model list
  val render_float_value :
    ?default:float -> string -> float -> GapiJson.json_data_model list
  val render_date_value :
    ?time:bool ->
    ?default:GapiDate.t ->
    string -> GapiDate.t -> GapiJson.json_data_model list
  val render_struct :
    string ->
    GapiJson.json_data_type ->
    GapiJson.json_data_model list list -> GapiJson.json_data_model list
  val render_object :
    string ->
    GapiJson.json_data_model list list -> GapiJson.json_data_model list
  val render_collection :
    string ->
    GapiJson.json_data_type ->
    ('-> GapiJson.json_data_model list) ->
    'a list -> GapiJson.json_data_model list
  val render_array :
    string ->
    ('-> GapiJson.json_data_model list) ->
    'a list -> GapiJson.json_data_model list
  val render_root :
    ('-> GapiJson.json_data_model list) -> '-> GapiJson.json_data_model
  val parse_children :
    ('-> GapiJson.json_data_model -> 'a) ->
    '-> ('-> 'b) -> GapiJson.json_data_model list -> 'b
  val parse_collection :
    ('-> GapiJson.json_data_model -> 'a) ->
    '-> ('a list -> 'b) -> GapiJson.json_data_model list -> 'b
  val parse_root :
    ('-> GapiJson.json_data_model -> 'a) ->
    '-> GapiJson.json_data_model -> 'a
  val parse_string_element : string -> GapiJson.json_data_model -> string
  val parse_dictionary_entry :
    string * string -> GapiJson.json_data_model -> string * string
  val json_to_data_model : Yojson.Safe.json -> GapiJson.json_data_model
  val data_model_to_json : GapiJson.json_data_model -> Yojson.Safe.json
  val parse_json_response :
    (GapiJson.json_data_model -> 'a) -> GapiPipe.OcamlnetPipe.t -> 'a
  val parse_json_string : (GapiJson.json_data_model -> 'a) -> string -> 'a
  val default_content_type : string
  val render_json :
    ('-> GapiJson.json_data_model) -> '-> GapiCore.PostData.t
  module StringDictionary :
    sig
      type t = (string * string) list
      val empty : GapiJson.StringDictionary.t
      val render :
        GapiJson.StringDictionary.t -> GapiJson.json_data_model list
      val render_content :
        GapiJson.StringDictionary.t -> GapiJson.json_data_model list list
      val parse :
        GapiJson.StringDictionary.t ->
        GapiJson.json_data_model -> GapiJson.StringDictionary.t
      val to_data_model :
        GapiJson.StringDictionary.t -> GapiJson.json_data_model
      val of_data_model :
        GapiJson.json_data_model -> GapiJson.StringDictionary.t
    end
end