registerVerbHandler

View as MarkdownOpen in Claude

Register a custom verb handler for specialized validation and configuration of a SWML verb. When a verb with a registered handler is added via addVerb(), the handler’s validateConfig() method is used instead of generic schema validation.

Custom verb handlers are useful when a verb has complex validation rules that go beyond JSON Schema checks — for example, mutually exclusive parameters or conditional requirements.

Parameters

handler
SWMLVerbHandlerRequired

An object implementing the SWMLVerbHandler interface. Must implement three methods:

  • getVerbName(): string — returns the verb name this handler manages
  • validateConfig(config): [boolean, string[]] — returns [isValid, errors]
  • buildConfig(opts): Record<string, unknown> — returns a configuration object

Returns

void

Example

1import { SWMLService } from '@signalwire/sdk';
2import type { SWMLVerbHandler } from '@signalwire/sdk';
3
4const customHandler: SWMLVerbHandler = {
5 getVerbName() {
6 return 'my_verb';
7 },
8 validateConfig(config: Record<string, unknown>) {
9 const errors: string[] = [];
10 if (!('target' in config)) {
11 errors.push("Missing required field 'target'");
12 }
13 return [errors.length === 0, errors];
14 },
15 buildConfig(opts: Record<string, unknown>) {
16 return { target: opts.target };
17 },
18};
19
20const service = new SWMLService({ name: 'custom-service' });
21service.registerVerbHandler(customHandler);
22
23// Now addVerb will use the custom handler for validation
24service.addVerb('my_verb', { target: 'https://example.com' });
25console.log(service.renderDocument());