type extended
val create_state : file_arity:[ `OneFile | `ManyFiles of string ] -> OaSummary.t -> OaSummary.datatype list -> extended OaState.t
val standard : (module OaDocument.STANDARD)
val vendor : (module OaDocument.VENDOR)
val query_selector : [ `All | `FlattenedAll | `FlattenedUnions | `Parameters | `Bodies ]

The query_selector says which schema objects should be evaluated.

`Parameters is the optional schema field of the Parameters Objects.

val include_doc : bool
val doc_field_padding : [ `None | `SpaceBefore ]
val resolve_casename : path:Json_query.path -> string
val wrap_primitive_and_ref_with_optional : bool

When using OaSummary.datatypes ~query_selector:`FlattenedAll flattened data types, the generated Id_ref will be split into optional and non-optional parts. And all compound data types will go through pp_rec_eqn since all the compound data types are lifted to the top-level (the recursive equations).

However Schema_ref and primitive types will still need to be aware of optional fields. Setting this to true will add pp_option to Schema_ref and primitive types fields when the field is optional.

val pp_envelope_all : 'b OaState.t -> VBoxer.t -> 'a list -> (Restapis_o.Open__.Format.formatter -> 'a -> unit) -> unit

pp_envelope_all state vboxer vs fmt_item prints the values vs on the vertical boxer fmt_item using the item formatter fmt_item.

val pp_state_init : Restapis_o.Open__.Format.formatter -> extended OaState.t -> unit

pp_state_init ppf state prints the state which may include the data types at the beginning of the pp_envelope_all envelope.

val pp_state_fini : Restapis_o.Open__.Format.formatter -> extended OaState.t -> unit

pp_state_fini ppf state prints the state which may include the data types at the end of the pp_envelope_all envelope.

val pp_rec_eqn : extended OaState.t -> (Restapis_o.Open__.Format.formatter -> 'a -> unit) -> Restapis_o.Open__.Format.formatter -> (string * 'a) -> unit

pp_rec_eqn pp_kind ppf (alias, kind) prints the schema for a recursive equation.

val pp_doc : Restapis_o.Open__.Format.formatter -> title:string option -> description:string option -> param_docs:(string * string option) list -> see:(unit -> string) -> unit
val pp_trace_string : Restapis_o.Open__.Format.formatter -> string -> unit
val pp_trace_path : Restapis_o.Open__.Format.formatter -> Json_query.path -> unit
val pp_trace_optional : Restapis_o.Open__.Format.formatter -> bool -> unit
val pp_name_root : Restapis_o.Open__.Format.formatter -> string -> unit

pp_name_root ppf root is a pretty-printer on the formatter ppf that writes the name of the root (ie. top-level) items.

val pp_name_field : Restapis_o.Open__.Format.formatter -> string -> unit

pp_name_field ppf root is a pretty-printer on the formatter ppf that writes the name of a field.

val recursive_intro_first : string
val recursive_outro_first : string
val recursive_intro_rest : string
val pp_envelope_object : (Restapis_o.Open__.Format.formatter -> 'a -> unit) -> Restapis_o.Open__.Format.formatter -> 'a -> unit
val pp_nonrec_field_defines : (Restapis_o.Open__.Format.formatter -> 'a -> unit) -> (Restapis_o.Open__.Format.formatter -> 'b -> unit) -> (Restapis_o.Open__.Format.formatter -> 'c -> unit) -> Restapis_o.Open__.Format.formatter -> ('a list * 'b list * 'c list) -> unit

pp_nonrec_field_defines pp_left pp_right pp_doc ppf (lefts, rights, doc).

pp_doc is the documentation printer. No documentation will be printed by pp_doc if include_doc is false, and no documentation will be printed if the field does not have documentation.

Padding will already be provided by pp_doc based on doc_field_padding.

All of that is to say: always call pp_doc your_formatter doc if any of your fields should have documentation. Or never call pp_doc if none of your fields should have documentation.

val pp_primitive : datatype_ref:[ `PrimitiveType of string | `TypeAlias of string ] -> format:string option -> enum:Json_repr.any list option -> OaTypes.schema_kind -> (Restapis_o.Open__.Format.formatter -> unit -> unit) option

pp_primitive creates a Some printer when the data type is primitive (as determined by the PRINTER) and None when the data type is a reference or compound data type.

OaPp must give back a Some printer when datatype_ref = `PrimitiveType _.

OaPp may give back a Some printer in any situation. For example, many PRINTERs may choose to define a primitive type when it sees an object with no properties (ie. kind = Object {properties=[]; additional_properties=None}).

OaPp should give back a None when the data type is a reference data type (ie. kind = Id_ref _ or kind = Schema_ref _). The caller of pp_primitive (typically OaPp) should ignore the result when the data type is a reference data type.

val pp_enumeration : sumpath:Json_query.path -> sumtype_nonopt:[ `PrimitiveType of string | `TypeAlias of string ] -> caseize:(string -> string) -> casepath:(int -> Json_query.path) -> [< `Boolean | `Integer | `String ] -> Restapis_o.Open__.Format.formatter -> Json_repr.any list -> unit
val pp_option : (Restapis_o.Open__.Format.formatter -> 'a -> unit) -> Restapis_o.Open__.Format.formatter -> 'a -> unit
val pp_additional : (Restapis_o.Open__.Format.formatter -> 'a -> unit) -> Restapis_o.Open__.Format.formatter -> 'a -> unit
val pp_string : format:string option -> enum:Json_repr.any list option -> Json_schema.string_specs -> Restapis_o.Open__.Format.formatter -> unit -> unit
val pp_integer : format:string option -> enum:Json_repr.any list option -> Json_schema.numeric_specs -> Restapis_o.Open__.Format.formatter -> unit -> unit
val pp_number : format:string option -> Json_schema.numeric_specs -> Restapis_o.Open__.Format.formatter -> unit -> unit
val pp_boolean : format:string option -> enum:Json_repr.any list option -> Restapis_o.Open__.Format.formatter -> unit -> unit
val pp_null : format:string option -> Restapis_o.Open__.Format.formatter -> unit -> unit
val pp_any : format:string option -> Restapis_o.Open__.Format.formatter -> unit -> unit
val pp_unit : Restapis_o.Open__.Format.formatter -> unit -> unit
val pp_generalized_array : Restapis_o.Open__.Format.formatter -> (int * (Restapis_o.Open__.Format.formatter -> unit -> unit)) list -> unit
val pp_union : casename:(path:Json_query.path -> string) -> sumtype_nonopt:[< `PrimitiveType of string | `TypeAlias of string ] -> (Restapis_o.Open__.Format.formatter -> (int * OaTypes.schema) -> unit) -> Restapis_o.Open__.Format.formatter -> OaTypes.schema list -> unit
val pp_object : pp_to_modelobject:(Restapis_o.Open__.Format.formatter -> 'a -> unit) -> pp_from_modelobject:(Restapis_o.Open__.Format.formatter -> 'a -> unit) -> Restapis_o.Open__.Format.formatter -> 'a -> unit
val pp_array : format:string option -> OaTypes.array_specs -> (Restapis_o.Open__.Format.formatter -> 'a -> unit) -> Restapis_o.Open__.Format.formatter -> 'a -> unit
val pp_to_modelobject : datatype_ref:[< `PrimitiveType of 'a | `TypeAlias of string ] -> Restapis_o.Open__.Format.formatter -> OaTypes.object_props list -> unit
val pp_from_modelobject : Restapis_o.Open__.Format.formatter -> OaTypes.object_props list -> unit
val pp_reference : extended OaState.t -> Restapis_o.Open__.Format.formatter -> Json_query.path -> unit