struct

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

new(name : String, args : Array(ArgDescriptor), return_type : String, opts : Hash(String, JSON::Any) = {} of String => JSON::Any)
Source
new(*, __pull_for_json_serializable pull : JSON::PullParser)
Source

Instance methods

args
Source
name
Source
opts
Source
return_type

The Crystal getter stays snake_case; the wire key is camelCase because the manifest is consumed in JS/TS where returnType is the convention.

Source