WardrikProtocol (wardrik_protocol v0.1.0-rc.6)
Copy MarkdownWardrik's wire format: events as CloudEvents, and operations as OpenAPI.
schema = JSV.build!(WardrikProtocol.schema("run.started"))
{:ok, _data} = JSV.validate(event["data"], schema)
%{method: "post", path: "/v1/agents/{agent}/messages"} = WardrikProtocol.operation("agent.ask")
Summary
Types
An operation from openapi.json.
Functions
Returns the dataschema for an event type.
Returns the directory of the schema files.
Returns true if events of the type are sent as they happen and never stored.
Returns the OpenAPI document, with $refs to other files inlined.
Returns the operation with ID id, like agent.ask, or nil.
Lists every operation, ordered by path.
Returns the schema name, like "run.started" or "cloudevent", with every $ref inlined.
Lists every event type, like wardrik.run.started.
Types
@type operation() :: %{ id: String.t(), summary: String.t(), description: String.t() | nil, method: String.t(), path: String.t(), conversation: String.t() | nil, action: String.t(), effect: String.t(), subject: String.t(), parameters: [%{name: String.t(), in: String.t()}], input: map(), status: pos_integer(), output: map() | nil, stream: boolean() }
An operation from openapi.json.
:id- itsoperationId, as"agent.ask".:summaryand:description- what it does.:methodand:path- its HTTP route.:conversation- its route for one of the agent's conversations, ornil.:action- what the caller must be allowed to do.:effect-"read","change"or"destructive".:subject- what it acts on:"agent","agents","deployment","hook"or"channel".:parameters- which input fields go in the HTTP path or query.:input- one schema for its parameters and body together. A hook's or channel's body is the request as it came, so its input is itsx-wardrik-input.:status- the HTTP status it returns on success.:output- its output schema, ornil. A channel's is itsx-wardrik-output.:stream-trueif it can stream events.
Functions
Returns the dataschema for an event type.
WardrikProtocol.dataschema("wardrik.run.started")
#=> "urn:wardrik:schema:v1:run.started"Raises for an unknown type.
@spec dir() :: Path.t()
Returns the directory of the schema files.
Returns true if events of the type are sent as they happen and never stored.
@spec openapi() :: map()
Returns the OpenAPI document, with $refs to other files inlined.
Returns the operation with ID id, like agent.ask, or nil.
@spec operations() :: [operation()]
Lists every operation, ordered by path.
Returns the schema name, like "run.started" or "cloudevent", with every $ref inlined.
@spec types() :: [String.t()]
Lists every event type, like wardrik.run.started.