Vow::ProcedureDescriptor
Inherits JSON::Serializable < Struct < Value < Object
The static description of one @[Vow::Export] method: the dispatch id, its
args, its return type, and an opaque bag of opts. Produced at compile time
by Vow::Exportable and readable WITHOUT instantiating the service
(MyService.vow_descriptors), so a code generator never has to construct or
run user code.
opts is every @[Vow::Export] keyword argument except the reserved name:
and skip:, carried through VERBATIM. Vow validates nothing about it and
attaches no meaning to any key — it is a side channel for whatever a
downstream transport cares about, under keys the caller chose (e.g. a verb:
a transport maps to an HTTP method, a cache TTL, an auth scope, …). Each value keeps its literal type (:get → the string
"get", 30 → the number 30, true → the boolean true), so a transport
reads it back as the type it was written as. A transport that knows none of
these keys ignores the whole bag — Vow itself never sets a header, builds a
URL, or branches on a value here. It defaults to empty so manifests written
before this field existed (and ones whose methods carry no opts) deserialize
cleanly.
Constructors
Instance methods
The Crystal getter stays snake_case; the wire key is camelCase because the
manifest is consumed in JS/TS where returnType is the convention.